我有一台带有两个 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,我猜它是分配给调制解调器的 IP。
使用如上所述的默认路由,我可以 ping 到 IP 但无法解析域,因此似乎 DNS 以某种方式被阻止了,或者也许它正在尝试使用 eth0 中的 DNS 服务器。
如果我删除路由 192.168.0.0,那么它会显示 FQDN 而不是 public_ip。然后我就可以解析域名并正常访问互联网了。
如果我将另一台计算机指定为调制解调器中的 DMZ 节点,它就可以正常工作,因此这台 PC 一定出了问题。我甚至尝试为 eth0 分配另一个 NIC,但没用。
有任何想法吗?
答案1
根据您的补充回答:
发生这种情况是因为您的调制解调器使用的 192.168.1.254/24 地址也在您的内部网络使用的 192.168.0.0/16 地址范围内。
由于您没有 192.168.1/24 的特定路由表条目,因此您的 PC 使用了最佳路由 - 到 192.168/16 的路由。
答案2
您的 /etc/resolv.conf 中有什么?它是否正在尝试使用 192.168.0.0/16 中的某些内容进行解析?
答案3
我不知道为什么会出现这个问题,前一刻还运行正常,下一刻……
无论如何,问题似乎在于调制解调器的 IP 地址类似于 192.168.1.254/255.255.255.0(我们的内部网络是 192.168.0.0/255.255.0.0),并且似乎机器正在尝试在我们的 LAN 内找到 192.168.1.254(为什么!?!)。
我之前没有注意到,因为这台机器分配了公网 IP(即不是192.168.1.x)。
因此我更改了调制解调器使用的 IP,现在它可以工作了。
我仍然不明白这里到底发生了什么。我能找到的最好的解释是,我们的 ISP 在我们不知情的情况下更新了调制解调器的固件,这不知何故干扰了它之前的运行方式。