router/nftables.conf

111 lines
2.7 KiB
Text
Raw Normal View History

define WAN = wan0
2021-07-10 23:48:10 -05:00
define LAN = lan0
2021-07-09 17:21:45 -05:00
table inet filter {
chain input {
type filter hook input priority filter; policy accept;
2021-07-10 23:48:10 -05:00
iifname "lo" accept
2021-07-09 17:21:45 -05:00
ct state invalid drop
2022-01-31 16:44:36 -06:00
ct state { established, related } accept
ip protocol icmpv6 accept
2021-07-09 17:21:45 -05:00
ip protocol icmp accept
meta l4proto ipv6-icmp accept
2022-01-31 17:06:53 -06:00
tcp dport { 22 } accept comment "allow ssh to router"
udp dport { 546, 53, 67 } accept comment "allow dhcpv6-client, dns, and dhcp"
udp dport { 60000-60009 } accept comment "allow mosh common ports"
2021-07-10 23:48:10 -05:00
drop
2021-07-09 17:21:45 -05:00
}
chain forward {
type filter hook forward priority filter; policy accept;
accept
}
chain output {
type filter hook output priority filter; policy accept;
2022-01-31 16:44:36 -06:00
accept
2021-07-09 17:21:45 -05:00
}
}
2021-07-10 14:46:26 -05:00
2021-07-10 23:48:10 -05:00
table ip nat {
2022-01-31 16:44:36 -06:00
chain postrouting {
type nat hook postrouting priority 100; policy accept;
oifname $LAN masquerade
}
2021-07-10 23:48:10 -05:00
2022-01-31 16:44:36 -06:00
chain prerouting {
type nat hook prerouting priority -100; policy accept;
2021-07-10 23:48:10 -05:00
2022-01-31 16:44:36 -06:00
# ip daddr 10.0.0.1 tcp dport { 80, 443 } dnat to 10.0.0.25
2022-01-31 17:06:53 -06:00
# faceless
# allow HTTP, HTTPS, gitea's SSH, and host ssh to faceless
iifname $WAN tcp dport { 443, 80, 2222, 2200 } dnat to 10.0.0.25
# allow mosh
iifname $WAN udp dport 60010-60019 dnat to 10.0.0.25
2022-01-31 16:44:36 -06:00
2022-01-31 17:06:53 -06:00
# allow host ssh
iifname $WAN tcp dport { 2221 } dnat to 10.0.0.10
# allow mosh
2022-01-31 16:44:36 -06:00
iifname $WAN udp dport 60020-60029 dnat to 10.0.0.10
2022-01-31 17:06:53 -06:00
# ourcraft
2022-01-31 16:44:36 -06:00
iifname $WAN tcp dport { 25565 } dnat to 10.0.0.244
}
}
2021-07-10 23:48:10 -05:00
2021-07-10 14:46:26 -05:00
# nat ipv4 for lan
2021-07-09 17:21:45 -05:00
table ip io.systemd.nat {
set masq_saddr {
type ipv4_addr
flags interval
elements = { 10.0.0.0/24 }
}
map map_port_ipport {
type inet_proto . inet_service : ipv4_addr . inet_service
}
chain prerouting {
type nat hook prerouting priority dstnat + 1; policy accept;
fib daddr type local dnat ip addr . port to meta l4proto . th dport map @map_port_ipport
}
chain output {
type nat hook output priority -99; policy accept;
ip daddr != 127.0.0.0/8 oif "lo" dnat ip addr . port to meta l4proto . th dport map @map_port_ipport
}
chain postrouting {
type nat hook postrouting priority srcnat + 1; policy accept;
ip saddr @masq_saddr masquerade
}
}
2021-07-10 14:46:26 -05:00
2022-01-31 17:06:53 -06:00
# nat ipv6 for lan
2022-01-31 16:44:36 -06:00
table ip6 io.systemd.nat {
set masq_saddr {
type ipv6_addr
flags interval
}
map map_port_ipport {
type inet_proto . inet_service : ipv6_addr . inet_service
}
chain prerouting {
type nat hook prerouting priority dstnat + 1; policy accept;
fib daddr type local dnat ip6 to meta l4proto . th dport map @map_port_ipport
}
chain output {
type nat hook output priority -99; policy accept;
ip6 daddr != ::1 oif "lo" dnat ip6 to meta l4proto . th dport map @map_port_ipport
}
chain postrouting {
type nat hook postrouting priority srcnat + 1; policy accept;
ip6 saddr @masq_saddr masquerade
}
}