ntpd
我对选项和命令有疑问ntpq
。
我已经在 Ubuntu 14.04 PC 中设置了本地 NTP 服务器,并且 NTP 客户端是基于 Renesas RZ/G1H 的定制开发平台。
我已经在 NTP 服务器上启动了 NTP,并且ntpd
正在 NTP 客户端上运行。
目前,我的 NTP 客户端已与 NTP 服务器同步。我运行
ntpq
以下命令确认:remote refid st t when poll reach delay offset jitter *192.168.4.98 LOCAL(0) 11 u - 64 1 0.282 -0.008 0.029 LOCAL(0) .LOCL. 14 l - 64 0 0.000 0.000 0.000
如您所见,
192.168.4.98
这是我的 NTP 服务器,并且当前时间源(*) 显示在其上。我已使用命令更改了 NTP 服务器(Ubuntu PC)上的日期
date
。然后我在 NTP 客户端连续运行
ntpq
以监控变化。有一次,星号没有显示。以下是输出ntpq
:remote refid st t when poll reach delay offset jitter 192.168.4.98 LOCAL(0) 11 u - 64 1 0.282 -0.008 0.029 LOCAL(0) .LOCL. 14 l - 64 0 0.000 0.000 0.000
大约 5 分钟后,星号显示在旁边,
LOCAL(0)
如下所示:remote refid st t when poll reach delay offset jitter 192.168.4.98 LOCAL(0) 11 u - 64 1 0.282 -0.008 0.029 *LOCAL(0) .LOCL. 14 l - 64 0 0.000 0.000 0.000
大约 10 分钟后,星号再次出现
192.168.4.98
,表示客户端已开始与 NTP 服务器同步。
LOCAL(0)
为什么在返回 NTP 服务器 IP 地址之前,中间旁边会显示星号?
答案1
您的示例输出不太准确ntpq
,除了计数代码外,所有示例看起来都完全相同*
,这表明它们是根据同一查询编辑的,而不是根据发生这些事情时的实际示例编辑的。所以我只能根据您对该过程的描述来假设发生了什么。
对你的问题的一般回答是:如果 NTP 有理由相信某个源提供的时间不正确,它将停止使用该源。
当您更改 NTP 服务器上的日期(可能超过 1 秒)时,您的 NTP 客户端会注意到 NTP 服务器的时间大幅跳变。因此,源192.168.4.98
发生了很大变化,而LOCAL(0)
客户端上的源发生了更可预测的变化。因此,ntpd
您的客户端会将其标记192.168.4.98
为坏的,然后花一点时间来决定新的源并选择LOCAL(0)
。在 NTP 服务器提供稳定时间一段时间后,客户端会切换回来,因为源LOCAL(0)
未与任何内容同步,并且192.168.4.98
处于较低的层级。
你的整体配置很差,而且你做的一些事情违反了最佳实践:
- 使用已弃用的 LOCAL 驱动程序,而不是从良好的参考时钟获取时间
- 仅使用一个时间源
NTP 并非设计为独立运行。最终,所有时间都必须来自权威的 0 层源。大多数人从NTP 池,它使用多种不同的来源(但通常是 GPS)。通过使用 LOCAL 驱动程序,无论本地时钟振荡器工作得多么差,您都只能听天由命(剧透:通常非常糟糕)。
通过从 NTP 客户端中删除本地驱动程序,您可能可以大致获得所需的测试行为。但如果您关心时间准确性,请不要这样做。请阅读NTP 最佳实践, 这NTP 文档, 或者我的博客系列了解有关良好 NTP 配置的更多信息。