我有一台带有两个 NIC 的 PC,一个连接到 LAN(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,但我无法解析域,因此似乎 DNS 以某种方式被阻止,或者它可能正在尝试使用来自 eth0 的 DNS 服务器。
如果我删除路由 192.168.0.0,则显示 FQDN 而不是 public_ip。然后我就可以解析域并访问互联网了。
如果我将另一台计算机分配为调制解调器中的 DMZ 节点,它工作得很好,所以它必须与这台 PC 相关。我什至为 eth0 尝试了另一个 NIC,但没有骰子。
有任何想法吗?
你的 /etc/resolv.conf 中有什么?它可以尝试使用 192.168.0.0/16 中的某些东西来解决吗?
根据您的附加答案:
发生这种情况是因为调制解调器使用的 192.168.1.254/24 地址也在内部网络上使用的 192.168.0.0/16 地址范围内。
由于您没有针对 192.168.1/24 的特定路由表条目,因此您的 PC 使用了它拥有的最佳路由 - 到 192.168/16 的路由。
我不确定为什么会出现这个问题,前一刻它工作正常,下一刻......
无论如何,问题似乎是调制解调器的 IP 地址类似于 192.168.1.254/255.255.255.0(我们的内部网络是 192.168.0.0/255.255.0.0),并且机器似乎试图在我们的内部找到 192.168.1.254局域网(为什么!?!?)。
由于分配给机器的公共IP(即不是192.168.1.x),我之前没有注意到它。
所以我改变了调制解调器使用的IP,现在它可以工作了。
我仍然想知道这里到底发生了什么。我能找到的最好解释是,我们的 ISP 在我们不知情的情况下更新了调制解调器的固件,这在某种程度上干扰了它之前的工作方式。