假设,你路由器安装了某端口的流量,比如11808,你懂得的。
那么想让局域网设备默认走这个端口。
处理方案:ipset+iptables
ipset --version
先检查,我的小米路由器默认是有。
然后下载
https://github.com/17mon/china_ip_list/raw/master/china_ip_list.txt
我放在
/opt/etc/china_ip_list.txt
注意,txt换行符为LF也就是\n
下载完执行下面的命令
ipset -N china hash:net
ipset flush china
for iprange in `cat /opt/etc/china_ip_list.txt`; do
ipset -A china $iprange
done
iptables,比如服务端口11808,仅TCP
iptables -t nat -N TROJAN
iptables -t nat -A TROJAN -d 0.0.0.0 -j RETURN
iptables -t nat -A TROJAN -d 127.0.0.0 -j RETURN
iptables -t nat -A TROJAN -d 0/8 -j RETURN
iptables -t nat -A TROJAN -d 127/8 -j RETURN
iptables -t nat -A TROJAN -d 10/8 -j RETURN
iptables -t nat -A TROJAN -d 169.254/16 -j RETURN
iptables -t nat -A TROJAN -d 172.16/12 -j RETURN
iptables -t nat -A TROJAN -d 192.168/16 -j RETURN
iptables -t nat -A TROJAN -d 224/4 -j RETURN
iptables -t nat -A TROJAN -d 240/4 -j RETURN
iptables -t nat -A TROJAN -d 192.168.31.0/24 -j RETURN
iptables -t nat -A TROJAN -p tcp -m set --match-set china dst -j RETURN
# From lans redirect to local port
iptables -t nat -A TROJAN -s 192.168.31.0/24 -p tcp -j REDIRECT --to-ports 11808
iptables -t nat -A PREROUTING -p tcp -j TROJAN
以上ipset和iptables脚本会在重启后失效,处理办法
把脚本放在
/etc/rc.local
附:UDP,未测试
UDP需要 iptables-mod-tproxy 模块
# With UDP support
ip rule add fwmark 1 table 100
ip route add local 0.0.0.0/0 dev lo table 100
iptables -t mangle -N TROJAN
iptables -t mangle -A TROJAN -d 0.0.0.0 -j RETURN
iptables -t mangle -A TROJAN -d 127.0.0.0 -j RETURN
iptables -t mangle -A TROJAN -d 192.168.31.0/24 -j RETURN
# From lans redirect to local port
iptables -t mangle -A TROJAN -p tcp -s 192.168.31.0/24 -j TPROXY --on-port 11808 --tproxy-mark 1
iptables -t mangle -A TROJAN -p udp -s 192.168.31.0/24 -j TPROXY --on-port 11808 --tproxy-mark 1
iptables -t mangle -A PREROUTING -j TROJAN