这条iptables转发dns请求的设置:
sudo iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 5353
是我google许多之后,发现人人都是这样做的。
然而,我在opensuse试了是不成功的,dig和nslookup报
;; reply from unexpected source: 本机ip#5353, expected 系统设置的dns#53
其他程序也上不了网。
dns代理软件试过了tor和dnscrypt-proxy。调试许久无果。尝试用容器运行debian 9 ,还是这条iptables设置+tor,就成功了。
所以,这是什么问题?是opensuse的安全机制吗?
抓包发现NAT没有成功。opensuse 对udp的NAT有问题。
设置dns透明代理后,在debian上,用一个假DNS dig @2.3.4.3 twitter.com
也能成功。
而opensuse上,必须dig @127.0.0.1
才可以。
先前以为是resolve工具对响应ip的筛选问题,抓包才发现,debian上响应包被SNAT了,opensuse上没有SNAT。
之前我发现过另一个tftp的问题,看来也有关
你考虑下是不是 firewalld 或者 SUSEFirewall2 的问题。或者是 openSUSE 和 Debian 的内置 route 不同导致的。看一下 route -n 是否相同
我刚刚发现,把tor DNS设置成监听127.0.0.1,就可以了。原本我是设置成监听0.0.0.0。
debian也一样,看来和opensuse无关。
tcp没有这个问题的,仅udp有。
那要怎么办?如何才可两者兼得?