如何设置Linux客户端以使用通过dhcp提供的ntp信息?


18

dhcpd关于向dhcp客户端提供ntp建议的方法,有太多的教程解释了如何设置服务器,以至于我一直以为ntp配置是自动执行的。最近,我开始看到本地网络中的时钟漂移,因此我认为这是一个错误的假设。因此,我开始着手研究如何最大限度地减少ntp客户端配置,前提是已经通过努力进行了设置ntp-server建议dhcpd

除了这个特定于Ubuntu的帮助教程https://help.ubuntu.com/community/UbuntuTime,我无法找到其他东西。即使在这里(请参阅“故障排除->使用的是哪个配置文件?”下的段落),信息也很少,但是它说如果/etc/ntp.conf.dhcp找到了文件,它将代替使用。首先是在这里是指作家的实际位置/var/lib/ntp/ntp.conf.dhcp是在观察/etc/init.d/ntp,但是,无论这个文件的存在并不能保证该NTP将请求服务器从dhclient。结果,我必须为本地ntp服务器显式添加该server子句ntp.conf.dhcp。但是在那种情况下,为什么还要在dhcpd服务器上设置ntp设置?

这似乎违反直觉,即只设置一次ntp设置(即在服务器上),然后让dhcpd服务器将信息委托给客户端。如何最小化(如果不完全避免)ntp的客户端配置。或者,如何通过获得ntp信息dhclient

是否有适合所有Linux发行版的CLI解决方案?

我假设每个客户端都应具有的可执行文件ntpd,但我不知道如何从那里继续。

谢谢

编辑:手动运行时ubuntu客户端详细输出dhclient

sudo dhclient -1 -d -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
Internet Systems Consortium DHCP Client 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/20:cf:30:0e:6c:12
Sending on   LPF/eth0/20:cf:30:0e:6c:12
Sending on   Socket/fallback
DHCPREQUEST of 192.168.112.150 on eth0 to 255.255.255.255 port 67 (xid=0x2e844b8f)
DHCPACK of 192.168.112.150 from 192.168.112.112
reload: Unknown instance: 
invoke-rc.d: initscript smbd, action "reload" failed.
RTNETLINK answers: File exists
 * Stopping NTP server ntpd
   ...done.
 * Starting NTP server ntpd
   ...done.
bound to 192.168.112.150 -- renewal in 41963 seconds.

ntpd服务已重新启动,但ntpq -cpe -cas随后运行,但在ntp服务器列表中仍然看不到本地ntp服务器。

我的dhcpd服务器当然有option ntp-servers

subnet 192.168.112.0 netmask 255.255.255.0 {
        max-lease-time 604800;
        default-lease-time 86400;
        authoritative;
        ignore client-updates;

        option ntp-servers 192.168.112.112; #self

        ... (many other options)
}

1
在我的DHCPD服务器中,我将要使用的NTP服务器传递给客户端option ntp-servers x.x.x.x
Rui F Ribeiro

@RuiFRibeiro嗨,是的,这个选项确实是我dhcpd服务器的一部分。
nas 2016年

2
serverfault.com/questions/329596/…可能会为您提供一些线索。您可能希望查看/etc/dhcp/dhclient-exit-hooks.d/ntp来查找正在使用的实际文件名。确保将dhclient.conf文件设置为也请求ntp服务器。
icarus

您正在使用Ubuntu作为客户端吗?哪个版本?
roaima

@roaima客户端可能是ubuntu,但更通用的解决方案会有所帮助。如果使事情变得更容易,那么在这种情况下,可以说ubuntu 14.04 LTS是客户端。
nas 2017年

Answers:


10

如果将您正在使用的dhcp服务器配置为提供该ntp-servers选项,则可以通过添加ntp-servers到中的默认请求行来配置dhclient以请求ntp服务器dhclient.conf,如本示例末尾所示,来自Ubuntu Linux(自19.04开始,但至少从12.04开始存在):

request subnet-mask, broadcast-address, time-offset, routers,
        domain-name, domain-name-servers, domain-search, host-name,
        dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
        netbios-name-servers, netbios-scope, interface-mtu,
        rfc3442-classless-static-routes, ntp-servers;

/etc/ntp.conf来自DHCP的信息将用于创建/etc/ntp.conf.dhcp

必须告知您的ntpd使用/etc/ntp.conf.dhcp(如果存在)。在我使用的Ubuntu版本上,这是通过完成的/etc/dhcp/dhclient-exit-hooks.d/ntp。<-这是告诉NTPd使用的文件,/etc/ntp.conf.dhcp如果不存在则使用/etc/ntp.conf它。


2
在Ubuntu 18.04中,该文件位于中/run/ntp.conf.dhcp,无论如何,您都可以在/etc/dhcp/dhclient-exit-hooks.d/ntp
DustWolf'Aug

看来最新的Ubuntu 16.04 xenial不再支持ntp选项。它曾经可以正常工作。这样做:这样做/usr/sbin/dhcpd -t/etc/dhcp/dhcpd.conf line 20: unknown option dhcp.ntp-server option ntp-server 10....在夏天,它工作得很好。
利纳斯

0

1
嗨,阿卜杜拉(Abdullah),Chrony是一个有用的替代方法,但是您的答案并未说明如何使用DHCP来使DHCP客户端利用DHCP服务器提供的NTP信息。
安东尼·G-莫妮卡的大法官

@AnthonyGeoghegan您好,如果您将其添加为评论,我将删除答案,
阿卜杜拉

不要仅仅发布一些链接(这些链接可能会腐烂),而是在答案中包含所需的信息。
恢复莫妮卡-M.Schröder18年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.