clearFirewallRules() { IPRULE=$(ip rule show | grep $PROXY_ROUTE_TABLE) if [ -n "$IPRULE" ] then ip -f inet rule del fwmark $PROXY_FWMARK lookup $PROXY_ROUTE_TABLE ip -f inet route del local default dev $INTERFACE table $PROXY_ROUTE_TABLE echo"clear ip rule" fi
nft flush ruleset echo"clear nftables" }
if [ $1 = 'set' ] then
clearFirewallRules
ip -f inet rule add fwmark $PROXY_FWMARK lookup $PROXY_ROUTE_TABLE ip -f inet route add local default dev $INTERFACE table $PROXY_ROUTE_TABLE sysctl -w net.ipv4.ip_forward=1 > /dev/null
table inet clash { chain prerouting_tproxy { type filter hook prerouting priority mangle; policy accept; meta l4proto { tcp, udp } th dport 53 accept ip daddr x.x.x.x accept fib daddr type local accept ip daddr 127.0.0.0/8 accept ip daddr 100.64.0.0/10 accept ip daddr 169.254.0.0/16 accept ip daddr 172.16.0.0/12 accept ip daddr 224.0.0.0/4 accept ip daddr 240.0.0.0/4 accept ip daddr 255.255.255.255 accept ip daddr 10.0.0.0/16 accept ip daddr 192.168.0.0/16 accept meta l4proto udp accept meta l4proto { tcp, udp } socket transparent 1 meta mark set 0x00000001 accept meta l4proto { tcp, udp } tproxy to :7895 meta mark set 0x00000001 }
chain prerouting_dns_redirect { type nat hook prerouting priority dstnat; policy accept; meta l4proto { tcp, udp } th dport 53 redirect to :1053 }
chain output_tproxy { type route hook output priority mangle; policy accept; oifname != "ens16" accept meta mark 0x0000029a accept meta l4proto { tcp, udp } th dport 53 accept udp dport { 123, 137 } accept ip daddr x.x.x.x accept fib daddr type local accept ip daddr 127.0.0.0/8 accept ip daddr 100.64.0.0/10 accept ip daddr 169.254.0.0/16 accept ip daddr 172.16.0.0/12 accept ip daddr 224.0.0.0/4 accept ip daddr 240.0.0.0/4 accept ip daddr 255.255.255.255 accept ip daddr 10.0.0.0/16 accept ip daddr 192.168.0.0/16 accept meta l4proto { tcp, udp } meta mark set 0x00000001 }
chain output_dns_redirect { type nat hook output priority -100; policy accept; meta mark 0x0000029a accept meta l4proto { tcp, udp } th dport 53 redirect to :1053 }
chain output_quic_reject { type filter hook output priority filter; policy accept; udp dport 443 reject with icmpx type host-unreachable }
chain forward_quic_reject { type filter hook forward priority filter; policy accept; udp dport 443 reject with icmpx type host-unreachable } }