我在本地网络上有两台 ubuntu 计算机,两台计算机都无法 ping 通对方。每次我尝试时都会收到“目标主机无法访问”错误消息。两台计算机都可以毫无问题地访问互联网。
我有一台 Telus 的 ActionTech v1000h 路由器。我联系了他们的一位客户代表,他们说网络上的两个设备无法互相 ping 通应该没有任何原因。
我完全不知所措,你们有什么想法吗?
计算机 1:
配置文件
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:10084 errors:0 dropped:0 overruns:0 frame:0
TX packets:10084 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:797420 (797.4 KB) TX bytes:797420 (797.4 KB)
wlan0 Link encap:Ethernet HWaddr c4:85:08:77:d3:f5
inet addr:192.168.1.77 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::c685:8ff:fe77:d3f5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:373068 errors:0 dropped:0 overruns:0 frame:0
TX packets:380158 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:103445020 (103.4 MB) TX bytes:112630337 (112.6 MB)
路线-n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 wlan0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0
sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
计算机2:
配置文件
etho0 Link encap:Ethernet HWaddr 00:24:8c:ae:f6:91
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:2
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
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:110 errors:0 dropped:0 overruns:0 frame:0
TX packets:110 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:8414 (8.4 KB) TX bytes:8414 (8.4 KB)
wlan0 Link encap:Ethernet HWaddr 00:22:43:9b:7b:64
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::222:43ff:fe9b:7b64/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:252 errors:0 dropped:0 overruns:0 frame:0
TX packets:435 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:123143 (123.1 KB) TX bytes:65828 (65.8 KB)
路线-n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0
sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
编辑:计算机 1 尝试 ping 计算机 2 时出现的错误示例:
ping 192.168.1.2
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
From 192.168.1.77 icmp_seq=1 Destination Host Unreachable
From 192.168.1.77 icmp_seq=2 Destination Host Unreachable
From 192.168.1.77 icmp_seq=3 Destination Host Unreachable
From 192.168.1.77 icmp_seq=4 Destination Host Unreachable
From 192.168.1.77 icmp_seq=5 Destination Host Unreachable
From 192.168.1.77 icmp_seq=6 Destination Host Unreachable
^C
--- 192.168.1.2 ping statistics ---
7 packets transmitted, 0 received, +6 errors, 100% packet loss, time 6031ms
pipe 3
编辑2: arp -a
两台计算机
计算机 1:
? (192.168.1.254) at 20:76:00:f5:3b:70 [ether] on wlan0
计算机2:
? (192.168.1.254) at 20:76:00:f5:3b:70 [ether] on wlan0
? (192.168.1.77) at <incomplete> on wlan0
编辑3: nmap -sn 192.168.1.0/24
在计算机 2 上
Starting Nmap 6.40 ( http://nmap.org ) at 2014-05-07 21:14 PDT
Nmap scan report for 192.168.1.2
Host is up (0.00024s latency).
Nmap done: 256 IP addresses (1 host up) scanned in 3.30 seconds
编辑4:两台计算机在第一次 ping 192.168.1.254 并互相 ping 时,其 tcpdump 日志如下:
计算机 1:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
22:45:01.661300 ARP, Request who-has 192.168.1.2 tell 192.168.1.77, length 28
22:45:02.659393 ARP, Request who-has 192.168.1.2 tell 192.168.1.77, length 28
22:45:03.659394 ARP, Request who-has 192.168.1.2 tell 192.168.1.77, length 28
22:45:04.676872 ARP, Request who-has 192.168.1.2 tell 192.168.1.77, length 28
22:45:05.675391 ARP, Request who-has 192.168.1.2 tell 192.168.1.77, length 28
22:45:06.675396 ARP, Request who-has 192.168.1.2 tell 192.168.1.77, length 28
22:45:07.692825 ARP, Request who-has 192.168.1.2 tell 192.168.1.77, length 28
22:45:48.379058 ARP, Request who-has 192.168.1.77 tell 192.168.1.254, length 28
22:45:48.379108 ARP, Reply 192.168.1.77 is-at c4:85:08:77:d3:f5, length 28
22:45:54.419388 ARP, Request who-has 192.168.1.254 tell 192.168.1.77, length 28
22:45:54.420875 ARP, Reply 192.168.1.254 is-at 20:76:00:f5:3b:70, length 28
计算机2:
reading from file pc2.pcap, link-type EN10MB (Ethernet)
22:44:43.538367 ARP, Request who-has 192.168.1.254 tell 192.168.1.2, length 28
22:44:43.676705 ARP, Reply 192.168.1.254 is-at 20:76:00:f5:3b:70 (oui Unknown), length 28
22:45:02.107935 ARP, Request who-has 192.168.1.254 tell 192.168.1.2, length 28
22:45:02.107951 ARP, Reply 192.168.1.254 is-at 20:76:00:f5:3b:70 (oui Unknown), length 28
22:45:06.780619 ARP, Request who-has 192.168.1.77 tell 192.168.1.2, length 28
22:45:07.778419 ARP, Request who-has 192.168.1.77 tell 192.168.1.2, length 28
22:45:08.778419 ARP, Request who-has 192.168.1.77 tell 192.168.1.2, length 28
22:45:09.796214 ARP, Request who-has 192.168.1.77 tell 192.168.1.2, length 28
编辑5:为两台计算机设置静态 IP,etho0,并用网线连接。两台计算机都可以通过以太网线互相 ping 通!ifconfig -a
eth0 结果:
计算机 1:
eth0 Link encap:Ethernet HWaddr 68:68:68:00:62:a4
inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::6a68:68ff:fe00:62a4/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15 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:4060 (4.0 KB) TX bytes:7629 (7.6 KB)
计算机2:
eth0 Link encap:Ethernet HWaddr 00:24:8c:ae:f6:91
inet addr:192.168.1.20 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::224:8cff:feae:f691/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:250 errors:0 dropped:0 overruns:0 frame:0
TX packets:130 errors:0 dropped:0 overruns:0 carrier:3
collisions:0 txqueuelen:1000
RX bytes:26501 (26.5 KB) TX bytes:20897 (20.8 KB)
答案1
从两台计算机 ping 网关ping 192.168.1.254
,然后尝试 ping comp1 到 compt2 以及 comp2 到 comp1,然后发布arp -a
两个盒子的结果
编辑
有趣的是,有东西阻塞了交通
在两台计算机上的一个窗口中运行sudo tcpdump -ni wlan0 arp
,然后再次尝试从另一窗口互相 ping 对方和网关并发布结果
編輯2
到目前为止,这表明 comp1 正在执行其应有的操作,即发送 arp 请求(询问 comp2 的以太网地址),但没有收到 arp 回复(听不到任何回复)。需要查看 PC2 的 tcpdump 才能看到完整的画面。运行 screen 命令或在 PC1sudo tcpdump -w pc1.pcap -ni wlan0 arp &
和 PC2 上执行此操作sudo tcpdump -w pc2.pcap -ni wlan0 arp &
&应该将其置于后台并为您提供 ping 提示。ping 失败后,使用fg %1
stop 将其恢复到前台ctrl+c
,并使用 read 读取写入的文件sudo tcpdump -r pc1/2.pcap
编辑3
PC 正在做它们应该做的事情,发送 ARP,但它们没有通过,这指向路由器。也许是禁用防火墙设置,怀疑它是否支持 VLAN?有点希望你让它运行更长时间22:45:48.379058你的路由器在寻找 PC1 时发送了自己的 ARP 请求,22:45:48.379058 ARP, Request who-has 192.168.1.77 tell 192.168.1.254, length 28
两台 PC 都应该看到了,我们可以看到 PC1 看到了,并用它的 IP 回复了,但无法判断 PC2 是否收到了,因为你停止了它,它很快就停在了22:45:09.796214。假设您的时钟与 NTP 同步。
编辑4
发现问题仍未解决。没看到两台电脑上都有 eth 适配器。你能将路由器的 eth 而不是 wlan 硬连线进去,看看能不能 ping 通吗?还是换一个路由器?或者在手机上设置一个热点,连接两台电脑,然后尝试 ping 通?另外,很惊讶地发现你能够将两台电脑连接在一起,互相 ping 通,你用的是交叉线吗?
答案2
尝试使用以太网电缆直接连接两台计算机,并将其设置为固定 IP 地址(例如 A:192.168.1.10,B:192.168.1.20),然后再次尝试 ping 通。
然后您就会很快知道问题是出在您的路由器还是您的计算机上。
答案3
当我看到这种奇怪的事情时,我的第一个反应是安装 wireshark。
然后确保您有以非 root 身份使用它的权限:
sudo dpkg-reconfigure wireshark-common
选择“是”选项。
usermod -a -G wireshark your-user-name
注销并重新登录以获取新的组成员身份,现在您可以以非 root 用户身份运行捕获数据包。
然后在机器上运行 wireshark,选择连接到网络的接口。尽量减少除测试之外的流量,以便更容易解释结果。
如果你在一台机器上运行 wireshark,然后尝试从另一台机器 ping ,你应该在运行 wireshark 的机器上看到类似“谁拥有 <您尝试 ping 的 ip>”的内容。如果看到该内容,则尝试 ping 的计算机的请求已被 wireshark 计算机接收。希望您还能在 wireshark 中看到类似“<您尝试 ping 的 ip 地址> 位于 <mac 地址>”的内容。如果看到,则 wireshark 计算机正在响应。如果是这种情况,请尝试在正在 ping 的计算机上运行 wireshark,看看是否能在正在 ping 的计算机上看到“<您尝试 ping 的 ip 地址> 位于 <mac 地址>”响应。
如果这个方法太低级,您无法理解,我深表歉意。这种方法确实深入到了细节。但是,能够看到网络上实际发生的情况往往会让问题变得更加明显。
答案4
我的 LAN 也出现了同样的症状(仅限 ubuntu 机器)。自从我们换了一台新路由器后,这种情况就出现了。它是双频路由器之一。我一直搞不清楚问题所在,直到我意识到一个“频带”可能与另一个频带完全脱节。应该很容易测试,我断开了一台机器的 wifi 连接,然后重新连接(连接到同一个 SSID),你知道吗,我很幸运(概率是 50-50?),它出现在另一台机器的 LAN 上,我现在可以 ping 并登录它!上面的“nmap”给了我线索。谢谢你的想法。