diff options
-rw-r--r-- | hosts/vidhar/network/default.nix | 18 | ||||
-rw-r--r-- | hosts/vidhar/network/dsl.nix | 27 | ||||
-rw-r--r-- | hosts/vidhar/network/ruleset.nft | 14 |
3 files changed, 47 insertions, 12 deletions
diff --git a/hosts/vidhar/network/default.nix b/hosts/vidhar/network/default.nix index 62539239..81dac652 100644 --- a/hosts/vidhar/network/default.nix +++ b/hosts/vidhar/network/default.nix | |||
@@ -21,6 +21,11 @@ | |||
21 | { address = "10.141.1.1"; prefixLength = 24; } | 21 | { address = "10.141.1.1"; prefixLength = 24; } |
22 | ]; | 22 | ]; |
23 | }; | 23 | }; |
24 | interfaces."dmz01" = { | ||
25 | ipv4.addresses = [ | ||
26 | { address = "10.141.2.1"; prefixLength = 24; } | ||
27 | ]; | ||
28 | }; | ||
24 | 29 | ||
25 | vlans = { | 30 | vlans = { |
26 | mgmt = { | 31 | mgmt = { |
@@ -31,6 +36,10 @@ | |||
31 | id = 3; | 36 | id = 3; |
32 | interface = "eno2"; | 37 | interface = "eno2"; |
33 | }; | 38 | }; |
39 | dmz01 = { | ||
40 | id = 4; | ||
41 | interface = "eno2"; | ||
42 | }; | ||
34 | }; | 43 | }; |
35 | 44 | ||
36 | firewall.enable = false; | 45 | firewall.enable = false; |
@@ -58,6 +67,15 @@ | |||
58 | 67 | ||
59 | subnet 10.141.1.0 netmask 255.255.255.0 { | 68 | subnet 10.141.1.0 netmask 255.255.255.0 { |
60 | range 10.141.1.128 10.141.1.254; | 69 | range 10.141.1.128 10.141.1.254; |
70 | option domain-name-servers 10.141.1.1; | ||
71 | option broadcast-address 10.141.1.255; | ||
72 | } | ||
73 | |||
74 | subnet 10.141.2.0 netmask 255.255.255.0 { | ||
75 | range 10.141.2.128 10.141.2.254; | ||
76 | option domain-name-servers 10.141.2.1; | ||
77 | option broadcast-address 10.141.2.255; | ||
78 | option routers 10.141.2.1; | ||
61 | } | 79 | } |
62 | ''; | 80 | ''; |
63 | machines = [ | 81 | machines = [ |
diff --git a/hosts/vidhar/network/dsl.nix b/hosts/vidhar/network/dsl.nix index 21554b58..0ad598e6 100644 --- a/hosts/vidhar/network/dsl.nix +++ b/hosts/vidhar/network/dsl.nix | |||
@@ -95,6 +95,13 @@ in { | |||
95 | rdnss = [{ servers = ["::"]; }]; | 95 | rdnss = [{ servers = ["::"]; }]; |
96 | dnssl = [{ domain_names = ["yggdrasil"]; }]; | 96 | dnssl = [{ domain_names = ["yggdrasil"]; }]; |
97 | } | 97 | } |
98 | { name = "dmz01"; | ||
99 | advertise = true; | ||
100 | verbose = true; | ||
101 | prefix = [{ prefix = "::/64"; }]; | ||
102 | route = [{ prefix = "::/0"; }]; | ||
103 | rdnss = [{ servers = ["::"]; }]; | ||
104 | } | ||
98 | ]; | 105 | ]; |
99 | 106 | ||
100 | debug = { | 107 | debug = { |
@@ -108,10 +115,17 @@ in { | |||
108 | proxies = { | 115 | proxies = { |
109 | ${pppInterface} = { | 116 | ${pppInterface} = { |
110 | router = true; | 117 | router = true; |
111 | rules.lan = { | 118 | rules = { |
112 | method = "iface"; | 119 | lan = { |
113 | interface = "lan"; | 120 | method = "iface"; |
114 | network = "::/0"; | 121 | interface = "lan"; |
122 | network = "::/0"; | ||
123 | }; | ||
124 | dmz01 = { | ||
125 | method = "iface"; | ||
126 | interface = "dmz01"; | ||
127 | network = "::/0"; | ||
128 | }; | ||
115 | }; | 129 | }; |
116 | }; | 130 | }; |
117 | }; | 131 | }; |
@@ -154,7 +168,9 @@ in { | |||
154 | ''; | 168 | ''; |
155 | 169 | ||
156 | postStop = '' | 170 | postStop = '' |
157 | ${pkgs.iproute2}/bin/ip -6 a show dev lan scope global | ${pkgs.coreutils}/bin/grep inet6 | ${pkgs.gawk}/bin/awk '{ print $2; }' | ${pkgs.findutils}/bin/xargs -I '{}' -- ${pkgs.iproute2}/bin/ip addr del '{}' dev lan | 171 | for dev in lan dmz01; do |
172 | ${pkgs.iproute2}/bin/ip -6 a show dev "''${dev}" scope global | ${pkgs.coreutils}/bin/grep inet6 | ${pkgs.gawk}/bin/awk '{ print $2; }' | ${pkgs.findutils}/bin/xargs -I '{}' -- ${pkgs.iproute2}/bin/ip addr del '{}' dev "''${dev}" | ||
173 | done | ||
158 | ''; | 174 | ''; |
159 | 175 | ||
160 | serviceConfig = let | 176 | serviceConfig = let |
@@ -177,6 +193,7 @@ in { | |||
177 | iaid 1195061668 | 193 | iaid 1195061668 |
178 | ipv6rs # enable routing solicitation for WAN adapter | 194 | ipv6rs # enable routing solicitation for WAN adapter |
179 | ia_pd 1 lan/0/64/0 # request a PD and assign it to the LAN | 195 | ia_pd 1 lan/0/64/0 # request a PD and assign it to the LAN |
196 | ia_pd 1 dmz01/1/64/0 # request a PD and assign it to dmz01 | ||
180 | 197 | ||
181 | reboot 0 | 198 | reboot 0 |
182 | 199 | ||
diff --git a/hosts/vidhar/network/ruleset.nft b/hosts/vidhar/network/ruleset.nft index 4d829355..f6a2175c 100644 --- a/hosts/vidhar/network/ruleset.nft +++ b/hosts/vidhar/network/ruleset.nft | |||
@@ -136,7 +136,7 @@ table inet filter { | |||
136 | oifname {lan, dsl} meta l4proto $icmp_protos jump forward_icmp_accept | 136 | oifname {lan, dsl} meta l4proto $icmp_protos jump forward_icmp_accept |
137 | 137 | ||
138 | iifname lan oifname dsl counter name fw-lan accept | 138 | iifname lan oifname dsl counter name fw-lan accept |
139 | iifname dsl oifname lan ct state {established, related} counter name fw-dsl accept | 139 | iifname dsl oifname { lan, dmz01 } ct state {established, related} counter name fw-dsl accept |
140 | 140 | ||
141 | 141 | ||
142 | 142 | ||
@@ -162,14 +162,14 @@ table inet filter { | |||
162 | iifname != dsl meta l4proto $icmp_protos limit name lim_icmp_local counter name icmp-ratelimit-local-rx drop | 162 | iifname != dsl meta l4proto $icmp_protos limit name lim_icmp_local counter name icmp-ratelimit-local-rx drop |
163 | meta l4proto $icmp_protos counter name icmp-rx accept | 163 | meta l4proto $icmp_protos counter name icmp-rx accept |
164 | 164 | ||
165 | tcp dport 22 counter name ssh-rx accept | 165 | iifname { lan, mgmt, dsl } tcp dport 22 counter name ssh-rx accept |
166 | udp dport 60001-61000 counter name mosh-rx accept | 166 | iifname { lan, mgmt, dsl } udp dport 60001-61000 counter name mosh-rx accept |
167 | 167 | ||
168 | iifname lan tcp dport 53 counter name dns-rx accept | 168 | iifname { lan, mgmt, dmz01 } tcp dport 53 counter name dns-rx accept |
169 | iifname lan udp dport 53 counter name dns-rx accept | 169 | iifname { lan, mgmt, dmz01 } udp dport 53 counter name dns-rx accept |
170 | 170 | ||
171 | meta protocol ip udp dport 51820 counter name wg-rx accept | 171 | iifname { lan, mgmt, dsl } meta protocol ip udp dport 51820 counter name wg-rx accept |
172 | meta protocol ip6 udp dport 51821 counter name wg-rx accept | 172 | iifname { lan, mgmt, dsl } meta protocol ip6 udp dport 51821 counter name wg-rx accept |
173 | iifname "yggdrasil-wg-*" meta l4proto gre counter name yggdrasil-gre-rx accept | 173 | iifname "yggdrasil-wg-*" meta l4proto gre counter name yggdrasil-gre-rx accept |
174 | 174 | ||
175 | iifname dsl meta protocol ip6 udp dport 546 udp sport 547 counter name ipv6-pd-rx accept | 175 | iifname dsl meta protocol ip6 udp dport 546 udp sport 547 counter name ipv6-pd-rx accept |