Configuration

如何設置 linux 客戶端以使用通過 dhcp 提供的 ntp 資訊?

  • June 13, 2020

那裡有很多教程解釋如何設置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.client 的配置。或者,我怎樣才能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)
}

如果您正在使用的 dhcp 伺服器配置為提供該選項,您可以通過添加到預設請求行中ntp-servers來配置您的 dhclient 以請求 ntp-servers ,如 Ubuntu Linux(截至 19.04,但至少從 12.04 開始存在):ntp-servers``dhclient.conf

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如果不存在就使用的文件。

引用自:https://unix.stackexchange.com/questions/327954