Linux:ip neigh show 显示“失败”。可能是什么原因?

Dan*_*iel 6 networking linux

我在不受我控制的子网中运行 Linux 服务器。有时,几秒钟内无法从外部(Internet)访问服务器。我正在尝试追踪原因并开始查看ip neigh show(使用 cron 作业定期写入文件)的输出。

下一次发生时,我查看了文件,内容如下:

fe80::1 dev eth0 lladdr 00:22:64:b6:10:5c router STALE
192.168.14.1 dev eth0  FAILED
Run Code Online (Sandbox Code Playgroud)

对我来说,这看起来网关(即 192.168.14.1)对服务器发出的 ARP 请求没有响应。这样对吗?

我试图找到更多信息,特别是在iproute2源代码中,但没有找到在哪种情况下它会写出 FAILED。但也许那是因为我不是 C 开发人员。

Dan*_* t. 8

arp 缓存中的输出FAILED表明您的服务器无法到达网关。您可以在 LAN 中对此进行测试,但对 LAN 中的任何 PC 执行 ping 操作,检查 arp 状态,断开 PC 的连接,然后检查 arp 状态。您将注意到状态从 REACHABLE 更改为 FAILED。ip neigh show同样,如果您发送 icmp 请求,并且网关回复,则当您运行或命令时,网关的 MAC 地址将包含在输出中arp -a。状态REACHABLE一开始会是 ,但是如果连接出现问题,它可能会将状态更改为FAILEDDELAY您可能会注意到和的中间状态,PROBE因为它在将其标记为失败之前尝试到达网关。

要确定原因,您需要ping在子网中的多个主机上检查发生连接问题时的 arp 缓存状态。如果只有网关显示故障,而其他主机都正常,则问题出在您的服务器和网关之间。如果所有主机都显示为故障,则问题可能是服务器与交换机之间的连接问题,或者只是电缆问题。