It is as follows:
table inet fw4 {
chain input {
type filter hook input priority filter; policy drop;
iifname "lo" accept comment "!fw4: Accept traffic from loopback"
ct state established,related accept comment "!fw4: Allow inbound established and related flows"
tcp flags syn / fin,syn,rst,ack jump syn_flood comment "!fw4: Rate limit TCP syn packets"
iifname { "tun0", "br-lan.10" } jump input_lan comment "!fw4: Handle lan IPv4/IPv6 input traffic"
iifname "wan" jump input_wan comment "!fw4: Handle wan IPv4/IPv6 input traffic"
iifname "br-lan.20" jump input_GuestZone comment "!fw4: Handle GuestZone IPv4/IPv6 input traffic"
iifname "br-lan.30" jump input_IoTZone comment "!fw4: Handle IoTZone IPv4/IPv6 input traffic"
iifname "br-lan.40" jump input_vpn_srv comment "!fw4: Handle vpn_srv IPv4/IPv6 input traffic"
jump handle_reject
}
chain forward {
type filter hook forward priority filter; policy drop;
ct state established,related accept comment "!fw4: Allow forwarded established and related flows"
iifname { "tun0", "br-lan.10" } jump forward_lan comment "!fw4: Handle lan IPv4/IPv6 forward traffic"
iifname "wan" jump forward_wan comment "!fw4: Handle wan IPv4/IPv6 forward traffic"
iifname "br-lan.20" jump forward_GuestZone comment "!fw4: Handle GuestZone IPv4/IPv6 forward traffic"
iifname "br-lan.30" jump forward_IoTZone comment "!fw4: Handle IoTZone IPv4/IPv6 forward traffic"
iifname "br-lan.40" jump forward_vpn_srv comment "!fw4: Handle vpn_srv IPv4/IPv6 forward traffic"
jump handle_reject
}
chain output {
type filter hook output priority filter; policy accept;
oifname "lo" accept comment "!fw4: Accept traffic towards loopback"
ct state established,related accept comment "!fw4: Allow outbound established and related flows"
oifname { "tun0", "br-lan.10" } jump output_lan comment "!fw4: Handle lan IPv4/IPv6 output traffic"
oifname "wan" jump output_wan comment "!fw4: Handle wan IPv4/IPv6 output traffic"
oifname "br-lan.20" jump output_GuestZone comment "!fw4: Handle GuestZone IPv4/IPv6 output traffic"
oifname "br-lan.30" jump output_IoTZone comment "!fw4: Handle IoTZone IPv4/IPv6 output traffic"
oifname "br-lan.40" jump output_vpn_srv comment "!fw4: Handle vpn_srv IPv4/IPv6 output traffic"
}
chain prerouting {
type filter hook prerouting priority filter; policy accept;
iifname { "tun0", "br-lan.10" } jump helper_lan comment "!fw4: Handle lan IPv4/IPv6 helper assignment"
iifname "br-lan.20" jump helper_GuestZone comment "!fw4: Handle GuestZone IPv4/IPv6 helper assignment"
iifname "br-lan.30" jump helper_IoTZone comment "!fw4: Handle IoTZone IPv4/IPv6 helper assignment"
iifname "br-lan.40" jump helper_vpn_srv comment "!fw4: Handle vpn_srv IPv4/IPv6 helper assignment"
}
chain handle_reject {
meta l4proto tcp reject with tcp reset comment "!fw4: Reject TCP traffic"
reject comment "!fw4: Reject any other traffic"
}
chain syn_flood {
limit rate 25/second burst 50 packets return comment "!fw4: Accept SYN packets below rate-limit"
drop comment "!fw4: Drop excess packets"
}
chain input_lan {
ct status dnat accept comment "!fw4: Accept port redirections"
jump accept_from_lan
}
chain output_lan {
jump accept_to_lan
}
chain forward_lan {
jump accept_to_wan comment "!fw4: Accept lan to wan forwarding"
jump accept_to_IoTZone comment "!fw4: Accept lan to IoTZone forwarding"
jump accept_to_vpn_srv comment "!fw4: Accept lan to vpn_srv forwarding"
ct status dnat accept comment "!fw4: Accept port forwards"
jump accept_to_lan
}
chain helper_lan {
}
chain accept_from_lan {
iifname { "tun0", "br-lan.10" } counter packets 1614 bytes 97744 accept comment "!fw4: accept lan IPv4/IPv6 traffic"
}
chain accept_to_lan {
oifname { "tun0", "br-lan.10" } counter packets 0 bytes 0 accept comment "!fw4: accept lan IPv4/IPv6 traffic"
}
chain input_wan {
meta nfproto ipv4 udp dport 68 counter packets 0 bytes 0 accept comment "!fw4: Allow-DHCP-Renew"
icmp type echo-request counter packets 3 bytes 204 accept comment "!fw4: Allow-Ping"
meta nfproto ipv4 meta l4proto igmp counter packets 0 bytes 0 accept comment "!fw4: Allow-IGMP"
meta nfproto ipv6 udp dport 546 counter packets 0 bytes 0 accept comment "!fw4: Allow-DHCPv6"
ip6 saddr fe80::/10 icmpv6 type . icmpv6 code { mld-listener-query . no-route, mld-listener-report . no-route, mld-listener-done . no-route, mld2-listener-report . no-route } counter packets 0 bytes 0 accept comment "!fw4: Allow-MLD"
icmpv6 type { destination-unreachable, time-exceeded, echo-request, echo-reply, nd-router-solicit, nd-router-advert } limit rate 1000/second counter packets 0 bytes 0 accept comment "!fw4: Allow-ICMPv6-Input"
icmpv6 type . icmpv6 code { packet-too-big . no-route, parameter-problem . no-route, nd-neighbor-solicit . no-route, nd-neighbor-advert . no-route, parameter-problem . admin-prohibited } limit rate 1000/second counter packets 0 bytes 0 accept comment "!fw4: Allow-ICMPv6-Input"
udp dport 1193 counter packets 0 bytes 0 accept comment "!fw4: AL-Allow-VPN"
ct status dnat accept comment "!fw4: Accept port redirections"
jump reject_from_wan
}
chain output_wan {
jump accept_to_wan
}
chain forward_wan {
icmpv6 type { destination-unreachable, time-exceeded, echo-request, echo-reply } limit rate 1000/second counter packets 0 bytes 0 accept comment "!fw4: Allow-ICMPv6-Forward"
icmpv6 type . icmpv6 code { packet-too-big . no-route, parameter-problem . no-route, parameter-problem . admin-prohibited } limit rate 1000/second counter packets 0 bytes 0 accept comment "!fw4: Allow-ICMPv6-Forward"
meta l4proto esp counter packets 0 bytes 0 jump accept_to_lan comment "!fw4: Allow-IPSec-ESP"
udp dport 500 counter packets 0 bytes 0 jump accept_to_lan comment "!fw4: Allow-ISAKMP"
ct status dnat accept comment "!fw4: Accept port forwards"
jump reject_to_wan
log prefix "reject wan forward: "
}
chain accept_to_wan {
meta nfproto ipv4 oifname "wan" ct state invalid counter packets 0 bytes 0 log prefix "drop wan invalid ct state: " drop comment "!fw4: Prevent NAT leakage"
oifname "wan" counter packets 69 bytes 20958 accept comment "!fw4: accept wan IPv4/IPv6 traffic"
}
chain reject_from_wan {
iifname "wan" counter packets 4 bytes 204 log prefix "reject wan in: " jump handle_reject comment "!fw4: reject wan IPv4/IPv6 traffic"
}
chain reject_to_wan {
oifname "wan" counter packets 0 bytes 0 log prefix "reject wan out: " jump handle_reject comment "!fw4: reject wan IPv4/IPv6 traffic"
}
chain input_GuestZone {
tcp dport { 53, 67, 68 } counter packets 0 bytes 0 accept comment "!fw4: AL-Allow Guest DHCP and DNS "
udp dport { 53, 67, 68 } counter packets 0 bytes 0 accept comment "!fw4: AL-Allow Guest DHCP and DNS "
jump reject_from_GuestZone
}
chain output_GuestZone {
jump accept_to_GuestZone
}
chain forward_GuestZone {
jump accept_to_wan comment "!fw4: Accept GuestZone to wan forwarding"
jump reject_to_GuestZone
}
chain helper_GuestZone {
}
chain accept_to_GuestZone {
oifname "br-lan.20" counter packets 0 bytes 0 accept comment "!fw4: accept GuestZone IPv4/IPv6 traffic"
}
chain reject_from_GuestZone {
iifname "br-lan.20" counter packets 0 bytes 0 jump handle_reject comment "!fw4: reject GuestZone IPv4/IPv6 traffic"
}
chain reject_to_GuestZone {
oifname "br-lan.20" counter packets 0 bytes 0 jump handle_reject comment "!fw4: reject GuestZone IPv4/IPv6 traffic"
}
chain input_IoTZone {
jump accept_from_IoTZone
}
chain output_IoTZone {
jump accept_to_IoTZone
}
chain forward_IoTZone {
meta l4proto tcp ip saddr 10.10.30.18 counter packets 0 bytes 0 jump accept_to_wan comment "!fw4: AL-Allow NAS to WAN"
meta l4proto udp ip saddr 10.10.30.18 counter packets 0 bytes 0 jump accept_to_wan comment "!fw4: AL-Allow NAS to WAN"
meta l4proto tcp ip saddr { 10.10.30.13, 10.10.30.14, 10.10.30.15, 10.10.30.16, 10.10.30.17, 10.10.30.21, 10.10.30.22 } ip daddr 192.168.10.15 counter packets 0 bytes 0 jump accept_to_lan comment "!fw4: AL-Allow IoT to srv-openvpn"
meta l4proto udp ip saddr { 10.10.30.13, 10.10.30.14, 10.10.30.15, 10.10.30.16, 10.10.30.17, 10.10.30.21, 10.10.30.22 } ip daddr 192.168.10.15 counter packets 0 bytes 0 jump accept_to_lan comment "!fw4: AL-Allow IoT to srv-openvpn"
meta l4proto tcp ip saddr 10.10.30.26 ip daddr 192.168.10.21 counter packets 0 bytes 0 jump accept_to_lan comment "!fw4: Projector to NAS"
meta l4proto udp ip saddr 10.10.30.26 ip daddr 192.168.10.21 counter packets 0 bytes 0 jump accept_to_lan comment "!fw4: Projector to NAS"
meta l4proto icmp ip saddr 10.10.30.26 ip daddr 192.168.10.21 counter packets 0 bytes 0 jump accept_to_lan comment "!fw4: Projector to NAS"
jump reject_to_IoTZone
}
chain helper_IoTZone {
}
chain accept_from_IoTZone {
iifname "br-lan.30" counter packets 125 bytes 6832 accept comment "!fw4: accept IoTZone IPv4/IPv6 traffic"
}
chain accept_to_IoTZone {
oifname "br-lan.30" counter packets 201 bytes 15459 accept comment "!fw4: accept IoTZone IPv4/IPv6 traffic"
}
chain reject_to_IoTZone {
oifname "br-lan.30" counter packets 0 bytes 0 jump handle_reject comment "!fw4: reject IoTZone IPv4/IPv6 traffic"
}
chain input_vpn_srv {
ct status dnat accept comment "!fw4: Accept port redirections"
jump accept_from_vpn_srv
}
chain output_vpn_srv {
jump accept_to_vpn_srv
}
chain forward_vpn_srv {
jump accept_to_wan comment "!fw4: Accept vpn_srv to wan forwarding"
ct status dnat accept comment "!fw4: Accept port forwards"
jump accept_to_vpn_srv
log prefix "reject vpn_srv forward: "
}
chain helper_vpn_srv {
}
chain accept_from_vpn_srv {
iifname "br-lan.40" counter packets 1 bytes 76 accept comment "!fw4: accept vpn_srv IPv4/IPv6 traffic"
}
chain accept_to_vpn_srv {
oifname "br-lan.40" counter packets 0 bytes 0 accept comment "!fw4: accept vpn_srv IPv4/IPv6 traffic"
}
chain dstnat {
type nat hook prerouting priority dstnat; policy accept;
iifname { "tun0", "br-lan.10" } jump dstnat_lan comment "!fw4: Handle lan IPv4/IPv6 dstnat traffic"
iifname "wan" jump dstnat_wan comment "!fw4: Handle wan IPv4/IPv6 dstnat traffic"
iifname "br-lan.40" jump dstnat_vpn_srv comment "!fw4: Handle vpn_srv IPv4/IPv6 dstnat traffic"
}
chain srcnat {
type nat hook postrouting priority srcnat; policy accept;
oifname { "tun0", "br-lan.10" } jump srcnat_lan comment "!fw4: Handle lan IPv4/IPv6 srcnat traffic"
oifname "wan" jump srcnat_wan comment "!fw4: Handle wan IPv4/IPv6 srcnat traffic"
oifname "br-lan.40" jump srcnat_vpn_srv comment "!fw4: Handle vpn_srv IPv4/IPv6 srcnat traffic"
}
chain dstnat_lan {
ip saddr 192.168.10.0/24 ip daddr my_ip udp dport 1194 dnat ip to 192.168.10.15:1194 comment "!fw4: WAN to srv-openvpn (reflection)"
}
chain srcnat_lan {
ip saddr 192.168.10.0/24 ip daddr 192.168.10.15 udp dport 1194 snat ip to 192.168.10.1 comment "!fw4: WAN to srv-openvpn (reflection)"
}
chain dstnat_wan {
meta nfproto ipv4 udp dport 1194 counter packets 0 bytes 0 dnat ip to 192.168.10.15:1194 comment "!fw4: WAN to srv-openvpn"
meta nfproto ipv4 udp dport 1192 counter packets 0 bytes 0 dnat ip to 192.168.40.2:1192 comment "!fw4: vpn"
}
chain srcnat_wan {
meta nfproto ipv4 masquerade comment "!fw4: Masquerade IPv4 wan traffic"
}
chain dstnat_vpn_srv {
ip saddr 192.168.40.0/24 ip daddr my_ip udp dport 1192 dnat ip to 192.168.40.2:1192 comment "!fw4: vpn (reflection)"
}
chain srcnat_vpn_srv {
ip saddr 192.168.40.0/24 ip daddr 192.168.40.2 udp dport 1192 snat ip to 192.168.40.1 comment "!fw4: vpn (reflection)"
}
chain raw_prerouting {
type filter hook prerouting priority raw; policy accept;
}
chain raw_output {
root@main-router:~# nft list ruleset
table inet fw4 {
chain input {
type filter hook input priority filter; policy drop;
iifname "lo" accept comment "!fw4: Accept traffic from loopback"
ct state established,related accept comment "!fw4: Allow inbound established and related flows"
tcp flags syn / fin,syn,rst,ack jump syn_flood comment "!fw4: Rate limit TCP syn packets"
iifname { "tun0", "br-lan.10" } jump input_lan comment "!fw4: Handle lan IPv4/IPv6 input traffic"
iifname "wan" jump input_wan comment "!fw4: Handle wan IPv4/IPv6 input traffic"
iifname "br-lan.20" jump input_GuestZone comment "!fw4: Handle GuestZone IPv4/IPv6 input traffic"
iifname "br-lan.30" jump input_IoTZone comment "!fw4: Handle IoTZone IPv4/IPv6 input traffic"
iifname "br-lan.40" jump input_vpn_srv comment "!fw4: Handle vpn_srv IPv4/IPv6 input traffic"
jump handle_reject
}
chain forward {
type filter hook forward priority filter; policy drop;
ct state established,related accept comment "!fw4: Allow forwarded established and related flows"
iifname { "tun0", "br-lan.10" } jump forward_lan comment "!fw4: Handle lan IPv4/IPv6 forward traffic"
iifname "wan" jump forward_wan comment "!fw4: Handle wan IPv4/IPv6 forward traffic"
iifname "br-lan.20" jump forward_GuestZone comment "!fw4: Handle GuestZone IPv4/IPv6 forward traffic"
iifname "br-lan.30" jump forward_IoTZone comment "!fw4: Handle IoTZone IPv4/IPv6 forward traffic"
iifname "br-lan.40" jump forward_vpn_srv comment "!fw4: Handle vpn_srv IPv4/IPv6 forward traffic"
jump handle_reject
}
chain output {
type filter hook output priority filter; policy accept;
oifname "lo" accept comment "!fw4: Accept traffic towards loopback"
ct state established,related accept comment "!fw4: Allow outbound established and related flows"
oifname { "tun0", "br-lan.10" } jump output_lan comment "!fw4: Handle lan IPv4/IPv6 output traffic"
oifname "wan" jump output_wan comment "!fw4: Handle wan IPv4/IPv6 output traffic"
oifname "br-lan.20" jump output_GuestZone comment "!fw4: Handle GuestZone IPv4/IPv6 output traffic"
oifname "br-lan.30" jump output_IoTZone comment "!fw4: Handle IoTZone IPv4/IPv6 output traffic"
oifname "br-lan.40" jump output_vpn_srv comment "!fw4: Handle vpn_srv IPv4/IPv6 output traffic"
}
chain prerouting {
type filter hook prerouting priority filter; policy accept;
iifname { "tun0", "br-lan.10" } jump helper_lan comment "!fw4: Handle lan IPv4/IPv6 helper assignment"
iifname "br-lan.20" jump helper_GuestZone comment "!fw4: Handle GuestZone IPv4/IPv6 helper assignment"
iifname "br-lan.30" jump helper_IoTZone comment "!fw4: Handle IoTZone IPv4/IPv6 helper assignment"
iifname "br-lan.40" jump helper_vpn_srv comment "!fw4: Handle vpn_srv IPv4/IPv6 helper assignment"
}
chain handle_reject {
meta l4proto tcp reject with tcp reset comment "!fw4: Reject TCP traffic"
reject comment "!fw4: Reject any other traffic"
}
chain syn_flood {
limit rate 25/second burst 50 packets return comment "!fw4: Accept SYN packets below rate-limit"
drop comment "!fw4: Drop excess packets"
}
chain input_lan {
jump accept_from_lan
}
chain output_lan {
jump accept_to_lan
}
chain forward_lan {
jump accept_to_wan comment "!fw4: Accept lan to wan forwarding"
jump accept_to_IoTZone comment "!fw4: Accept lan to IoTZone forwarding"
jump accept_to_vpn_srv comment "!fw4: Accept lan to vpn_srv forwarding"
jump accept_to_lan
}
chain helper_lan {
}
chain accept_from_lan {
iifname { "tun0", "br-lan.10" } counter packets 389 bytes 23530 accept comment "!fw4: accept lan IPv4/IPv6 traffic"
}
chain accept_to_lan {
oifname { "tun0", "br-lan.10" } counter packets 0 bytes 0 accept comment "!fw4: accept lan IPv4/IPv6 traffic"
}
chain input_wan {
meta nfproto ipv4 udp dport 68 counter packets 0 bytes 0 accept comment "!fw4: Allow-DHCP-Renew"
icmp type echo-request counter packets 0 bytes 0 accept comment "!fw4: Allow-Ping"
meta nfproto ipv4 meta l4proto igmp counter packets 0 bytes 0 accept comment "!fw4: Allow-IGMP"
meta nfproto ipv6 udp dport 546 counter packets 0 bytes 0 accept comment "!fw4: Allow-DHCPv6"
ip6 saddr fe80::/10 icmpv6 type . icmpv6 code { mld-listener-query . no-route, mld-listener-report . no-route, mld-listener-done . no-route, mld2-listener-report . no-route } counter packets 0 bytes 0 accept comment "!fw4: Allow-MLD"
icmpv6 type { destination-unreachable, time-exceeded, echo-request, echo-reply, nd-router-solicit, nd-router-advert } limit rate 1000/second counter packets 0 bytes 0 accept comment "!fw4: Allow-ICMPv6-Input"
icmpv6 type . icmpv6 code { packet-too-big . no-route, parameter-problem . no-route, nd-neighbor-solicit . no-route, nd-neighbor-advert . no-route, parameter-problem . admin-prohibited } limit rate 1000/second counter packets 0 bytes 0 accept comment "!fw4: Allow-ICMPv6-Input"
udp dport 1193 counter packets 0 bytes 0 accept comment "!fw4: AL-Allow-VPN"
ct status dnat accept comment "!fw4: Accept port redirections"
jump reject_from_wan
}
chain output_wan {
jump accept_to_wan
}
chain forward_wan {
icmpv6 type { destination-unreachable, time-exceeded, echo-request, echo-reply } limit rate 1000/second counter packets 0 bytes 0 accept comment "!fw4: Allow-ICMPv6-Forward"
icmpv6 type . icmpv6 code { packet-too-big . no-route, parameter-problem . no-route, parameter-problem . admin-prohibited } limit rate 1000/second counter packets 0 bytes 0 accept comment "!fw4: Allow-ICMPv6-Forward"
meta l4proto esp counter packets 0 bytes 0 jump accept_to_lan comment "!fw4: Allow-IPSec-ESP"
udp dport 500 counter packets 0 bytes 0 jump accept_to_lan comment "!fw4: Allow-ISAKMP"
ct status dnat accept comment "!fw4: Accept port forwards"
jump reject_to_wan
log prefix "reject wan forward: "
}
chain accept_to_wan {
meta nfproto ipv4 oifname "wan" ct state invalid counter packets 0 bytes 0 log prefix "drop wan invalid ct state: " drop comment "!fw4: Prevent NAT leakage"
oifname "wan" counter packets 55 bytes 21598 accept comment "!fw4: accept wan IPv4/IPv6 traffic"
}
chain reject_from_wan {
iifname "wan" counter packets 4 bytes 180 log prefix "reject wan in: " jump handle_reject comment "!fw4: reject wan IPv4/IPv6 traffic"
}
chain reject_to_wan {
oifname "wan" counter packets 0 bytes 0 log prefix "reject wan out: " jump handle_reject comment "!fw4: reject wan IPv4/IPv6 traffic"
}
chain input_GuestZone {
tcp dport { 53, 67, 68 } counter packets 0 bytes 0 accept comment "!fw4: AL-Allow Guest DHCP and DNS "
udp dport { 53, 67, 68 } counter packets 0 bytes 0 accept comment "!fw4: AL-Allow Guest DHCP and DNS "
jump reject_from_GuestZone
}
chain output_GuestZone {
jump accept_to_GuestZone
}
chain forward_GuestZone {
jump accept_to_wan comment "!fw4: Accept GuestZone to wan forwarding"
jump reject_to_GuestZone
}
chain helper_GuestZone {
}
chain accept_to_GuestZone {
oifname "br-lan.20" counter packets 0 bytes 0 accept comment "!fw4: accept GuestZone IPv4/IPv6 traffic"
}
chain reject_from_GuestZone {
iifname "br-lan.20" counter packets 0 bytes 0 jump handle_reject comment "!fw4: reject GuestZone IPv4/IPv6 traffic"
}
chain reject_to_GuestZone {
oifname "br-lan.20" counter packets 0 bytes 0 jump handle_reject comment "!fw4: reject GuestZone IPv4/IPv6 traffic"
}
chain input_IoTZone {
jump accept_from_IoTZone
}
chain output_IoTZone {
jump accept_to_IoTZone
}
chain forward_IoTZone {
meta l4proto tcp ip saddr 10.10.30.18 counter packets 0 bytes 0 jump accept_to_wan comment "!fw4: AL-Allow NAS to WAN"
meta l4proto udp ip saddr 10.10.30.18 counter packets 0 bytes 0 jump accept_to_wan comment "!fw4: AL-Allow NAS to WAN"
meta l4proto tcp ip saddr { 10.10.30.13, 10.10.30.14, 10.10.30.15, 10.10.30.16, 10.10.30.17, 10.10.30.21, 10.10.30.22 } ip daddr 192.168.10.15 counter packets 0 bytes 0 jump accept_to_lan comment "!fw4: AL-Allow IoT to srv-openvpn"
meta l4proto udp ip saddr { 10.10.30.13, 10.10.30.14, 10.10.30.15, 10.10.30.16, 10.10.30.17, 10.10.30.21, 10.10.30.22 } ip daddr 192.168.10.15 counter packets 0 bytes 0 jump accept_to_lan comment "!fw4: AL-Allow IoT to srv-openvpn"
meta l4proto tcp ip saddr 10.10.30.26 ip daddr 192.168.10.21 counter packets 0 bytes 0 jump accept_to_lan comment "!fw4: Projector to NAS"
meta l4proto udp ip saddr 10.10.30.26 ip daddr 192.168.10.21 counter packets 0 bytes 0 jump accept_to_lan comment "!fw4: Projector to NAS"
meta l4proto icmp ip saddr 10.10.30.26 ip daddr 192.168.10.21 counter packets 0 bytes 0 jump accept_to_lan comment "!fw4: Projector to NAS"
jump reject_to_IoTZone
}
chain helper_IoTZone {
}
chain accept_from_IoTZone {
iifname "br-lan.30" counter packets 88 bytes 5600 accept comment "!fw4: accept IoTZone IPv4/IPv6 traffic"
}
chain accept_to_IoTZone {
oifname "br-lan.30" counter packets 35 bytes 2369 accept comment "!fw4: accept IoTZone IPv4/IPv6 traffic"
}
chain reject_to_IoTZone {
oifname "br-lan.30" counter packets 0 bytes 0 jump handle_reject comment "!fw4: reject IoTZone IPv4/IPv6 traffic"
}
chain input_vpn_srv {
ct status dnat accept comment "!fw4: Accept port redirections"
jump accept_from_vpn_srv
}
chain output_vpn_srv {
jump accept_to_vpn_srv
}
chain forward_vpn_srv {
jump accept_to_wan comment "!fw4: Accept vpn_srv to wan forwarding"
ct status dnat accept comment "!fw4: Accept port forwards"
jump accept_to_vpn_srv
log prefix "reject vpn_srv forward: "
}
chain helper_vpn_srv {
}
chain accept_from_vpn_srv {
iifname "br-lan.40" counter packets 0 bytes 0 accept comment "!fw4: accept vpn_srv IPv4/IPv6 traffic"
}
chain accept_to_vpn_srv {
oifname "br-lan.40" counter packets 0 bytes 0 accept comment "!fw4: accept vpn_srv IPv4/IPv6 traffic"
}
chain dstnat {
type nat hook prerouting priority dstnat; policy accept;
iifname "wan" jump dstnat_wan comment "!fw4: Handle wan IPv4/IPv6 dstnat traffic"
iifname "br-lan.40" jump dstnat_vpn_srv comment "!fw4: Handle vpn_srv IPv4/IPv6 dstnat traffic"
}
chain srcnat {
type nat hook postrouting priority srcnat; policy accept;
oifname "wan" jump srcnat_wan comment "!fw4: Handle wan IPv4/IPv6 srcnat traffic"
oifname "br-lan.40" jump srcnat_vpn_srv comment "!fw4: Handle vpn_srv IPv4/IPv6 srcnat traffic"
}
chain dstnat_lan {
}
chain srcnat_lan {
}
chain dstnat_wan {
meta nfproto ipv4 udp dport 1192 counter packets 0 bytes 0 dnat ip to 192.168.40.2:1192 comment "!fw4: vpn"
}
chain srcnat_wan {
meta nfproto ipv4 masquerade comment "!fw4: Masquerade IPv4 wan traffic"
}
chain dstnat_vpn_srv {
ip saddr 192.168.40.0/24 ip daddr my_ip udp dport 1192 dnat ip to 192.168.40.2:1192 comment "!fw4: vpn (reflection)"
}
chain srcnat_vpn_srv {
ip saddr 192.168.40.0/24 ip daddr 192.168.40.2 udp dport 1192 snat ip to 192.168.40.1 comment "!fw4: vpn (reflection)"
}
chain raw_prerouting {
type filter hook prerouting priority raw; policy accept;
}
chain raw_output {
type filter hook output priority raw; policy accept;
}
chain mangle_prerouting {
type filter hook prerouting priority mangle; policy accept;
}
chain mangle_postrouting {
type filter hook postrouting priority mangle; policy accept;
}
chain mangle_input {
type filter hook input priority mangle; policy accept;
}
chain mangle_output {
type route hook output priority mangle; policy accept;
}
chain mangle_forward {
type filter hook forward priority mangle; policy accept;
iifname "wan" tcp flags syn tcp option maxseg size set rt mtu comment "!fw4: Zone wan IPv4/IPv6 ingress MTU fixing"
oifname "wan" tcp flags syn tcp option maxseg size set rt mtu comment "!fw4: Zone wan IPv4/IPv6 egress MTU fixing"
}
chain reject_from_vpn_srv {
}
chain reject_to_vpn_srv {
}
}