nftables.ut 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/usr/bin/utpl -S
  2. set acl_neteasemusic_http {
  3. type ether_addr;
  4. flags interval;
  5. auto-merge;
  6. {% if (acl_http_addr): %}
  7. elements = { {{ join(', ', split(trim(acl_http_addr), '\n')) }} }
  8. {% endif %}
  9. }
  10. set acl_neteasemusic_https {
  11. type ether_addr;
  12. flags interval;
  13. auto-merge;
  14. {% if (acl_https_addr): %}
  15. elements = { {{ join(', ', split(trim(acl_https_addr), '\n')) }} }
  16. {% endif %}
  17. }
  18. set neteasemusic {
  19. type ipv4_addr;
  20. flags interval;
  21. auto-merge;
  22. {% if (neteasemusic_addr): %}
  23. elements = { {{ join(', ', split(trim(neteasemusic_addr), '\n')) }} }
  24. {% endif %}
  25. }
  26. set neteasemusic6 {
  27. type ipv6_addr;
  28. flags interval;
  29. auto-merge;
  30. {% if (neteasemusic_addr6): %}
  31. elements = { {{ join(', ', split(trim(neteasemusic_addr6), '\n')) }} }
  32. {% endif %}
  33. }
  34. chain netease_cloud_music {
  35. type nat hook prerouting priority -1; policy accept;
  36. meta l4proto tcp ip daddr @neteasemusic counter jump netease_cloud_music_redir;
  37. meta l4proto tcp ip6 daddr @neteasemusic6 counter jump netease_cloud_music_redir;
  38. }
  39. chain netease_cloud_music_redir {
  40. ip daddr { 0.0.0.0/8, 10.0.0.0/8, 100.64.0.0/10, 127.0.0.0/8,
  41. 169.254.0.0/16, 172.16.0.0/12, 192.0.0.0/24,
  42. 192.0.2.0/24, 192.31.196.0/24, 192.52.193.0/24,
  43. 192.88.99.0/24, 192.168.0.0/16, 192.175.48.0/24,
  44. 198.18.0.0/15, 198.51.100.0/24, 203.0.113.0/24,
  45. 224.0.0.0/4, 240.0.0.0/4 } counter return;
  46. ip6 daddr { ::/128, ::1/128, ::ffff:0:0/96, 100::/64, 64:ff9b::/96,
  47. 2001::/32, 2001:10::/28, 2001:20::/28, 2001:db8::/28, 2002::/16,
  48. fc00::/7, fe80::/10, ff00::/8 } counter return;
  49. ether saddr @acl_neteasemusic_http tcp dport 80 counter return;
  50. ether saddr @acl_neteasemusic_https tcp dport 443 counter return;
  51. tcp dport 80 counter redirect to :{{ http_port }};
  52. tcp dport 443 counter redirect to :{{ https_port }};
  53. }