我有两台运行 Ubuntu 12.04 的计算机,它们连接到 192.168.3 子网上的路由器。此路由器通过第一个路由器的调制解调器端口连接到另一个路由器,因此 192.168.3 路由器可以访问 192.168.2 子网。.2 路由器连接到互联网。我将这两台计算机称为 A 和 B。计算机 A 可以 ping 通自己、计算机 B、.3 和 .2 路由器以及 www.google.com。计算机 B 可以 ping 通自己、计算机 A、.3 和 .2 路由器,但无法 ping 通 www.google.com。计算机 B 上基本上没有互联网。
~$ ping www.google.com
ping: unknown host www.google.com
ifconfig 的输出:计算机 A
eth0 Link encap:Ethernet HWaddr 00:05:b7:dd:87:63
inet addr:192.168.3.135 Bcast:192.168.3.255 Mask:255.255.255.0
inet6 addr: fe80::205:b7ff:fedd:8763/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3940 errors:0 dropped:0 overruns:0 frame:0
TX packets:2216 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3365434 (3.3 MB) TX bytes:262362 (262.3 KB)
Interrupt:20 Memory:f7c00000-f7c20000
eth1 Link encap:Ethernet HWaddr 00:05:b7:dd:87:64
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:17 Memory:f7940000-f7960000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:426 errors:0 dropped:0 overruns:0 frame:0
TX packets:426 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:35063 (35.0 KB) TX bytes:35063 (35.0 KB)
ifconfig 的输出:计算机 B
eth0 Link encap:Ethernet HWaddr 00:05:b7:dd:87:43
inet addr:192.168.3.136 Bcast:192.168.3.255 Mask:255.255.255.0
inet6 addr: fe80::205:b7ff:fedd:8743/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:737 errors:0 dropped:0 overruns:0 frame:0
TX packets:551 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:73299 (73.2 KB) TX bytes:97661 (97.6 KB)
Interrupt:20 Memory:f7e00000-f7e20000
eth1 Link encap:Ethernet HWaddr 00:05:b7:dd:87:44
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:17 Memory:f7d40000-f7d60000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:336 errors:0 dropped:0 overruns:0 frame:0
TX packets:336 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:20796 (20.7 KB) TX bytes:20796 (20.7 KB)
路线输出:计算机A
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.3.1 0.0.0.0 UG 0 0 0 eth0
link-local * 255.255.0.0 U 1000 0 0 eth0
192.168.3.0 * 255.255.255.0 U 1 0 0 eth0
路线输出:计算机B
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.3.1 0.0.0.0 UG 0 0 0 eth0
link-local * 255.255.0.0 U 1000 0 0 eth0
192.168.3.0 * 255.255.255.0 U 1 0 0 eth0
我发现的唯一区别是在 resolv.conf 文件中
计算机 A 的 Resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
search ampedwireless
ampedwireless 是 .2 路由器上 DHCP 服务器的域名。
计算机 B 的 Resolv.conf
# Generated by NetworkManager
nameserver 127.0.0.1
我相信计算机 B 的 resolv.conf 曾经是计算机 A 的精确副本,除了最后一行(搜索 ampedwireless),但我尝试应用某人推荐的修复方法,如下所示:
sudo apt-get remove --purge resolvconf
sudo /etc/init.d/networking restart
我相信这个修复删除了注释,但不是问题所在。当我尝试手动将“search ampedwireless”添加到计算机 B 的 resolv.conf 时,它被覆盖了。
我尝试在 Google 上搜索,但不幸的是,我看到的所有东西都有略微不同的问题,而且修复也无济于事。我认为尝试遵循该页面的建议实际上让我陷入困境,因为我删除了 resolvconf,我无法再安装它,因为我无法访问互联网。如果任何其他信息有帮助,请告诉我。提前致谢。
编辑以添加 Mark 请求的信息:计算机 A 上的 nm-tool
~$ nm-tool
** (process:3218): WARNING **: Could not initialize NMClient /org/freedesktop/NetworkManager: Rejected send message, 2 matched rules; type="method_call", sender=":1.45" (uid=1000 pid=3218 comm="nm-tool ") interface="org.freedesktop.DBus.Properties" member="GetAll" error name="(unset)" requested_reply="0" destination="org.freedesktop.NetworkManager" (uid=0 pid=912 comm="NetworkManager ")
NetworkManager Tool
State: unknown
** (process:3218): WARNING **: error: could not connect to NetworkManager
计算机 B 上的 nm-tool(在我看来它们相同):
~$ nm-tool
** (process:1965): WARNING **: Could not initialize NMClient /org/freedesktop/NetworkManager: Rejected send message, 2 matched rules; type="method_call", sender=":1.40" (uid=1000 pid=1965 comm="nm-tool ") interface="org.freedesktop.DBus.Properties" member="GetAll" error name="(unset)" requested_reply="0" destination="org.freedesktop.NetworkManager" (uid=0 pid=909 comm="NetworkManager ")
NetworkManager Tool
State: unknown
** (process:1965): WARNING **: error: could not connect to NetworkManager
在计算机 A 上挖掘:
~$ dig @8.8.8.8 google.com
; <<>> DiG 9.8.1-P1 <<>> @8.8.8.8 google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46307
;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 299 IN A 173.194.46.66
google.com. 299 IN A 173.194.46.69
google.com. 299 IN A 173.194.46.70
google.com. 299 IN A 173.194.46.68
google.com. 299 IN A 173.194.46.64
google.com. 299 IN A 173.194.46.65
google.com. 299 IN A 173.194.46.78
google.com. 299 IN A 173.194.46.73
google.com. 299 IN A 173.194.46.72
google.com. 299 IN A 173.194.46.71
google.com. 299 IN A 173.194.46.67
;; Query time: 40 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu May 22 12:00:58 2014
;; MSG SIZE rcvd: 204
在计算机 B 上挖掘:
~$ dig @8.8.8.8 google.com
; <<>> DiG 9.8.1-P1 <<>> @8.8.8.8 google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16939
;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 41 IN A 74.125.225.110
google.com. 41 IN A 74.125.225.102
google.com. 41 IN A 74.125.225.96
google.com. 41 IN A 74.125.225.99
google.com. 41 IN A 74.125.225.104
google.com. 41 IN A 74.125.225.98
google.com. 41 IN A 74.125.225.101
google.com. 41 IN A 74.125.225.105
google.com. 41 IN A 74.125.225.100
google.com. 41 IN A 74.125.225.103
google.com. 41 IN A 74.125.225.97
;; Query time: 39 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu May 22 12:00:37 2014
;; MSG SIZE rcvd: 204
答案1
当您从终端运行 nm-tool 时,DNS 服务器的输出是什么?它将显示 NetworkManager 为计算机配置的 DNS 服务器。看来计算机 A 可能配置了您的 ISP 的 DNS 服务器,而计算机 B 没有配置 DNS 服务器。您可以尝试将计算机 B 上的 DNS 服务器设置为类似 Google 的 DNS(8.8.8.8、8.8.4.4)。最有可能的是 dnsmasq(DNS 解析器)正在本地运行以处理系统的 DNS,但计算机 B 没有配置 DNS。运行 dig @8.8.8.8 google.com 是否有效?
说实话,我只在笔记本电脑上使用 NetworkManager,并且只以“Debian 方式”配置网络接口,使用 /etc/network/interfaces 并编辑 resolv.conf。
答案2
事实证明这是一个非常简单的修复方法。我一直通过 ssh 连接这些机器,所以我决定走到实际的机器上。结果发现,出于某种原因,它决定使用配置了静态 IP 且没有 DNS 的旧网络连接进行连接。它至少选择使用默认的有线连接 1 已有 6 个月了。我不确定是什么导致了行为的改变,但修复方法很简单,只需将网络连接切换到默认的有线连接 1 并删除配置了静态 IP 且没有 DNS 的连接即可。