我有一个基于Linux的过程控制器,有时会锁定到无法ping的程度(即,我可以ping起来,然后在不对网络设置进行任何修改的情况下,它就不再可以ping通)。
我很好奇,哪个进程/系统负责实际响应ping?看来此过程已崩溃。
我有一个基于Linux的过程控制器,有时会锁定到无法ping的程度(即,我可以ping起来,然后在不对网络设置进行任何修改的情况下,它就不再可以ping通)。
我很好奇,哪个进程/系统负责实际响应ping?看来此过程已崩溃。
Answers:
内核网络堆栈正在处理ICMP消息,这些消息是ping
命令发送的。
如果您没有得到答复,除了网络问题或过滤,以及基于主机的过滤/速率限制/黑洞/等等。这意味着机器可能因某些东西而过载,这可能是暂时的,或者是内核崩溃,这种情况很少见,但可能会发生(硬件故障等),不一定是由于ICMP流量造成的(而是试图用这种流量来使其过载)可以在服务器生命周期初期进行一次很好的测试,以了解它如何维持事物运行。在以后发生内核崩溃的情况下,您应该在日志文件或控制台中具有足够的信息。
还要注意,ping
检查服务是否在线几乎总是错误的工具。出于各种原因,但主要是因为根据定义,它没有模拟实际的应用程序流量。例如,如果您需要检查Web服务器是否仍处于活动状态,则应该对它进行HTTP查询(TCP端口80或443),如果需要检查邮件服务器,则进行SMTP查询(TCP端口25),如果DNS服务器,UDP 和 TCP查询到端口53等。
ping
ping,因为这会在故障排除中造成太多误报,因此我认为不完全了解ping的功能以及如何提供误导性结果的用户应该坚持使用其他方法。
内核本身(不是任何用户进程)负责发送ICMP回显应答消息,以响应ICMP回显请求消息。因此,如果主机停止响应ping,通常是由于以下某些原因:
您与被ping通的主机之间的网络连接可能已断开。可能是由于多种原因本身:电缆的物理损坏,无线情况下的噪声,路由表损坏,您受到DDoS攻击,路由器之间的路由器/交换机有问题等。在这种情况下,您可以通过以下方式开始进行故障排除:使用ethtool(8)
,iwconfig(8)
,route(8)
,ping(8)
它的路由器,tcpdump(8)
目标主机上等等。
目标主机(或您与目标主机之间的任何路由器/防火墙)上的防火墙设置可能会限制ping(或流量)的数量。这也可能是由于fail2ban(8)
按需对防火墙进行了填充等工具所致。参见iptables(8)
检查。
目标主机上存在软件/硬件故障。目标主机上的网络内核模块可能已设置为OOPS和/或变得混乱,甚至整个内核都可能已被PANICked。您将dmesg(8)
在目标主机上的或在物理控制台上的屏幕输出上看到有关的消息(如果无法进行物理访问,则另一台具有串行控制台的计算机可以提供帮助。)如果问题出在OOPS / PANIC内核上,则可能会有更新的内核以及更好的驱动程序帮助,或者您可以通过watchdog(8)
和辅助驱动程序来了解系统锁定。或者,您可以更改硬件部件。