是否有脚本从 DHCP 服务器接收 IP?

是否有脚本从 DHCP 服务器接收 IP?

没有任何一个Nagios DHCP 检查插件实际上可以从 DHCP 服务器获取 IP 作为真实测试。它们所做的就是询问它会将哪个 IP 分配给某个 mac 地址。

我们的 DHCP 服务器出现故障,但 Nagios 没有发出警报,因为它可以通过 Nagios 测试,但实际上并没有将 IP 提供给客户端。

问题

有没有办法让脚本请求 IP 并让 DHCP 服务器提供该 IP?该脚本每 5 分钟运行一次,因此每次运行时都会丢弃 IP。

更新

理想情况下,脚本应该做的是

# dhclient -r ; dhclient ; ip a|grep valid_lft
Killed old client process
       valid_lft forever preferred_lft forever
       valid_lft forever preferred_lft forever
       valid_lft 86459sec preferred_lft 86459sec
       valid_lft forever preferred_lft forever

如果preferred_lft没有更新,则发出警报。

这种方法的问题是需要专用网卡。所以如果能以某种方式模拟,那真的很棒吗?

答案1

为了测试如果全新设备向 DHCP 服务器请求 IP 地址,Nagios 脚本需要发送带有伪造 MAC 地址的 DHCP Discover 数据包。您需要能够发送原始 DHCP 数据包,但在尝试之前,您应该修改此安排实际上需要的内容。

假设我们的 DHCP 租约时间为 24 小时。如果您每 5 分钟发送一个带有新 MAC 地址的 DHCP Discover 数据包并从池中获取 DHCP 提供,则仅您的 Nagios 测试就会占用池中的 288 个 IP 地址。如果您的租约时间更长,例如一周,您将拥有最多 2016 个虚拟预留 IP 地址。您需要有一个/20DHCP 池才能拥有这么多的备用地址 + 实际设备的空间。

这就是为什么我建议使用常规测试,并在 99.9% 以上的情况下依靠它。偶尔出现的池耗尽的罕见情况值得手动处理,而不是在测试时实际造成这种情况。

次要方法。不要通过发送额外的 DHCP Discover 数据包进行测试,而是监控实际流量。当您看到以下信息时,请创建警报:

  • 没有对应 DHCP Offer 数据包的 DHCP Discovery 数据包。
  • 没有相应 DHCP 确认数据包的 DHCP 请求数据包。

您应该能够很快识别任何问题。

相关内容