从 192.168.0.146 icmp_seq=1 目标主机不可达

pra*_*cha 3 networking ubuntu ping cisco

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
Run Code Online (Sandbox Code Playgroud)

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

防火墙已关闭...

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

sou*_*edi 8

[编辑] 我的其他设备可以 ping 我的 PC,但我的 PC 不能 ping 任何其他设备,包括我的 PC 直接连接到的路由器。

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

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

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

在其他设备之一上,仔细检查它为您的 IP 缓存的 MAC 地址 192.168.0.146。如果其他设备运行 Linux,您可以使用ip -4 neigh. 如果其他设备运行 Windows,您可以使用arp -a(在Windows 命令行中)检查 ARP 缓存。如果它为您的 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
Run Code Online (Sandbox Code Playgroud)

成功的 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
Run Code Online (Sandbox Code Playgroud)

(在运行 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 写了一个优化,可以交换特定 ARP 数据包进行DHCP 交换。也许这有新的怪癖,但我还没有看到它在 Linux 上使用。)

当无线信号在某些时候丢失时,使用 DHCP 和 WiFi 进行连接时经常会看到此错误。(并且您在无线层完全放弃之前就发现了它......我不知道为什么我已经看到这么多次了,也许我观察到了有缺陷或写得不好的系统)。但是 eth1 不是 WiFi 连接。

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

剩余的可能性

根据您问题的初始版本中的事实,我很难想到任何特别常见的个别情况。(包括我的隐含假设。不太可能有人会在不尝试将计算机插入运行路由器的情况下发布此问题)。

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


Tho*_*ard 2

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

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

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