来自 192.168.0.146 icmp_seq=1 目标主机无法访问

来自 192.168.0.146 icmp_seq=1 目标主机无法访问
root@prateek-desktop:~# ping 192.168.0.1 
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
From 192.168.0.146 icmp_seq=1 Destination Host Unreachable
From 192.168.0.146 icmp_seq=2 Destination Host Unreachable
From 192.168.0.146 icmp_seq=3 Destination Host Unreachable

root@prateek-desktop:~# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 eth1

无法 ping 通的可能原因是什么?

防火墙已被禁用...

192.168.0.1 是我启用 DHCP 的无线路由器的 IP 地址。该路由器的以太网端口具有由 DHCP 分配的 IP 地址。我的电脑的 IP 地址为 192.168.0.146。路由器和PC具有相同的网络。我的电脑在网络设置中将默认网关指定为 192.168.0.146。我的其他设备可以 ping 我的电脑,但我的电脑无法 ping 通任何其他设备,包括我的电脑直接连接的路由器。

答案1

[编辑] 我的其他设备可以 ping 我的电脑,但我的电脑无法 ping 任何其他设备,包括我的电脑直接连接的路由器。

我会检查另一台设备上是否有冲突的 IP 地址。

(尽管我不确定你的ping结果是否与此一致。它不太符合我对 ARP 的直觉,不幸的是我在 Google 搜索结果中没有找到任何类似的组合。也许还有其他问题或不同的问题。但是检查一下是件好事,它可能会帮助您找到一些线索)。

在您的 PC 上,找到 MAC 地址(“硬件地址”)。如果运行ip link show dev eth1,MAC 地址就是后面显示的值link/ether

在其中一台其他设备上,仔细检查它为您的 IP 缓存的 MAC 地址:192.168.0.146。如果对方设备运行 Linux,您可以使用 来检查 ARP 缓存ip -4 neigh。如果其他设备运行 Windows,您可以使用arp -a(在Windows 命令行)。如果它显示您的 IP 192.168.0.146 的不同 MAC 地址,那么您实际上正在 ping 不同的设备,而不是您的 PC :-)。


以前的版本:

无法 ping 通的可能原因是什么?

AfroJoe:有很多原因

从技术上讲,ping显示“目标主机无法访问”是一条相当具体的错误消息!您的输出几乎肯定意味着 ARP 解析失败。在192.168.0.146。看起来这就是您运行的同一台计算机ping,并且您在后来的编辑中确认了这一点。在这种情况下,确认 ARP 问题的方法如下:

$ ping 172.16.8.2
PING 172.16.8.2 (172.16.8.2) 56(84) bytes of data.
From 172.16.8.205 icmp_seq=1 Destination Host Unreachable
From 172.16.8.205 icmp_seq=2 Destination Host Unreachable
From 172.16.8.205 icmp_seq=3 Destination Host Unreachable
^C
--- 172.16.8.2 ping statistics ---
4 packets transmitted, 0 received, +3 errors, 100% packet loss, time 3050ms
pipe 4

$ ip -4 neigh
172.16.8.1 dev wlp2s0 lladdr 74:44:01:86:42:d6 REACHABLE
172.16.8.2 dev wlp2s0  INCOMPLETE

成功的 ARP 解析涉及如下交换:

$ sudo tcpdump -n -i wlp2s0 arp or icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlp2s0, link-type EN10MB (Ethernet), capture size 262144 bytes
...
13:43:49.469349 ARP, Request who-has 172.16.8.1 tell 172.16.8.205, length 28
13:43:49.470046 ARP, Reply 172.16.8.1 is-at 74:44:01:86:42:d6, length 28
13:43:49.852608 IP 172.16.8.205 > 172.16.8.1: ICMP echo request, id 5246, seq 21, length 64
13:43:49.854600 IP 172.16.8.1 > 172.16.8.205: ICMP echo reply, id 5246, seq 21, length 64
13:43:50.853879 IP 172.16.8.205 > 172.16.8.1: ICMP echo request, id 5246, seq 22, length 64
13:43:50.855867 IP 172.16.8.1 > 172.16.8.205: ICMP echo reply, id 5246, seq 22, length 64
^C
18 packets captured
18 packets received by filter
0 packets dropped by kernel

(在运行 ping 并使用 强制 ARP 刷新时观察到ip neigh flush dev wlp2s0)。

注意:这种解释基本上只适用于ping.当您从“普通”TCP/IP 应用程序(例如ssh或 )收到“主机无法访问”消息时,它不适用curl,因为这也可能意味着您收到了 ICMP 错误回复,例如“管理禁止”(来自防火墙)。但是ping接收并解码整个 ICMP 回复。所以ping会告诉你这个错误是明确的“行政禁止”,而不是只是“无法访问主机”。

另外,这个问答是关于 IPv4 的。我还没有检查它如何适应 IPv6。

为什么ARP解析失败?

AfroJoe:有很多原因

我还有另一项秘密知识。除非您的 Ubuntu 客户端系统是由某人故意配置的,否则地址192.168.0.146是通过 DHCP 数据包交换来分配的。通常,此交换将涉及路由器,但在其他情况下可能只涉及 Windows Server 或其他类型的服务器。 在这种情况下,路由器是 DHCP 服务器或中继,您的系统已经能够交换一些与路由器的数据包

您可以通过断开并重新建立连接来测试重新触发 DHCP 交换。[*] 当然,如果问题不断“随机”再次出现,这样做并不能解决根本问题,您可能需要调查连接仍处于断开状态。

([*] Apple 编写了一个可以进行 DHCP 交换的优化特定 ARP 数据包的交换。也许这有新的怪癖,但我还没有看到它在 Linux 上使用。)

当无线信号在某个时刻丢失时,使用 DHCP 和 WiFi 连接时经常会看到此错误。 (并且您在无线层完全放弃之前捕获它......我不确定为什么我多次看到这种情况,也许我正在观察有错误或编写得很糟糕的系统)。但 eth1 不是 WiFi 连接。

我相信 IPv4 的 DHCP 无需任何 ARP 即可运行。至少在最初的 DHCP 交换中是这样。

剩余的可能性

根据您问题的最初版本中的事实,我很难想到任何特别常见的个别情况。 (包括我隐含的假设。如果没有人的帮助,不太可能有人会提出这个问题将他们的计算机插入可操作的路由器)。

  • 您连接的网络没有地址为 的设备192.168.0.1。如果这就是为您提供 DHCP 地址的原因,那么它已从网络中删除。拔掉插头,或者刚刚死掉。
  • 您手动配置了 eth1 并且其中之一
    • 您没有在 Ubuntu 桌面中使用 NetworkManager,并且
      • 您实际上没有检测到以太网链接(检查ethtool)。
      • 或者您检测到以太网链路,但交换机要求您提供密码或使用其他身份验证802.1X
      • 或者您已检测到以太网链接,但您需要向网络管理员注册计算机的 MAC 地址。
    • 您的电缆的性能足以检测链路,但不足以可靠地传输数据包。

答案2

可能有一百五十亿个原因之一。下面列出了其中一些:

  • 桌面上的网络配置问题。 (您是否设置了正确的网关?)
  • 目标系统防火墙配置为不回复 ping
  • 将您连接到网络的网线损坏
  • 您的系统有防火墙规则阻止来自其他主机的 ICMP 回复
  • 网络范围内的防火墙配置过滤掉 ICMP(包括交换机配置)

问题是,与只是所提供的信息绝对没有办法进行任何进一步的诊断,使得这个问题“太宽泛”(如此标记)。

相关内容