我在网络上有一台 Linux 机器,该机器只能访问一个 NTP 服务器。时间同步后,状态如下:
[root@test ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
<ip address> <ip address> 3 u 8 64 17 1.397 2.510 1.954
*LOCAL(0) .LOCL. 10 l 6 64 17 0.000 0.000 0.001
我的问题是,尽管远程 NTP 服务器的层级较低,抖动值也不错,但 ntpd 始终选择本地时钟作为时间源,而其时钟最终会迟到。即使过了一天,情况仍然一样,所以这不是我没有等待足够长的时间来完成的问题。
问题:
- 网络上只有一个 NTP 服务器,是否可以实现可靠的时间同步?(我猜是不行)
- 在这种情况下,我可以以某种方式强制 ntpd 选择 NTP 服务器而不是本地时钟吗?
答案1
正如 Pawel 所说,删除 中的本地时钟线ntp.conf
。事实上,删除所有内容。如果您的本地网络上有一个可以正常工作且同步的 NTP 源,并且愿意充当服务器,那么客户端实际上只需要一条线在他们的ntp.conf
,应该读
server ntp.intranet.example.com
或者,为了实现最快的同步,
server ntp.intranet.example.com burst
(后者在服务启动时会给服务器带来更多负载,但由于它是您的服务器,如果您希望在 ntpd 启动时更快地同步,您可以说“我允许”。
不要忘记将 ntp.intranet.example.com 放入/etc/ntp/step-tickers
,或者你的发行版保存该文件的任何位置,这样客户端的时钟就可以在启动时硬同步。
答案2
是的,可以可靠地同步到单个时钟源。它并不可靠,因为没有冗余,但这是唯一的问题。
在您的位置,我只需删除本地时间源。在我的计算机上,我通常只使用外部 ntpd 服务器。
仅当您没有连接到互联网且无法同步到其他服务器时需要向客户端提供服务(想想:内部网络的 ntpd 服务器)时才需要本地时钟。