所以,我正在尝试调试我当前的 NTP 设置,发现他与我的单个配置服务器的偏移超过 3 秒,并且没有调整。ntpq 输出中 LOCAL(0) 上的星号似乎表明系统正在愉快地与自身同步,而不是 10.130.33.201 服务器(这是我们系统上的另一个我们希望所有内容都同步到的 linux 机器)。
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
10.130.33.201 LOCAL(0) 9 u 49 64 377 0.242 -3742.2 1.049
*LOCAL(0) .LOCL. 10 l 2 64 377 0.000 0.000 0.001
Run Code Online (Sandbox Code Playgroud)
这是我的 ntp.conf 文件。由其他人撰写,所以我不能 100% 确定一切都是正确的。
server 10.130.33.201 burst iburst minpoll 4 maxpoll 11
driftfile /mnt/active/etc/ntp.drift
restrict -4 default nomodify nopeer notrap
restrict -6 default ignore
# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
Run Code Online (Sandbox Code Playgroud)
我已经阅读了有关突发和 iburst 以及 minpoll/maxpoll 的信息,所以我意识到可能不需要这些,但我认为这与我当前的问题没有任何关系。
此外,由于它的部署方式,该配置文件将需要大量工作才能更改,所以我希望没有什么真正必须更改的。我希望这是我不了解 NTP 如何工作的情况。
编辑 -
所以,看起来这是This question的副本,但我觉得海报没有得到足够的答案,所以我仍然想知道为什么本地时间比服务器更受欢迎。此外,根据以下答案之一,我尝试prefer在配置的服务器行上使用关键字并重新启动,但这似乎没有效果。
如果我确实按照另一个问题的答案删除了配置中的所有“本地”行,如果服务器无法访问会发生什么?NTP 是死了还是继续尝试?
重要编辑——
好的,通常情况下,10.130.33.201(“服务器”)无法访问互联网,也没有可使用的 GPS 时间源。重要的部分是系统上的所有设备都与服务器具有相同的时间,无论该时间实际上有多正确。
因此,只是为了看看会发生什么,我将其中一台 NTP 池服务器添加到服务器的配置文件中,这样它就可以从那里获取时间,而不是从本地获取时间。它现在可以正确地从 NTP 时间服务器获取时间。
在我这样做之后,客户端现在与服务器同步而不是更喜欢 LOCAL(0)
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*10.130.33.201 38.229.71.1 3 u 58 64 377 0.216 715621. 1.001
LOCAL(0) .LOCL. 10 l 18 64 377 0.000 0.000 0.001
Run Code Online (Sandbox Code Playgroud)
新问题 - 当我的服务器使用本地(给出的原始示例)时,客户端似乎在说,“哦,10.130.33.201 正在使用 LOCAL(0)。嗯,我也有一个 LOCAL(0) 服务器 - - 我将直接使用它,而不是通过 10.130.33.201" 获取相同的信息。
是这样吗?他们是否试图“直接到源”,这是不正确的 LOCAL(0)?我需要我的服务器从 LOCAL(0) 获取时间,我需要客户端从服务器获取时间。现在从客户端配置文件中删除“本地”服务器是唯一的选择,但我想了解为什么会发生这种情况,如果可能的话,避免更改他们的配置(配置更改将是很多工作,因为我们的环境...)。
此外,这看起来像是另一个没有好的答案的副本。
由于只配置了一个 NTP 服务器,算法并不完全确定该信任谁。尽管远程主机的层级较低,但我敢打赌该算法认为本地时间更值得信赖。
尝试在语句中使用prefer关键字将server其设置为优先时间源。
编辑 -
所以,看起来这是This question的副本,但我觉得海报没有得到足够的答案,所以我仍然想知道为什么本地时间比服务器更受欢迎。
要获得真正足够的答案,您将深入研究一个非常复杂的算法。文档甚至没有太具体,但我确信那里有白皮书或规范。
如果我确实按照另一个问题的答案删除了配置中的所有“本地”行,如果服务器无法访问会发生什么?NTP 是死了还是继续尝试?
NTP 守护进程不会终止或停止,但它会在无法到达远程服务器后退出同步时间。这就是为什么最佳实践建议至少使用三个远程服务器,并且除非您与网络断开连接,否则不要使用 LCL。建议三台服务器,因为只有两台,他们不同意,它会选择哪个?第三台服务器应该帮助算法消除虚假服务器。
最后,我只是注意到您没有定义driftfile. 这可能有帮助?
在我看来,偏移间隔(您的系统时间与 NTP 主机时间之间的差异)对于 NTP 的正确设置来说相差太大。
我的建议,
1. Stop the NTP service
2. As root ntpdate -bs 10.130.33.201 to reset your time to something close
3. Start the NTP service
Run Code Online (Sandbox Code Playgroud)
之后你应该没有问题。