谢谢抽空解答 ^_^
@
mikeguan ss 提供的 tproxy udp 解决方案似乎只能用于“路由器”或将 Linux 作为路由器使用,不适用于透明代理当前 Linux 对外发包,ss 代码倒没问题,就是防火墙没配对。
@
iBugOne REDIRECT 可以成功重定向到本机端口,代理程序也可以收到数据包,但是回复后防火墙似乎没正确转换。
比如我查询:dig
www.baidu.com ,会得到以下错误报告:预期收到来自 119.29.29.29:53 的 udp 答复,但收到了 192.168.0.101:1080 的
```
;; reply from unexpected source: 192.168.0.101#1080, expected 119.29.29.29#53
```
```
#!/bin/sh
start() {
stop
iptables -t nat -A OUTPUT -p tcp -m mark --mark 0x255 -j ACCEPT
iptables -t mangle -A OUTPUT -p udp -m mark --mark 0x255 -j ACCEPT
# tcp
iptables -t nat -A OUTPUT -p tcp -j REDIRECT --to-ports 1080
# udp
ip rule add fwmark 1 lookup 100
ip route add local default dev lo table 100
iptables -t mangle -A OUTPUT -p udp --dport 53 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p udp --dport 53 -j TPROXY --on-ip 127.0.0.1 --on-port 1080 --tproxy-mark 0x01/0x01
iptables -t nat -L -nvx
iptables -t mangle -L -nvx
}
stop() {
iptables -t nat -F
iptables -t mangle -F
iptables -F
iptables -X
ip rule delete fwmark 1 lookup 100 &>/dev/null
ip route delete local default dev lo table 100 &>/dev/null
}
if [[ $1 == "start" ]]; then
start
elif [[ $1 == "stop" ]]; then
stop
fi
```