隔离网络上的单个NTP服务器


8

我在隔离的网络上有两台Linux机器(A和B)。它们必须是时间同步的。机器A断续供电,并且必须服务时间,因为它已连接到权威时间源(GPS)。仅当机器A通​​电时,机器B才通电,但它是嵌入式linux设备,其电源状态会经常变化。这两台机器都无法访问其他系统。这是一个封闭的网络。

我知道这对于NTP来说是一个很高的要求,因为NTP通常希望与几台服务器建立联系。我无法在机器B上正常工作。机器A与GPS同步很好,机器B可以到达机器A甚至进行时间查询,但是机器A不被信任(也许是单独的吗?)。在机器A稳定运行一个小时后,情况突然改变,机器B正常工作。但是,当机器A停机(进而机器B停机)时,机器B再次无法找到良好的时间同步。

这是一些ntpdate信息。请注意,即使机器A的层数为1,操作也会失败,最后输出相同。

10.10.10.1:服务器掉落:地层太高
服务器10.10.10.1,端口123
阶层16,精度-19,飞跃11,信任000
refid [10.10.10.1],延迟0.02614,色散0.00000
传输4,在过滤器4中
参考时间:00000000.00000000 2036年2月7日星期四6:28:16.000
原始时间戳记:d3a9bdc4.27ebb350 2012年7月12日,星期四21:19:00.155
传输时间戳记:bc17c803.b42dfffe星期六,2000年1月1日0:25:39.703
滤波延迟:0.02625 0.02614 0.02618 0.02625 
         0.00000 0.00000 0.00000 0.00000 
滤镜偏移量:39544160 39544160 39544160 39544160
         0.000000 0.000000 0.000000 0.000000
延迟0.02614,分散0.00000
抵消395441600.451568

 1月1日00:25:39 ntpdate [677]:找不到适合同步的服务器

我的猜测是机器A只是不相信自己的服务时间。在51分钟(可能不更早发生,我不知道)的正常运行时间并将其时钟与GPS同步之后,机器A开始正确提供时间,机器B便开始计时。我需要早点做。像,如果可能的话,在几秒钟内。

通过以下配置(以及大量的等待),它最终成功了。

机器A ntp.conf:

服务器127.127.28.0更喜欢真正的minpoll 4 maxpoll 4
软糖127.127.28.0阶层1时间1 0.420刷新GPS 

机器B ntp.conf:

服务器10.10.10.1更喜欢真正的minpoll 4 maxpoll 4

机器B上的ntpq -c对等端没有及时修复:

     轮询到达延迟偏移抖动时的远程刷新时间
================================================== ===========================
 10.10.10.1。步骤 16 u 9 16 0 0.000 0.000 0.000

机器B上的ntp1 -c对等设备具有良好的时间修复:

     轮询到达延迟偏移抖动时的远程刷新时间
================================================== ===========================
* 10.10.10.1 SHM(0)2 u 7 16 17 0.669 2.597 1.808

因此,现在的问题变成了:如何使Machine A快速信任自己?

在机器B之前和之后,机器A的一些调试输出确定机器A足以使用。

之前..

〜#ntpq -c rv
associd = 0 status = c418 jump_alarm,sync_uhf_radio,1个事件,no_sys_peer,
version =“ ntpd 4.2.6p4@1.2324 Fri Feb 24 15:01:45 UTC 2012(1)”,
Processor =“ armv7l”,system =“ Linux / 2.6.35.14”,jump = 11,stratum = 2,
精度= -19,rootdelay = 0.000,rootdisp = 44.537,refid = SHM(0),
reftime = d3ab0053.43b44780 2012年7月13日星期五,20:15:15.264,
时钟= d3ab0062.e7e03154星期五,2012年7月13日20:15:30.905,对等体= 34819,tc = 4,
mintc = 3,偏移量= 0.000,频率= 0.000,sys_jitter = 3.853,
clk_jitter = 36.492,clk_wander = 0.000

后...

〜#ntpq -c rv
associd = 0状态= 0415跳跃_无,sync_uhf_radio,1个事件,clock_sync,
version =“ ntpd 4.2.6p4@1.2324 Fri Feb 24 15:01:45 UTC 2012(1)”,
Processor =“ armv7l”,system =“ Linux / 2.6.35.14”,jump = 00,stratum = 2,
精度= -19,rootdelay = 0.000,rootdisp = 41.278,refid = SHM(0),
reftime = d3ab0063.43b37856星期五,2012年7月13日20:15:31.264,
时钟= d3ab006d.9ee53ec2星期五,2012年7月13日20:15:41.620,对等体= 34819,tc = 4,
mintc = 3,偏移量= 0.000,频率= 43.896,sys_jitter = 0.762,
clk_jitter = 36.953,clk_wander = 0.000

1
当机器B没有从机器A获得良好的时间时,我们可以看到ntp.conf文件和输出ntpq -p吗?可能是将机器A标记为错误的股票行情。当机器B不信任机器A时,机器A是否与GPS同步?(ntpstat机器A的输出。)
亚伦·科普利

我听说chrony更适合此应用程序。“如果您的计算机每天一次(或类似的东西)连接到'net 5分钟,或者您在不使用(Linux v2.0)计算机时将其关闭,或者您想在孤立的网络,没有任何硬件时钟,chrony将为您工作得更好。”
David Schwartz

@AaronCopley我可以在几(10或12)小时内发布这些内容。机器A在启动后一分钟内与GPS同步。机器B在相当长的时间内同步到机器A时遇到问题。
圣哈辛托

@DavidSchwartz谢谢。我会研究它,但是如果我能帮助的话,我不太愿意在配置之外进行很多更改。此时,要为机器B交叉构建任何东西都是一件繁琐的事情。
圣哈辛托

@AaronCopley更新。
圣哈辛托

Answers:


8

NTP应该工作正常。查看启动时快速同步的一些选项。查看系统B 的burstiburst选项。查看trueGPS时钟源的选项。

考虑在两个系统上使用硬件时钟作为备份时间源。设置较高的地层系统B。应执行以下操作:

server  127.127.1.0
fudge   127.127.1.0 stratum 8

观看的输出,ntpq -c peers以查看何时获得可信任的时钟源。通常ntp,在信任时间源信任它之前,需要一些响应。这由每行的第一个字符表示。

尽管NTP喜欢更多的来源,但在一个层次级别内任意数量的时间来源都应该可以正常工作。由于您只有两个服务器和一个GPS时钟,因此源的优先级(层次)应从GPS,服务器A的时钟,服务器B的时钟增加。将两者之间的层次增加三或四个级别将确保优先级得到遵守。

编辑:如果您在服务器A上有busybox NTP服务器,则可能值得安装完整的ntp服务器软件包。了解服务器A所发生的情况应该可以大大解决您的问题。在服务器B信任它之前,您至少需要一个受信任的时间源。如果ntpq -c peers不起作用,则可以尝试ntpdc peers。这两个命令都允许您查询其他主机。一个peerstats日志也可能是有用的。

在服务器B上,按照记录使用ntpclient busybox ntp howto记录发生了什么事

如果服务器没有长时间停机,则时钟应该合理地接近正确的时间。如果您需要同步两个系统,那么就足够了。GPS最终将使时间与现实世界保持同步。

“ ntpd -q”快速同步,但是退出(ntpdate行为)。它需要跟在后面ntpd不带quit选项命令,以实现连续同步。

EDIT2:我检查我的服务器,发现其中一台服务器关闭了一秒钟。修复此问题时,我使用了设置。iburst很快使服务器受到信任。 true如果没有多个其他受信任的源,请确保时钟驱动程序是受信任的。时钟花了一个多分钟才被本地信任,并且可以被远程信任。

测试时,ntpd一旦同步,您应该能够重新启动该过程,并测试快速设置的工作方式。在上述情况下,服务器B可能需要重新启动以测试其同步速度。监视ntpd更改时,我使用如下代码:

while ntpq -c peers localhost; do sleep 10; done

主机名和睡眠时间根据需要进行调整。在某些情况下,我ntpq在循环中链接了两个或更多命令行。这样做时,我使用echo和/或date命令来指示数据集在哪里更改。


将burst添加到conf文件并不能改善这种情况。这些计算机中的每台都是busybox计算机,ntpq不知道“ -c”选项。此外,在将这些时钟与GPS同步之前,无法在这些设备上信任时钟。只是系统的限制。谢谢。
圣哈辛托

我实际上犯了一个小错误,我已经在机器A上运行了完整版的ntpd。机器B是唯一一个运行BusyBox版本的(如果我有办法为其构建程序,我可以在那做同样的事情) )。最终,一切正常。我认为这是一个严重的信任问题。您能给我一些见解吗?谢谢。
圣哈辛托

另外,如果您有机会再次编辑您的答案,您可以@我让系统通知我吗?谢谢。
圣哈辛托

@SanJacinto我已经添加了第二次编辑,其中包含系统结果。我没有busybox ntpd客户端,因此无法保证其结果。我会尝试同时添加trueiburst服务器B.
BillThor

为您的努力从我那里+1,但这并不能解决我的问题。我发现的一种解决方案(如果您愿意,请提出其他建议,我会尝试的)是在同步到GPS后在机器A上杀死ntpd,然后重新启动它。这似乎使机器B在几秒钟之内就与机器A同步。我的猜测是,机器A(总是从大纪元启动)的时间跃升了42年,这让他们对共享时间感到不安,但是当它启动并且时钟已经设置好时,就好像时钟不远了可以与他人在一起,因此进行细微的调整可以使自己感觉与他人共享时光。我没让NTP ..
圣哈辛托
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.