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

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

据我所知,这对NTP来说是一个很高的订单,因为NTP通常希望与多台服务器联系.我在机器B上正常工作时遇到了麻烦.机器A与GPS同步很好,机器B可以到达机器A甚至做时间查询,但机器A不受信任(可能是它本身?).机器A运行一小时后,突然发生变化,机器B工作.然而,当机器A停机(因此机器B)时,机器B再次无法找到良好的时间同步.

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

10.10.10.1: Server dropped: strata too high
server 10.10.10.1,port 123
stratum 16,precision -19,leap 11,trust 000
refid [10.10.10.1],delay 0.02614,dispersion 0.00000
transmitted 4,in filter 4
reference time:    00000000.00000000  Thu,Feb  7 2036  6:28:16.000
originate timestamp: d3a9bdc4.27ebb350  Thu,Jul 12 2012 21:19:00.155
transmit timestamp:  bc17c803.b42dfffe  Sat,Jan  1 2000  0:25:39.703
filter delay:  0.02625  0.02614  0.02618  0.02625 
         0.00000  0.00000  0.00000  0.00000 
filter offset: 39544160 39544160 39544160 39544160
         0.000000 0.000000 0.000000 0.000000
delay 0.02614,dispersion 0.00000
offset 395441600.451568

 1 Jan 00:25:39 ntpdate[677]: no server suitable for synchronization found

我的猜测是机器A只是不相信自己的服务时间.经过51分钟(可能早先发生,我不知道)的正常运行时间和时钟同步到GPS,机器A开始正常服务时间,机器B捡起它.我需要提前做到这一点.比如,如果可能,在几秒钟内.

通过以下配置(以及大量等待),它最终会成功.

机器A ntp.conf:

server 127.127.28.0 prefer true minpoll 4 maxpoll 4
fudge 127.127.28.0 stratum 1 time1 0.420 refid GPS 

机器B ntp.conf:

server 10.10.10.1 prefer true minpoll 4 maxpoll 4

机器B上的ntpq -c peer没有很好的时间修复:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 10.10.10.1   .STEP.          16 u    9   16    0    0.000    0.000   0.000

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

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*10.10.10.1   SHM(0)           2 u    7   16   17    0.669    2.597   1.808

所以,现在问题变成了:我如何快速地使机器A信任?

在机器B之前和之后机器A的一些调试输出决定机器A足够好用.

之前..

~ # ntpq -c rv
associd=0 status=c418 leap_alarm,sync_uhf_radio,1 event,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",leap=11,stratum=2,precision=-19,rootdelay=0.000,rootdisp=44.537,refid=SHM(0),reftime=d3ab0053.43b44780  Fri,Jul 13 2012 20:15:15.264,clock=d3ab0062.e7e03154  Fri,Jul 13 2012 20:15:30.905,peer=34819,tc=4,mintc=3,offset=0.000,frequency=0.000,sys_jitter=3.853,clk_jitter=36.492,clk_wander=0.000

后…

~ # ntpq -c rv
associd=0 status=0415 leap_none,clock_sync,leap=00,rootdisp=41.278,reftime=d3ab0063.43b37856  Fri,Jul 13 2012 20:15:31.264,clock=d3ab006d.9ee53ec2  Fri,Jul 13 2012 20:15:41.620,frequency=43.896,sys_jitter=0.762,clk_jitter=36.953,clk_wander=0.000

解决方法

NTP应该可以正常工作.查看启动时快速同步的一些选项.查看系统B的突发和iburst选项.查看GPS时钟源的真实选项.

考虑在两个系统上使用硬件时钟作为备用时间源.设置更高的层次系统B.以下内容应该有效:

server  127.127.1.0
fudge   127.127.1.0 stratum 8

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

虽然NTP喜欢更多来源,但是在一个层次中任何奇数个时间源都应该运行良好.由于您只有两台服务器和一个GPS时钟,因此源的优先级(层数)应该从GPS,服务器A上的时钟,服务器B上的时钟增加.将每个层之间的层数增加三层或四层将确保优先级得到尊重.

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

在服务器B上使用ntpclient记录busybox ntp howto来记录它上面发生的事情

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

‘ntpd -q’快速同步,但退出(ntpdate行为).它需要后跟一个没有quit选项的ntpd命令才能进行连续同步.

EDIT2:我检查了我的服务器,发现其中一台服务器关闭了一秒钟.在修复此问题时,我使用了设置. iburst非常快速地获得服务器信任.如果没有多个其他可信来源,则确保时钟驱动程序受信任.时钟花了不到一分钟才被本地信任,可以远程信任.

在测试时,您应该能够在同步后重新启动ntpd进程并测试设置的工作速度.在上述情况下,可能需要重新启动服务器B以测试其同步的速度.监视ntpd更改时,我使用如下行:

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、信号(signal)、消息队列、共享内存、信号量、套接字(socket)。管道用于具有亲缘关系的进程间通信,有名管道的每个管道具有名字,使没有亲缘关系的进程间也可以通信。信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别对整个系统的性能做统计,而进程级别则具体到进程,为每个进程维护统计信息。

按实现原理分,可分为基于计数器和跟踪以及剖析。含义如下:

计数器:内核维护的统计数据,通常为无符号整型,用于对发生的事件计数,比如,网络包接收计数器,磁
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书验证,详细追踪整个交互过程,可用于调用网络后端接口,诊断http和https网络服务故障。
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满、fd泄漏等问题。命令包括ping、fping、tcpdump、lsof、netstat、/proc/$pid/fd、du、grep、traceroute、dig。
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的进程数目,用uptime查看到负载很高,既有可能是CPU利用率高,也可能是大量在等待io的进程导致,用mpstat查看每个CPU的使用情况,查看CPU的使用率或者CPU花在等待io的时间,接着用pidstat定位具体的进程
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线程切换及中断切换,进程切换的开销较大,除了需要保存寄存器和程序计数器中的值还需保存全局变量、栈等到内存中,以便下次运行恢复,而同一进程中的线程切换开销会小很多,只需更新寄存器和线程独有的栈,共享资源如打开的文件、全局变量等无需切换,当硬件中
1.top命令 作用:该命令可以按CPU使用.内存使用和执行时间对任务进行排序,常用来监控系统中占用CPU或内存较高的程序及CPU和内存的负载。 默认视图: 当想看系统负载时,可观察汇总的%CPU中的us用户进程和sy系统进程是否占用CPU很高,相加接近100%就说明占用很高了,有些程序可能得不到及
文章浏览阅读1.8k次,点赞63次,收藏54次。Linux下的目录权限!!!粘滞位!!!超详解!!!
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Windows、Linux、MacBook_mack book 安装qt
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Linux——了解操作系统的发展历史以及初次体验Linux编程环境
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,个人学习时很认真的记录的,觉得好的麻烦点个赞。
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.5p1(亲测无问题,建议收藏)_openssh_9.5p1
文章浏览阅读3.5k次,点赞93次,收藏78次。初识Linux中的线程,理解线程的各种概念,理解进程地址空间中的页表转换,介绍pthread线程库并理解线程库!
文章浏览阅读863次。出现此问题为Linux文件权限问题,解决方案为回到引擎目录执行命令。输入用户密码后运行./UnrealEditor。_increasing per-process limit of core file size to infinity.
文章浏览阅读2.9k次。使用文本编辑器:打开CSV文件,并使用文本编辑器(如Notepad++、Sublime Text、Visual Studio Code等)来查看文件的字符编码格式。通常在编辑器的底部状态栏或设置中可以找到当前编码的显示。请注意,上述方法并非绝对准确,特别是当文件没有明确的编码标识时。因此,如果你发现CSV文件在不同的工具或方法中显示不同的编码格式,可能需要进行进一步的分析和判断,或者尝试使用不同的编码转换方法。该命令将输出文件的MIME类型和编码信息。使用命令行工具:在命令行中,你可以使用。_shell读取csv文件逐行处理
本文介绍了如何在Linux系统中升级gcc版本,以便更好地支持C++11及以上版本的新特性。通过升级gcc,可以提升编译器的功能和性能,获得更好的开发体验。详细的步骤和方法请参考原文链接。
文章浏览阅读4.4k次,点赞6次,收藏19次。Mosquitto是一个开源的MQTT消息代理服务器。MQTT是一个轻量级的、基于发布/订阅模式的消息传输协议。 mosquitto的安装使用比较简单,可以方便的来进行一些测试。_linux mosquitto
文章浏览阅读7.2k次,点赞2次,收藏12次。Linux中,用于根目录下有一个.ssh目录,保存了ssh相关的key和一些记录文件。_~/.ssh/
文章浏览阅读4.5k次,点赞5次,收藏18次。首先需要安装 snmp ,使用下面的命令进行安装安装完毕之后,使用下面的命令查看是否安装成功当命令行显示如图即为安装成功。_snmp工具