我在不受我控制的子网中运行Linux服务器。 有时,服务器不能从外面(互联网)达到几秒钟。 我试图跟踪为什么,并开始看看ip neigh show的输出(用cron作业定期写出来)。
下次发生这种情况时,我看了看文件,内容如下:
fe80::1 dev eth0 lladdr 00:22:64:b6:10:5c router STALE 192.168.14.1 dev eth0 FAILED
对我来说,这看起来像网关(这是192.168.14.1)不响应服务器的ARP请求。 它是否正确?
我试图find更多的信息,特别是在iproute2源代码,但没有find在哪种情况下,它会写出失败。 但也许这是因为我不是C开发人员。
ARPcaching中的FAILED输出表明您的服务器无法到达网关。 你可以在你的局域网中testing这个,但是可以ping你局域网中的任何一台PC,检查ARP状态,断开PC,然后检查ARP状态。 您会注意到状态从REACHABLE变为FAILED。 同样,如果发送icmp请求,并且网关应答,则在运行ip neigh show或arp -a命令时,网关的MAC地址将包含在输出中。 首先,状态将是REACHABLE的,但是如果连接出现问题,可能会将状态更改为“ FAILED 。 您可能会注意到DELAY和PROBE中间状态,因为它会在将其标记为失败之前尝试到达网关。
要确定原因,您需要ping您的子网中的多个主机,并检查您的arpcaching状态,因为发生连接问题。 如果只有网关显示失败,而其他主机正常,则问题出在您的服务器和网关之间。 如果所有主机都显示为失败,则问题可能是服务器与交换机之间的连接问题,或者只是电缆问题。
这可能是您的系统,网关或连接本身的问题。 你能到达该子网中的其他系统吗? 如果它们在网关不可达的时候是可以访问的,这就暗示着某些东西会在网关上重新加载(由于防火墙/ tc更新或其他)。 也许交换机的重新configuration(例如VLAN)也可能导致这种情况,但是所有系统的连接都应该受到影响。