【问题标题】:CentOS server: how to detect network status changesCentOS 服务器:如何检测网络状态变化
【发布时间】:2013-10-25 16:01:42
【问题描述】:

我已经设置了一个通过以太网电缆连接到网络的 CentOS 6.4 服务器(最小安装)。问题是,当网络链接断开时,不会自动检测到状态变化,但如果我输入“ifconfig”,接口仍会保留其 IP 地址(由 DHCP 服务器分配)。链接断开一段时间后,接口会丢失地址,但是当链接再次出现时,网络连接不会像在台式计算机中那样自动恢复。即使命令“dhclient eth0”也不能总是恢复东西,我必须用“/ect/init.d/network restart”重新启动整个网络服务。

有没有办法像桌面安装那样自动检测网络状态变化?我正在考虑一个 cron 脚本,它每 5 分钟 ping 一次我的网络外的服务器,如果它没有得到任何响应,它会重新启动网络服务,但这听起来效率不高......还有其他方法吗?

编辑:我意识到我没有正确解释这种情况。我的网络拓扑是:服务器 --> 交换机 --> 路由器 --> 外部网络(路由器是另一个带有 DHCPD 的 centos 服务器)。 由于某些原因(我没有得到),当路由器出现故障并重新启动时,另一台服务器变得无法访问,我必须手动重新启动它的网络服务。所以链路并没有有效地关闭(开关保持正常),但状态变化是在 IP 级别。

【问题讨论】:

  • 我真的没有看到除了你所说的那种方法之外的另一种方法,但我不认为这种方法效率很低,因为 ping 所需的资源很少

标签: linux networking centos


【解决方案1】:

您可以检查您是否启用了 NetworkManager,我通常不在服务器中使用它,但在这种情况下它可以帮助您,因为它会自动监控连接(这在桌面安装中很常见)。

https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/ch-NetworkManager.html

要查找指示 NIC 问题的消息,只需使用 dmesg 命令检查内核环形缓冲区。

例如,当电缆从给定接口断开时,我会得到:

igb: eth1 NIC Link is Down

第一个单词取决于您的网络驱动程序的名称。

您还可以将系统配置为将这些消息也记录到 /var/log/messages(默认情况下,我不确定它们是否出现在那里)。那么就只需要监控日志,查找类似消息,重启网络服务即可。

无论如何,如果 NetworkManager 尚未启用,它应该是一个更简单的解决方案。

【讨论】:

  • 感谢您的回答,但正如我在其他回复中评论的那样,我意识到我没有正确解释情况,所以我编辑了我的原始帖子。网络管理器解决方案只有在链路确实有效断开时才能发挥作用,但如果只有路由器断开,则不然。我意识到即使我将笔记本电脑连接到交换机也不会检测到任何变化。我开始认为我最初的“ping”想法可能是唯一的出路......
【解决方案2】:

有一个名为 miimon 的模块用于监控网络接口的状态。 ethtool 会给你链接状态。

$ethtool eth0
    ...
    Link detected: yes

【讨论】:

  • 感谢您的回答,但意识到我没有正确解释情况,所以我编辑了我的原始帖子。不幸的是,这个解决方案不适用于我的情况,因为服务器和路由器之间有一个开关,即使路由器出现故障,它也能保持链路畅通,所以我总是读“是”。
猜你喜欢
  • 2015-08-27
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 2011-09-07
  • 1970-01-01
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多