配置Tor代理为网络网关的正确iptables规则及连接超时排查
规则计数器增长说明流量确实被重定向了,但Tor没正确处理,咱们一步步排查:
先查Tor的状态和日志
看看Tor是不是正常运行,有没有报错:sudo journalctl -u tor -f如果日志里出现无法连接中继、端口被占用这类错误,那Tor本身没正常工作,先解决这个问题。比如如果TransPort被其他程序占用,就换个端口重新配置。
在路由器本地测试Tor是否能正常访问目标IP
直接在路由器上测试Tor能不能连接1.2.3.4:# 先临时把路由器自身的80端口流量重定向到Tor sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -d 1.2.3.4 -j REDIRECT --to-ports 9040 # 然后curl测试 curl http://1.2.3.4如果路由器本地也超时,那就是Tor的问题,比如网络环境封锁了Tor中继,得换网桥试试(在torrc里添加
UseBridges 1和网桥地址,网桥可以从Tor官方渠道获取)。检查iptables规则有没有冲突
查看所有nat表规则,看看是不是有其他规则抢在前面拦截了流量:sudo iptables -t nat -L -n -v再检查filter表有没有拒绝Tor相关流量的规则:
sudo iptables -L -n -v比如如果FORWARD链默认是DROP,那得添加规则允许客户端到Tor的流量转发。
确认IP转发真的开启了
执行cat /proc/sys/net/ipv4/ip_forward,如果返回0,说明IP转发没开,流量根本没法被Tor处理,赶紧开启它。检查客户端的DNS设置
如果客户端用的是公共DNS(比如8.8.8.8),那DNS请求没经过Tor,客户端拿到的是真实IP,但Tor需要处理DNS才能正确路由。把客户端的DNS服务器改成路由器的IP,这样DNS请求会被重定向到Tor的DNSPort。确认Tor的AutomapHostsOnResolve配置
如果之前没开这个选项,Tor可能没法处理直接访问IP的请求,因为Tor默认是基于域名路由的。回到torrc确认AutomapHostsOnResolve 1已经添加,然后重启Tor。
内容的提问来源于stack exchange,提问作者user569825

