firewall.nft 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. tcp flags syn tcp option maxseg size set rt mtu
  22. # ip6 nexthdr tcp tcp flags syn tcp option maxseg size set rt mtu
  23. ip protocol { tcp, udp } flow offload @f
  24. ip6 nexthdr { tcp, udp } flow offload @f
  25. iifname lan counter accept comment "Allow lan -> *"
  26. iifname ppp0 oifname lan ct state { established, related } counter accept comment "Allow established back to lan"
  27. iifname ppp0 oifname lan counter drop
  28. }
  29. chain postrouting {
  30. type nat hook postrouting priority filter; policy accept;
  31. ip saddr 192.168.5.0/24 oifname ppp0 counter masquerade
  32. }
  33. }
  34. table ip clash {
  35. chain prerouting {
  36. type nat hook prerouting priority filter; policy accept;
  37. meta skuid clash counter return
  38. ip daddr 198.18.0.0/16 tcp dport 1-65535 counter redirect to :7893 comment "!chnroute -> clash (tcp)"
  39. ip daddr 198.18.0.0/16 udp dport 1-65535 meta mark set 0x233 tproxy to :7894 counter accept comment "!chnroute -> clash (udp)"
  40. }
  41. chain output {
  42. type nat hook output priority mangle; policy accept;
  43. meta skuid clash counter return
  44. ip daddr 198.18.0.0/16 tcp dport 1-65535 counter redirect to :7893 comment "!chnroute -> clash (tcp) [local]"
  45. ip daddr 198.18.0.0/16 udp dport 1-65535 meta mark set 0x233 counter comment "!chnroute -> clash (udp) [local]"
  46. }
  47. chain divert {
  48. type filter hook prerouting priority mangle; policy accept;
  49. ip protocol tcp socket transparent 1 meta mark set 0x233 counter accept
  50. }
  51. }