我有一台带有 2 个网络接口的机器eth0
。eth1
我想使用接口eth0
进行互联网和eth1
连接到内部路由器的内部网通信。
仅当接口eth0
处于 up 状态和接口eth1
处于 down 状态时,互联网连接才能正常工作。down 时,路由表如下所示eth1
。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.24.140.1 0.0.0.0 UG 0 0 0 eth0
10.24.140.0 0.0.0.0 255.255.252.0 U 1 0 0 eth0
当我启动接口时eth1
,路由表中添加了一个默认路由条目,其中目标为192.168.1.0
,网关为,0.0.0.0
这会产生问题。
现在,每当我尝试 ping 一个公共域(如 )时www.google.com
,ping 结果总是显示系统尝试 ping 192.168.1.1
。甚至 'nslookup' 也会www.google.com
导致域的 IP 为192.168.1.1
。
我不明白为什么nslookup
刚打开就失败了eth1
。我再也无法访问互联网,一切都变得一团糟。
我尝试删除 的路由条目192.168.1.0
,但无济于事。只需重新启动机器即可再次添加路由条目,但一切又会变得一团糟。
请建议我可以尝试什么,以便我的机器上的两个网络都能正常运行。
答案1
您看到了一个症状(DNS 查找返回错误的 IP),但将其与路由混淆了。路由本身与您的问题无关,DNS 查找才有关系。启动第二个 NIC 意味着第二个网络上的某些东西导致了这种情况的发生。
您需要做的是找出 DNS 查询的情况。在某个地方,您有一个 DNS 服务器可以返回192.168.0.1
所有查询。
此外,nslookup
它并不是在 Linux 上工作的首选工具。您应该尝试使用dig
。dig +trace google.com
它将为您提供它为解析 IP 地址而进行的查询的完整细目,并可以向您显示哪里出了问题。
或者,您可以运行 pcap 并使用 Wireshark 等工具分析捕获的内容。这将向您显示正在通过网络传输的确切数据包,并让您了解正在发生的事情。