]> git.openstreetmap.org Git - chef.git/blobdiff - cookbooks/networking/templates/default/nftables.conf.erb
Reintroduce helper support and implement it
[chef.git] / cookbooks / networking / templates / default / nftables.conf.erb
index 325e7740a3c23c8e915a8fef8f899fc7e276fd39..cc3cd8f7fe69465d0e208643793f00cb1d0f9384 100644 (file)
@@ -7,7 +7,7 @@ define external-interfaces = { <%= @interfaces.sort.uniq.join(", ") %> }
 define ip-private-addresses = { 0.0.0.0, 10.0.0.0/8, 127.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, 192.0.2.0/24, 192.168.0.0/16, 224.0.0.0/4 }
 define ip6-private-addresses = { 2001:db8::/32, fc00::/7, ff00::/8 }
 
-table inet filter {
+table inet chef-filter {
   set ip-osm-addresses {
     type ipv4_addr
 <%- unless Array(@hosts["inet"]).empty? %>
@@ -22,14 +22,14 @@ table inet filter {
 <%- end %>
   }
 
-  set ip-blacklist {
+  set ip-blocklist {
     type ipv4_addr
-    flags dynamic
+    flags interval
   }
 
-  set ip6-blacklist {
+  set ip6-blocklist {
     type ipv6_addr
-    flags dynamic
+    flags interval
   }
 
   set ratelimit-icmp-echo-ip {
@@ -52,7 +52,16 @@ table inet filter {
     type ipv6_addr
 <%- end %>
     flags dynamic
+<%- unless set.start_with?("connlimit-") %>
     timeout 120s
+<%- end %>
+  }
+
+<%- end %>
+
+<%- node[:networking][:firewall][:helpers].each do |helper| %>
+  ct helper <%= helper[:name] %> {
+    type "<%= helper[:helper] %>" protocol <%= helper[:protocol] %>
   }
 
 <%- end %>
@@ -67,15 +76,15 @@ table inet filter {
   }
 
   chain incoming {
-<%- if node[:networking][:firewall][:whitelist].empty? %>
+<%- if node[:networking][:firewall][:allowlist].empty? %>
     ip saddr { $ip-private-addresses } jump log-and-drop
 <%- else %>
-    ip saddr { $ip-private-addresses } ip saddr != { <%= node[:networking][:firewall][:whitelist].sort.join(", ") %> } jump log-and-drop
+    ip saddr { $ip-private-addresses } ip saddr != { <%= node[:networking][:firewall][:allowlist].sort.join(", ") %> } jump log-and-drop
 <%- end %>
     ip6 saddr { $ip6-private-addresses } jump log-and-drop
 
-    ip saddr @ip-blacklist jump log-and-drop
-    ip6 saddr @ip6-blacklist jump log-and-drop
+    ip saddr @ip-blocklist jump log-and-drop
+    ip6 saddr @ip6-blocklist jump log-and-drop
 
     ct state { established, related } accept
 
@@ -105,10 +114,10 @@ table inet filter {
   }
 
   chain outgoing {
-<%- if node[:networking][:firewall][:whitelist].empty? %>
+<%- if node[:networking][:firewall][:allowlist].empty? %>
     ip daddr { $ip-private-addresses } jump log-and-drop
 <%- else %>
-    ip daddr { $ip-private-addresses } ip daddr != { <%= node[:networking][:firewall][:whitelist].sort.join(", ") %> } jump log-and-drop
+    ip daddr { $ip-private-addresses } ip daddr != { <%= node[:networking][:firewall][:allowlist].sort.join(", ") %> } jump log-and-drop
 <%- end %>
     ip6 daddr { $ip6-private-addresses } jump log-and-drop
 
@@ -152,7 +161,7 @@ table inet filter {
 }
 <%- if node[:roles].include?("gateway") %>
 
-table ip nat {
+table ip chef-nat {
   chain postrouting {
     type nat hook postrouting priority srcnat;