我在 Ubuntu 14.04 上使用ping
包iputils-ping
( )。3:20121221-4ubuntu1.1
当使用最初关闭但在 运行期间出现的host2.lan
IP 对主机执行 ping 操作时,我在上线时看到此情况(在序列号 56 和 57 之间):192.168.1.20
ping
host2.lan
From host1.lan (192.168.1.1) icmp_seq=49 Destination Host Unreachable
From host1.lan (192.168.1.1) icmp_seq=50 Destination Host Unreachable
From host1.lan (192.168.1.1) icmp_seq=51 Destination Host Unreachable
From host1.lan (192.168.1.1) icmp_seq=52 Destination Host Unreachable
From host1.lan (192.168.1.1) icmp_seq=53 Destination Host Unreachable
From host1.lan (192.168.1.1) icmp_seq=54 Destination Host Unreachable
From host1.lan (192.168.1.1) icmp_seq=55 Destination Host Unreachable
From host1.lan (192.168.1.1) icmp_seq=56 Destination Host Unreachable
64 bytes from host1.lan (192.168.1.1): icmp_seq=57 ttl=64 time=0.303 ms
64 bytes from host1.lan (192.168.1.1): icmp_seq=58 ttl=64 time=0.165 ms
64 bytes from host1.lan (192.168.1.1): icmp_seq=60 ttl=64 time=0.284 ms
64 bytes from host1.lan (192.168.1.1): icmp_seq=61 ttl=64 time=0.181 ms
64 bytes from host1.lan (192.168.1.1): icmp_seq=62 ttl=64 time=0.136 ms
64 bytes from host1.lan (192.168.1.1): icmp_seq=63 ttl=64 time=0.180 ms
host1.lan
这是怎么回事?我是从这里收到回声host2.lan
,还是只是显示host1.lan
错误?
搜索引擎的描述:最初host2
从host1
产量中进行 ping 离线操作,但一旦 host2 出现就Destination Host Unreachable
切换到回显回复。host1
答案1
简化:
- 您的主机发送
ARP
“谁拥有”的请求host2.lan
; - 当它没有收到任何响应时,它会向其网关发送一个“
echo-request
for ”(大概);host2.lan
host1.lan
- 网关用 ; 回答
host-unreachable
。 - 当
host2.lan
醒来时,它会回复请求,并在LAN 中所有计算机上的表ARP
中注册;ARP
- 然后您的主机开始发送
icmp-echo
数据包host2.lan
而不是将其发送到网关; - 网关停止回复并将其仍在传输中的
host-unreachable
少数内容转发到(现在由 已知);icmp-echo
ARP
host2.lan
- 最后,
host2.lan
回复echo-reply
。
顺便说一句,这正是应该发生的事情。它无论如何都不是特定于 Linux 的。
答案2
我怀疑 ping 打印了错误的 IP 地址——我很确定它会打印数据包中的实际内容。我建议 tcpdump/wireshark 进一步调查。我想到的事情:
- 防火墙 NAT 规则。在您要执行 ping 操作的机器上,您要执行 ping 操作的机器上,以及(特别是如果它是您和主机 2 之间的一跳!)主机 1 上。
- DNS 混乱。您的 DNS 条目错误,并且您没有 ping 通您认为的内容。或者你的反向条目是错误的。
- IP冲突(对方主机IP是否错误?)
根据时间戳猜测,它确实来自远程主机。这里 0.1 毫秒是通过 gig-e 的远程时间,0.02 毫秒是本地时间。