firewall.nft 2.5 KB

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