我已经设置了一台 CentOS 6.4 服务器(最小安装),它通过以太网电缆连接到网络。问题是,当网络链路断开时,不会自动检测到状态更改,但如果我键入“ifconfig”,接口(interface)仍保留其 IP 地址(由 DHCP 服务器分配)。链路断开一段时间后,接口(interface)会丢失地址,但当链路再次出现时,网络连接不会像台式计算机中那样自动恢复。即使命令“dhclient eth0”并不总是可以恢复,我必须使用“/ect/init.d/network restart”重新启动整个网络服务。
是否有任何方法可以像桌面安装中那样自动检测网络状态变化?我正在考虑一个 cron 脚本,每 5 分钟 ping 一次网络外部的服务器,如果没有得到任何响应,它将重新启动网络服务,但这听起来不是很有效......还有其他方法吗?
编辑:我意识到我没有正确解释情况。我的网络拓扑是:服务器-->交换机-->路由器-->外部网络(路由器是另一台带DHCPD的centos服务器)。 由于某些原因(我没有得到),当路由器发生故障并重新启动时,另一台服务器变得无法访问,我必须手动重新启动其上的网络服务。因此,链路实际上并未断开(交换机保持其接通),但状态更改发生在 IP 级别。
最佳答案
您可以检查是否启用了 NetworkManager,我通常不会在服务器中使用它,但在这种情况下它可以帮助您,因为它会自动监视连接(这在桌面安装中很常见)。
要查找指示 NIC 问题的消息,只需使用 dmesg 命令检查内核环形缓冲区。
例如,当电缆从给定接口(interface)断开时,这就是我得到的结果:
igb: eth1 NIC Link is Down
第一个单词取决于您的网络驱动程序的名称。
您还可以配置系统将这些消息也记录到/var/log/messages (默认情况下我不确定它们是否出现在那里)。然后只需监视日志、查找类似消息并重新启动网络服务即可。
无论如何,NetworkManager(如果尚未启用)应该是一个更简单的解决方案。
关于linux - CentOS服务器: how to detect network status changes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19594541/