如何在 debian 中覆盖 dhcp 发送的 ntp 信息?

Ric*_*mon 9 debian ntpd

我在网络中有一台服务器从DHCP. 问题是ntp-server正在发送的未设置为 UTC。我想使用ntpfound in的配置,/etc/ntp.confDHCP信息优先。如何强制ntpd使用配置/etc/ntp.conf而不是发送的配置DHCP?有什么Debian方法可以做到这一点?

use*_*461 16

不直接回答问题,但这可能会派上用场。

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]
Run Code Online (Sandbox Code Playgroud)

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

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

如果不知道,这将很难调试,因为“/etc/ntp.conf”中的服务配置保持不变并且在目视检查中是正确的。然而,它实际上被忽略并被隐蔽地覆盖。

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

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

如果您的网络中有一个 ntp 服务器被 DHCP 通告并且您想忽略它

您将需要重新配置 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 服务。

最后一句话

这是所有未记录的、意外的和难以调试的行为。这让我今天很头疼,这就是我在这里记录的原因。


Oli*_*r S 8

我建议您编辑/创建 /etc/dhclient.conf 并使用以下内容取消注释“请求”行:

request subnet-mask, broadcast-address, routers, domain-name, domain-name-servers, host-name;
Run Code Online (Sandbox Code Playgroud)

特别是,如果存在“ntp-servers”,请将其删除。在某些发行版(又名 Fedora)下,它是默认发送的,因此您必须明确地放置此行,以便覆盖默认值。

检查man dhclient.conf扩展信息。


Tui*_*lak 7

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

如果ntp.conf.dhcp是在上次启动时创建的,请确保也将其删除。