DHCP 行为

DHCP 行为

我在网络中有一个服务器,它从 接收所有网络信息DHCP。问题是ntp-server发送的 未设置为 UTC。我想使用ntp中找到的配置/etc/ntp.conf,但DHCP信息优先。我如何强制ntpd使用 中的配置/etc/ntp.conf而不是 发送的配置DHCP?如何Debian做到这一点?

答案1

我建议您编辑/创建 /etc/dhclient.conf 并取消注释“request”行,内容如下:

request subnet-mask, broadcast-address, routers, domain-name, domain-name-servers, host-name;

尤其是,如果存在“ntp-servers”,请将其删除。在某些发行版(例如 Fedora)下,默认情况下会发送它,因此您必须明确输入此行,以便覆盖默认值。

检查man dhclient.conf扩展信息。

答案2

虽然没有直接回答问题,但可能会有用。

DHCP 行为

在 Debian 上(至少),DHCP 客户端会覆盖现有的 ntp 服务配置。

它由脚本控制/etc/dhcp/dhclient-exit-hooks.d/ntp

[contents from: /etc/dhcp/dhclient-exit-hooks.d/ntp]
NTP_CONF=/etc/ntp.conf
NTP_DHCP_CONF=/var/lib/ntp/ntp.conf.dhcp
...
[hundreds of lines of scripts]

DHCP 客户端从 DHCP 服务器接收 ntp 服务器,它从 NTP_CONF 路径获取当前 ntp 服务配置并将其更改为包含通过 dhcp 接收的 ntp 服务器,它在 NTP_DHCP_CONF 路径中生成一个新的 ntp 配置文件,最后它强制 ntp 服务使用这个新的配置文件。

这会导致始终使用通过 dhcp 公布的 ntp 服务器。绕过系统配置。

如果不知道的话,很难调试,因为“/etc/ntp.conf”中的服务配置保持不变,并且目测是正确的。然而,它实际上被忽略并被秘密覆盖。

您可以使用“ntpq -pn”来调试守护进程实际正在使用的 ntp 服务器。

混合 DHCP ntp 选项和系统特定配置

如果你的网络中有一个 DHCP 通告的 ntp 服务器,而你想忽略它

您需要重新配置 dhcp 客户端以/etc/dhclient.conf跳过ntp-serversdhcp 选项。请参阅@Oliver 的回答。

然后您可以在/etc/ntp.conf

如果曾经有 DHCP 通告的 ntp 服务器,但现在不再有

系统 ntp 配置可能仍会被 dhcp 客户端覆盖,从而强制使用很久以前公布的过时 ntp 服务器。这种 dhcp 覆盖可能会持续数天,跨越ntp service restartreboot

为了结束这种情况,您需要删除/var/lib/ntp/ntp.conf.dhcp并重新启动所有服务器上的 ntp 服务。

最后的话

这些都是未记录的、意料之外的、难以调试的行为。这让我今天很头疼,所以我在这里记录了这件事。

答案3

您也可以直接删除此文件:/etc/dhcp/dhclient-exit-hooks.d/ntp,而不必编辑 DHCP 请求。此文件会创建ntp.conf.dhcp

如果ntp.conf.dhcp在上次启动时创建,请务必将其删除。

相关内容