同一网络上的节点间歇性无法通过 ping 访问,如何排除故障?

同一网络上的节点间歇性无法通过 ping 访问,如何排除故障?

我通过有线连接到一个交换机,该交换机连接到一个路由器,该路由器连接到另一个服务器 S。正常情况下,我可以 ping 通 S,但现在出现以下错误:

$ ping 196.168.2.106
PING 196.168.2.106 (196.168.2.106) 56(84) bytes of data.
From 173.167.59.141 icmp_seq=4 Destination Net Unreachable
From 173.167.59.141 icmp_seq=19 Destination Net Unreachable
From 173.167.59.141 icmp_seq=26 Destination Net Unreachable

连接到同一交换机的同事可以 ping S,我可以 ping 同事的机器并访问互联网。我还可以 ping 连接到不同交换机的另一个同事的机器。此错误每隔几周就会发生一次,我不知道原因。问题可能是什么,我该如何诊断?

这是我的 /etc/resolv.conf:

$ cat /etc/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 192.168.2.1

这是我的路由表:

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         router.asus.com 0.0.0.0         UG    0      0        0 eth0
link-local      *               255.255.0.0     U     1000   0        0 eth0
192.168.0.0     *               255.255.0.0     U     0      0        0 eth0

答案1

服务器是否有静态 IP 地址?——特别要仔细检查服务器和路由器上的网络掩码。

仔细检查网络掩码是否与 192.168.0.0 相同,通常是 /24(255.255.255.0)网络,而在您的路由中它为 /16(255.255.0.0)不是一个理想的子网掩码 - 显然取决于您的设置,但我猜您没有很多设备。

答案2

您可以使用 tcpdump 来帮助诊断问题。使用方法如下:

tcpdump -i <INTERFACE> icmp and host <IPADDR>

例如:

tcpdump -i eth0 icmp and host 196.168.2.106

(注意:tcpdump 的语法在不同发行版之间可能有所不同。这适用于 CentOS。)

对于每个服务器,主机(IP 地址)需要设置为对立的服务器。

检查数据包:

  1. 离开你的服务器(系统上的 tcpdump)
  2. 到达目标服务器(另一个系统上的 tcdump)
  3. 回复离开目标服务器(另一个系统上的 tcpdump)
  4. 回复到达你的服务器(系统上的 tcpdump)

这将有助于确定失败之处。

如果您可以访问路由器并且tcpdump在那里可用,这也会有很大帮助。

相关内容