diff options
| -rw-r--r-- | documentation/addressplan.txt | 5 | ||||
| -rw-r--r-- | roles/space_server/files/networkd/10-lan.network | 1 | ||||
| -rw-r--r-- | roles/space_server/files/networkd/10-lan21.netdev | 6 | ||||
| -rw-r--r-- | roles/space_server/files/networkd/10-lan21.network | 18 | ||||
| -rw-r--r-- | roles/space_server/files/nftables.conf | 49 | ||||
| -rw-r--r-- | roles/space_server/files/nftables.service | 2 | 
6 files changed, 80 insertions, 1 deletions
| diff --git a/documentation/addressplan.txt b/documentation/addressplan.txt index ade8805..b5e8f94 100644 --- a/documentation/addressplan.txt +++ b/documentation/addressplan.txt @@ -6,11 +6,12 @@          * 185.38.175.065    - space.labitat.dk, labicolo gateway          * 185.38.175.069    - spacebrain.labitat.dk          * 185.38.175.070    - spacewand.labitat.dk -        * 185.38.175.071    - reserved for tor exit node          * 185.38.175.075    - Asbjorn          * 185.38.175.076    - Deni          * 185.38.175.077    - KTJ          * 185.38.175.078    - Graffen +    ***** 185.38.175.128/28 - Tor exit nodes +        * 185.38.175.129    - space.labitat.dk - gateway  ********************* 2a01:4262:1ab:0000::/48  - allocated and announced   ******************** 2a01:4262:1ab:0xxx::/52  - labitat internal use @@ -38,6 +39,8 @@    ******************* 2a01:4262:1ab:11xx::/56  - 16x /60 delegations     ****************** 2a01:4262:1ab:110x::/60  - Asbjorn     ****************** 2a01:4262:1ab:111x::/60  - Esmil + ******************** 2a01:4262:1ab:fxxx::/52  - untrusted address space +    ***************** 2a01:4262:1ab:ffff::/64  - Tor exit nodes  Linknets: diff --git a/roles/space_server/files/networkd/10-lan.network b/roles/space_server/files/networkd/10-lan.network index 1a9f004..1221be8 100644 --- a/roles/space_server/files/networkd/10-lan.network +++ b/roles/space_server/files/networkd/10-lan.network @@ -18,3 +18,4 @@ VLAN=lan13  VLAN=lan14  VLAN=lan15  VLAN=lan20 +VLAN=lan21 diff --git a/roles/space_server/files/networkd/10-lan21.netdev b/roles/space_server/files/networkd/10-lan21.netdev new file mode 100644 index 0000000..85a79c2 --- /dev/null +++ b/roles/space_server/files/networkd/10-lan21.netdev @@ -0,0 +1,6 @@ +[NetDev] +Name=lan21 +Kind=vlan + +[VLAN] +Id=21 diff --git a/roles/space_server/files/networkd/10-lan21.network b/roles/space_server/files/networkd/10-lan21.network new file mode 100644 index 0000000..7ac5b75 --- /dev/null +++ b/roles/space_server/files/networkd/10-lan21.network @@ -0,0 +1,18 @@ +[Match] +Name=lan21 + +[Link] +ARP=yes + +[Network] +DHCP=no +IPv6AcceptRA=no +LinkLocalAddressing=no +Address=185.38.175.129/28 +Address=2a01:4262:1ab:ffff::1/64 +Address=fe80::1/64 +IPForward=yes +LLMNR=no +MulticastDNS=no +LLDP=yes +EmitLLDP=no diff --git a/roles/space_server/files/nftables.conf b/roles/space_server/files/nftables.conf index 3502959..93ecc25 100644 --- a/roles/space_server/files/nftables.conf +++ b/roles/space_server/files/nftables.conf @@ -48,6 +48,15 @@ define nat64_net4 = 10.42.128.0/17  define colo_if   = lan20 +define tor_if     = lan21 +define tor_net4   = 185.38.175.128/28 +define tor_net6   = 2a01:4262:1ab:ffff::/64 + +define local_ip4  = { $ext_ip4, $adm_ip4, $wire_ip4, $priv_ip4, $free_ip4, $pass_ip4 } +define local_ip6  = { $ext_ip6 } +define local_net4 = { $ext_ip4, $free_nat, $int_net4 } +define local_net6 = 2a01:4262:1ab::/52 +  define avahi_ifs = { $wire_if, $priv_if, $pass_if }  table ip filter { @@ -118,6 +127,10 @@ table ip filter {  	chain forward {  		type filter hook forward priority 0; +		# handle tor traffic - before ct +		iif $tor_if ip saddr $tor_net4 ip daddr != $local_net4 accept +		oif $tor_if ip daddr $tor_net4 ip saddr != $local_net4 accept +  		ct state established,related accept  		ct state invalid drop @@ -207,6 +220,10 @@ table ip6 filter {  	chain forward {  		type filter hook forward priority 0; +		# handle tor traffic - before ct +		iif $tor_if ip6 saddr $tor_net6 ip6 daddr != $local_net6 accept +		oif $tor_if ip6 daddr $tor_net6 ip6 saddr != $local_net6 accept +  		ct state established,related accept  		ct state invalid drop @@ -281,3 +298,35 @@ table ip6 nat {  	#	type nat hook postrouting priority -150;  	#}  } + +table ip raw { +	chain prerouting { +		type filter hook prerouting priority -300; policy accept + +		iif lo accept + +		# always do connection tracking for local IP's +		ip saddr $local_ip4 accept +		ip daddr $local_ip4 accept + +		# avoid connection tracking for most Tor traffic +		ip saddr $tor_net4 ip daddr != $local_net4 notrack +		ip daddr $tor_net4 ip saddr != $local_net4 notrack +	} +} + +table ip6 raw { +	chain prerouting { +		type filter hook prerouting priority -300; policy accept + +		iif lo accept + +		# always do connection tracking for local IP's +		ip6 saddr $local_ip6 accept +		ip6 daddr $local_ip6 accept + +		# avoid connection tracking for most Tor traffic +		ip6 saddr $tor_net6 ip6 daddr != $local_net6 notrack +		ip6 daddr $tor_net6 ip6 saddr != $local_net6 notrack +	} +} diff --git a/roles/space_server/files/nftables.service b/roles/space_server/files/nftables.service index 89e9cfe..54efd9c 100644 --- a/roles/space_server/files/nftables.service +++ b/roles/space_server/files/nftables.service @@ -8,6 +8,7 @@ Requires=sys-devices-virtual-net-lan13.device  Requires=sys-devices-virtual-net-lan14.device  Requires=sys-devices-virtual-net-lan15.device  Requires=sys-devices-virtual-net-lan20.device +Requires=sys-devices-virtual-net-lan21.device  Requires=sys-devices-virtual-net-nat64.device  After=sys-devices-virtual-net-lan10.device  After=sys-devices-virtual-net-lan11.device @@ -16,6 +17,7 @@ After=sys-devices-virtual-net-lan13.device  After=sys-devices-virtual-net-lan14.device  After=sys-devices-virtual-net-lan15.device  After=sys-devices-virtual-net-lan20.device +After=sys-devices-virtual-net-lan21.device  After=sys-devices-virtual-net-nat64.device  Before=network-online.target | 
