现象是突然无法访问外网(你懂的),重启软路由( debian 10 自建)后正常,不定时又无法访问外网,再重启又正常,如此反复。
最后分析出的原因是因为外网的某个域名被解析成了 127.0.0.1,当电脑访问这个域名时,就被软路由解析并自动添加到 ipset 里了,导致本地连接 127.0.0.1 端口的所有进程都无法成功连接(全部被 iptables redriect 了),最终导致无法访问外网。
重启会清空 ipset,所以就恢复了,但是,一旦这个 127.0.0.1 再次被添加到 ipset 里时,问题就又出现了。
至于是哪个域名现在也不知道,为了避免再次出现此类问题,最终的解决方法是在 nat 的 OUTPUT 链中添加如下规则:
iptable -t nat -I OUTPUT 1 -d 127.0.0.1/32 -j RETURN
顺便也可以把 192.168 等私有地址都加进去。
最后分析出的原因是因为外网的某个域名被解析成了 127.0.0.1,当电脑访问这个域名时,就被软路由解析并自动添加到 ipset 里了,导致本地连接 127.0.0.1 端口的所有进程都无法成功连接(全部被 iptables redriect 了),最终导致无法访问外网。
重启会清空 ipset,所以就恢复了,但是,一旦这个 127.0.0.1 再次被添加到 ipset 里时,问题就又出现了。
至于是哪个域名现在也不知道,为了避免再次出现此类问题,最终的解决方法是在 nat 的 OUTPUT 链中添加如下规则:
iptable -t nat -I OUTPUT 1 -d 127.0.0.1/32 -j RETURN
顺便也可以把 192.168 等私有地址都加进去。