aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--documentation/addressplan.txt5
-rw-r--r--roles/space_server/files/networkd/10-lan.network1
-rw-r--r--roles/space_server/files/networkd/10-lan21.netdev6
-rw-r--r--roles/space_server/files/networkd/10-lan21.network18
-rw-r--r--roles/space_server/files/nftables.conf49
-rw-r--r--roles/space_server/files/nftables.service2
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