|
手机 192.168.1.100
K2P为二级路由 LAN 192.168.1.1/24 WAN 192.168.100.100/24
一级路由下的电脑 192.168.100.3/24
我有一个UDP透明代理的需求,通过百度 找到的以下内容 添加iptables规则和路由,根据iptables的流程看起来好像没啥问题,但是不知道是我系统(PandoraBox 19.02 2019-02-01-git-93f2639a7 / LuCI Master (git-19.026.77036-498ca21))还是规则没对,我在路由上运行的UDP代理程序,能监听到手机192.168.1.100:*发往WAN口同级的电脑192.168.100.3:80的UDP数据,并且在192.168.100.3:80也成功收到了数据,就是收到时显示原地址为手机的192.168.1.100:* 理想中正确的应该是路由NAT后192.168.100.100:*,我在电脑得到的源地址没有经过NAT转换 192.168.100.3无法向192.168.1.100回复数据,这个代理也就没啥用了。如果不添加下面的规则,电脑收到的数据,能正常显示NAT后的地址,和正常回复手机消息。求赐教
iptables -t mangle -N DIVERT #在nat表上新建名为DIVERT自定义链
iptables -t mangle -A PREROUTING -p udp -m socket --transparent -j DIVERT #已建立的socket且被tproxy标记过的数据包执行DIVERT
iptables -t mangle -A DIVERT -j MARK --set-xmark 0x10000000/0xf0000000 #进入DIVERT设置标记
iptables -t mangle -A DIVERT -j ACCEPT
iptables -t mangle -N MY_UDP
iptables -t mangle -p udp -A MY_UDP -j TPROXY --on-port 8081 --tproxy-mark 0x10000000/0xf0000000
#MY_UDP执行TPROXY转发为8081端口并进行标记
iptables -t mangle -A MY_UDP -j ACCEPT
iptables -t mangle -N MYMANGLE
iptables -t mangle -A PREROUTING -p udp -j MYMANGLE #MYMANGLE链加入到PREROUTING
iptables -t mangle -A MYMANGLE -p udp -m multiport --dports 80 -j MY_UDP #80端口的包执行MY_UDP
ip rule add fwmark 0x10000000/0xf0000000 table 200 pref 200 #对标记过的数据包执行序号为200的规则
ip route add local default dev lo table 200 #200规则:数据包发送到本地回环
|
|