有什么办法可以让 ntpd 迭代地查阅 ntp.conf 文件中给出的服务器地址?

有什么办法可以让 ntpd 迭代地查阅 ntp.conf 文件中给出的服务器地址?

假设机器有一个如下的 ntp.conf 文件:

Driftfile < path-to-drift-file>
服务器 < NTP-server-1>
服务器 < NTP-server-2>
服务器 < NTP-server-2>

由于某种原因,假设 NTP 服务器在第一次查询所有服务器时未运行。我们可以让 ntpd 重复查询这些源(即再次循环查询服务器 1 至服务器 3)吗?我们该怎么做?

编辑:有没有办法从机器中的 ntp.conf 给出的服务器列表中定量地确定哪个服务器导致了实际时间同步?

答案1

所有定义的服务器/etc/ntp.conf都用于同步时间。无需让它“循环”遍历服务器,因为算法已经处理了多个源。

ntpd 程序通过按照指定的轮询间隔与一个或多个配置的服务器交换消息来运行。

从:手动 ntpd

ntpq -p您可以通过在命令行上执行来显示您的同行及其状态来看到这一点。

您可能会看到类似如下所示的输出:

  remote           refid      st when poll reach   delay  offset    disp
========================================================================
+128.4.2.6    132.249.16.1     2  131  256  373     9.89   16.28   23.25
*128.4.1.20   .WWVB.           1  137  256  377   280.62   21.74   20.23
-128.8.2.88   128.8.10.1       2   49  128  376   294.14    5.94   17.47
+128.4.2.17   .WWVB.           1  173  256  377   279.95   20.56   16.40

手册页中也解释了输出内容。但随着时间的推移,我收集了一些笔记:

偏僻的:ntp.conf 文件中指定的对等点
* = 当前时间源
# = 选定源,距离超过最大值
o = 选定源,使用每秒脉冲数 (PPS)
+ = 选定源,包含在最终集合中
x = 源错误行情
. = 从候选列表末尾选定源
- = 被聚类算法丢弃的源
空白 = 被丢弃的源高层次,健全性失败

重新:远程源的同步源

地层:源的层级

:可用类型
l = 本地(例如 GPS、WWVB)
u = 单播(最常见)
m = 多播
b = 广播
- = 网络地址

什么时候:自上次响应以来经过的秒数

轮询:源的轮询间隔(以秒为单位)

抵达:表示成功/失败到达源,377 所有尝试均成功

延迟:表示接收回复的往返时间(以毫秒为单位)

抵消:表示客户端服务器与源之间的时间差,以毫秒为单位

失真/抖动:表示两个样本之间的差异(以毫秒为单位)

最后,回答最后一个问题;

有没有办法从机器中的ntp.conf中给出的服务器列表中定量地确定哪个服务器导致了实际时间同步?

标有 (*) 的主机是您当前选定的时间源。这可能会在轮询期间发生变化。

答案2

Ntpd 将在启动时查询所有已配置的服务器,并选择层数最低的服务器。如果该服务器发生故障,它将自动切换到下一个服务器。那么你为什么要改变这一点呢?

维基百科:网络时间协议 - 时钟层

编辑:经过检查,我发现了一些有关该iburst参数的信息,它实际上旨在加快时钟同步。这里的区别是,当它无法到达任何服务器时,它将使 ntpd 服务器退出。您可以以某种方式滥用它来确保 ntpd 实例始终在运行,例如通过使用看门狗或不时由 cron 运行的简单脚本。

不幸的是,我无法弄清楚当无法访问任何服务器时,ntpd 的默认行为是什么;尽管我找到了很多关于当服务器无法解析 DNS 时它将如何表现的参考资料(例如这个错误)或当接口关闭

相关内容