我试图在无法访问Internet的本地网络中配置NTP服务器(即使错误,我也需要所有机器都具有相同的时间)。

我已经为客户端和服务器配置了/etc/ntp.conf文件。
在系统启动时,我运行ntpd -qgx来同步启动时的时间,以加快同步速度,然后运行ntpd来继续同步。

但是有时它可以成功同步,而其他时候它可以给我:


  select()返回-1:中断系统调用
  
  select()返回-1:中断系统调用
  
  1月1日00:02:56 ntpd [2599]:ntpd:找不到服务器


我真的试图获得一种模式来理解它何时会失败...但是对我而言,没有成功是完全随机的。

当我尝试使用Google的NTP服务器时,它看起来不错并且确实每次都同步

有没有人遇到过这样的问题?有任何想法吗?

我的ntp.conf文件:

服务器:

#Use the local clock
server 127.127.1.0
fudge  127.127.1.0 stratum 0

driftfile /var/lib/ntp/drift
broadcastdelay 0.008

# Give localhost full access rights
restrict 127.0.0.1

# Give machines on our network access to query us
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap


客户:

#Point to our network's master time server
server 192.168.1.102

#restrict default ignore
restrict 127.0.0.1
restrict 192.168.1.102  mask 255.255.255.255 nomodify notrap noquery

tos orphan 16

driftfile /var/lib/ntp/drift

最佳答案

不确定中断的系统调用,但是与您设定的目标相比,以下是有关配置的一些注意事项:


看来您正在尝试将服务器配置为完全没有其他refclocks或对等设备。几乎可以肯定,这不会给您带来任何合理质量的时间。至少,您将希望要么A)在已知的同步良好的时钟上临时运行候选服务器几天,直到calibrate,要么B)获得廉价的GPS附加到系统上以用作refclock。而且,如果您的本地网络规模很大,您可能会需要一些内部服务器,而不仅仅是一个服务器(要检测某个时钟出问题的时间,甚至对于小型网络也可能需要几个)。
您几乎可以肯定不需要broadcastdelay。如果您的配置中没有其他配置,则广播将无法进行。虽然我没有做过很多广播工作,但在野外客户中却没有看到太多的支持。您最好只使用传统的客户端/服务器/对等NTP。
层16保留用于不同步的时钟。如果为tos orphan配置选择较低的层次-例如tos orphan 6之类的东西-可能会有所帮助。否则,您将无法获得所需的孤立行为。


(以及关于其他测试的注意事项:不建议将Google的服务器与ntpd一起使用,因为它们使用leap smearing。对于您的用例,使用the NTP Pool Project中的对等点可能更好。尽管这也无关紧要除非是a日(6月或12月的最后一天,但只有几年)。

09-10 19:42