local.m4: Declare network for anycast services.
[firewall] / local.m4
index 251cf59..3e33b3b 100644 (file)
--- a/local.m4
+++ b/local.m4
@@ -35,10 +35,12 @@ m4_divert(-1)
 
 ## Define the available network classes.
 m4_divert(42)m4_dnl
-defnetclass untrusted untrusted trusted
-defnetclass trusted untrusted trusted safe noloop
-defnetclass safe trusted safe noloop
-defnetclass noloop trusted safe
+defnetclass untrusted untrusted trusted mcast
+defnetclass trusted untrusted trusted safe noloop mcast
+defnetclass safe trusted safe noloop mcast
+defnetclass noloop trusted safe mcast
+defnetclass link
+defnetclass mcast
 m4_divert(-1)
 
 m4_divert(26)m4_dnl
@@ -58,11 +60,6 @@ defnet safe safe
 defnet untrusted untrusted
        addr 172.29.198.0/25 2001:470:9740:8001::/64
        forwards househub
-defnet vpn safe
-       addr 172.29.199.128/27 2001:ba8:1d9:6000::/64
-       forwards househub colohub
-       host crybaby 1
-       host terror 2
 defnet iodine untrusted
        addr 172.29.198.128/28
 
@@ -140,11 +137,19 @@ defhost jazz
 ## Other networks.
 defnet hub virtual
        forwards housebdry colobdry
+defnet vpn safe
+       addr 172.29.199.128/27 2001:ba8:1d9:6000::/64
+       forwards househub colohub
+       host crybaby 1
+       host terror 2
+defnet anycast trusted
+       addr 172.29.199.224/27 2001:ba8:1d9:0::/64
+       forwards dmz unsafe safe untrusted jump colo vpn
 defnet default untrusted
        addr 62.49.204.144/28 2001:470:1f09:1b98::/64
        addr 212.13.198.64/28 2001:ba8:0:1d9::/64
        addr 2001:ba8:1d9::/48 #temporary
-       forwards dmz untrusted unsafe jump colo
+       forwards dmz unsafe untrusted jump colo
 
 m4_divert(80)m4_dnl
 ###--------------------------------------------------------------------------
@@ -236,22 +241,6 @@ run iptables -A inbound -j ACCEPT \
        -s 172.29.198.0/23 \
        -p udp --source-port $port_bootpc --destination-port $port_bootps
 
-## Incoming multicast on a network interface associated with a trusted
-## network is OK, since it must have originated there (or been forwarded, but
-## we don't do that yet).
-seen=:-:
-for net in $allnets; do
-  eval class=\$net_class_$net
-  case $class in trusted) ;; *) continue ;; esac
-  for iface in $(net_interfaces FWHOST $net); do
-    case "$seen" in *:$iface:*) continue ;; esac
-    seen=$seen$iface:
-    run iptables -A inbound -j ACCEPT \
-       -s 0.0.0.0 -d 224.0.0.0/24 \
-       -i $iface
-  done
-done
-
 ## Allow incoming ping.  This is the only ICMP left.
 run ip46tables -A inbound -j ACCEPT -p icmp