firewall.nft 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #!/usr/sbin/nft -f
  2. table inet global {
  3. flowtable f {
  4. hook ingress priority 0;
  5. devices = { ppp0, lan };
  6. }
  7. chain input {
  8. type filter hook input priority filter; policy drop;
  9. iifname lo accept
  10. iifname lan counter accept
  11. # iifname ppp0 udp dport { 546, 547 } accept # IPv6 PD
  12. ip6 nexthdr icmpv6 icmpv6 type nd-router-solicit counter accept
  13. ip6 nexthdr icmpv6 icmpv6 type nd-router-advert counter accept
  14. udp dport dhcpv6-client udp sport dhcpv6-server counter accept comment "IPv6 DHCP"
  15. ct state { established, related } counter accept
  16. iifname ppp0 counter drop
  17. }
  18. chain forward {
  19. type filter hook forward priority filter; policy drop;
  20. # clamp MSS to PMTU
  21. ip6 nexthdr tcp tcp flags syn tcp option maxseg size set rt mtu
  22. ip protocol { tcp, udp } flow offload @f
  23. ip6 nexthdr { tcp, udp } flow offload @f
  24. iifname lan counter accept comment "Allow lan -> *"
  25. iifname ppp0 oifname lan ct state { established, related } counter accept comment "Allow established back to lan"
  26. iifname ppp0 oifname lan counter drop
  27. }
  28. chain postrouting {
  29. type nat hook postrouting priority filter; policy accept;
  30. ip saddr 192.168.5.0/24 oifname ppp0 counter masquerade
  31. }
  32. }
  33. table ip clash {
  34. chain prerouting {
  35. type nat hook prerouting priority filter; policy accept;
  36. meta skuid clash counter return
  37. ip daddr 198.18.0.0/16 tcp dport 1-65535 counter redirect to :7893 comment "!chnroute -> clash (tcp)"
  38. ip daddr 198.18.0.0/16 udp dport 1-65535 meta mark set 0x233 tproxy to :7894 counter accept comment "!chnroute -> clash (udp)"
  39. }
  40. chain output {
  41. type nat hook output priority mangle; policy accept;
  42. meta skuid clash counter return
  43. ip daddr 198.18.0.0/16 tcp dport 1-65535 counter redirect to :7893 comment "!chnroute -> clash (tcp) [local]"
  44. ip daddr 198.18.0.0/16 udp dport 1-65535 meta mark set 0x233 counter comment "!chnroute -> clash (udp) [local]"
  45. }
  46. chain divert {
  47. type filter hook prerouting priority mangle; policy accept;
  48. ip protocol tcp socket transparent 1 meta mark set 0x233 accept
  49. }
  50. }