路由行为不当,阻止* DNS *到其他networking

我有两个网卡的PC,一个连接到一个局域网(eth0,静态IP 192.168.0.254),另一个到DMZ模式下的DSL调制解调器(eth1,从调制解调器接收公共IP)。

昨天,它突然停止访问互联网工作。

我把这个问题缩小了(或者这只是一个副作用,我不确定):

$ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.0.0 U 1 0 0 eth0 link-local * 255.255.0.0 U 1000 0 0 eth0 default <public_ip> 0.0.0.0 UG 0 0 0 eth1 

编辑:由public_ip我不是指实际的公共IP分配给这台机器,而是另一个公共IP,我猜这是分配给调制解调器的。

使用上面的默认路由,我可以ping通IP,但是我无法parsing域名,所以看起来DNS被阻塞了,也许它试图从eth0使用DNS服务器。

如果我删除路由192.168.0.0,而不是public_ip它显示FQDN。 然后我可以解决域名和访问互联网就好了。

如果我在调制解调器中指定另一台计算机作为DMZ节点,它工作得很好,所以它必须是这台PC的东西。 我甚至尝试了eth0的另一个网卡,但没有骰子。

有任何想法吗?

根据您的额外答案:

发生这种情况是因为您的调制解调器使用的192.168.1.254/24地址也在内部networking上使用的192.168.0.0/16地址范围内。

由于您没有192.168.1 / 24的特定路由表条目,您的PC使用了它的最佳路由 – 192.168 / 16。

什么在你的/etc/resolv.conf? 它可以尝试使用192.168.0.0/16中的东西解决?

我不知道为什么出现这个问题,有一刻它工作正常,接下来…

无论如何,问题似乎是调制解调器有一个像192.168.1.254/255.255.255.0(我们的内部networking是192.168.0.0/255.255.0.0)的IP地址,似乎机器试图find192.168.1.254我们内局域网(whyyyy!?!?)。

由于分配给机器的公共IP(即不是 192.168.1.x),我之前没有注意到它。

所以我改变了调制解调器使用的IP,现在它工作。

我还在想,这里到底发生了什么。 我可以find的最好的解释是,我们的ISP在我们不知情的情况下更新了调制解调器的固件,这在某种程度上干扰了它以前的工作方式。