NTPD 被 DHCP 请求/确认杀死

NTPD 被 DHCP 请求/确认杀死

我的环境是 Debian 11 服务器(bullseye)。由于它是一个测试系统,我在接口上保留了 DHCP 配置,并且 DHCP 服务器配置为始终根据 MA​​C 地址提供相同的 IP 地址。我意识到 NTP 守护进程恰好以 12 小时的间隔重新启动。当 Debian 服务器发出 DHCP 请求并立即获得 DHCP 确认时,就会发生这种情况。由于是在租用时间的 50% 后续订,因此接口的 IP 地址保持不变。在 daemon.log 中我可以找到

ntpd exiting on signal 15 (Terminated)

之后 ntpd 立即重新启动,显然具有 systemctl 功能。我试图找出哪个脚本造成了这种奇怪的行为(如果续订租约,为什么我们要重新启动 ntpd。)

中和下面的文件/etc/dhcp很有希望。但我无法阻止这种行为。知道如何解决这个问题吗?当然我可以为这个网卡定义固定的IP地址,但这将是最后的出路。

答案1

这是 DHCP 租约续订过程中的标准过程。 DHCP 客户端通过以下脚本管理此操作:/etc/dhcp/dhclient-exit-hooks.d/ntp
尝试将此文件移动到其他位置或注释所有行。

答案2

与dhcp客户端服务有关。dhcpcd.service在带有选项的调试模式下运行-d显示/lib/dhcpcd/dhcpcd-run-hook将被执行。所以解决办法很简单:将文件重命名66-ntp.conf.66-ntp.conf或删除它。

答案3

我也有这个问题。我会发现我的 ntp 服务刚刚停止。

我们的 DHCP 服务器配置为返回 DHCP 选项 42——通过 IP 地址可供客户端使用的 NTP 服务器列表。有些系统忽略此 DHCP 选项。 Windows 不完全支持 NTP,它使用此地址来设置其默认时间服务器。现代 Debian 系统,由于我不知道的原因,对该选项的处理很差,并且终止了 ntpd 服务。

我针对 Debian 11 的解决方案是编辑文件 /etc/dhcp/dhclient.conf,从请求语句中删除 dhcp6.sntp-servers 和 ntp-servers。 [dhclient.conf 的手册页甚至没有提到这些选项,当然也没有说它们是 Debian 11 的默认选项。]除了我偶然发现它们这一事实之外,我对这些选项一无所知,删除它们解决了我的 ntpd 服务定期被终止的问题。

root@nickel:/etc/dhcp# diff dhclient.conf.orig dhclient.conf
18c18
<       dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
---
>       dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn,
20c20
<       rfc3442-classless-static-routes, ntp-servers;
---
>       rfc3442-classless-static-routes;
root@nickel:/etc/dhcp#

如果尽管进行了此更改,您的 DHCP 服务器仍返回选项 42,那么我会隐藏文件 /etc/dhcp/dhclient-exit-hooks.d/ntp,DHCP 无法在其中找到它。

我认为 Linux DHCP 领域的某些人不明白 ntpd 服务在启动并保持运行时效果最佳。它对昼夜、热和冷、CPU 繁忙和 CPU 空闲的本地时间偏差进行平均,以提供相当好的本地时间。终止并重新启动 ntpd 对其功能有害。因此,如果我花时间配置了自己的 ntp.conf 文件,DHCP 就不应该更改它,尤其是 DHCP 不应该终止和/或重新启动我的 ntp 服务。 [只是我的观点。]

相关内容