我正在一些设备上工作,我希望它们在网络连接中断时实现自同步(即使用chrony的漂移率计算来补偿系统时钟漂移),然后在远程连接可用时进行正常同步。
不幸的是,chronyd无法绑定到NTP侦听端口,并且主动尝试将数据包发送到NTP伪服务器地址,我很难确定这是否是预期的行为。
建议用于自同步的标准chrony.conf设置如下:
server 127.127.1.0 # Self-synchronise
allow 127.0.0.0/8 # NTP server for the local system, not just a client
local stratum 10 # Serve low quality time even when the remote link is down但是,当我使用该配置运行chrony sources时,它声称它没有与localhost的伪时间服务器同步:
chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^? 127.127.1.0 0 7 0 - +0ns[ +0ns] +/- 0ns尽管chrony tracking似乎确实表示它正在按预期工作:
$ chronyc tracking
Reference ID : 7F7F0101 ()
Stratum : 10
Ref time (UTC) : Mon Jun 04 08:27:11 2018
System time : 0.000000007 seconds fast of NTP time
Last offset : +3.297439098 seconds
RMS offset : 3.297439098 seconds
Frequency : 466.833 ppm slow
Residual freq : +0.000 ppm
Skew : 0.000 ppm
Root delay : 0.000000000 seconds
Root dispersion : 0.000000000 seconds
Update interval : 0.0 seconds
Leap status : Normal无论我如何调整配置文件中的allow设置,我都无法让chronyd在任何机器接口上显示为实际监听UDP端口123,而如果我成功地将其设置为充当时间服务器,则希望在netstat -ulnp中看到这一点。
更奇怪的是,如果我在strace -f下运行D12,我看到它实际上试图向127.127.1.0发送消息,尽管它应该知道这是本地时间同步的伪地址。
就目前情况而言,我对chrony实际上是在补偿远程连接中断时的时钟漂移缺乏信心,因为它很难引发这样一种情况,即它确实需要对时钟漂移进行自动校正。
因此,我的实际问题是:有人知道如何判断时间是否正确地设置为自同步时离线?或者我只需要像目前配置的那样部署它,然后等待并查看当设备与后端管理服务器断开连接时,时钟漂移是否有问题?
发布于 2018-06-05 06:47:19
我设法找到了这个问题:在我开始使用的现有配置文件中有一个无关的port 0行,因此allow行没有正确地设置本地时间服务器。删除这一行,一切都开始按我预期的方式进行。
这意味着我最初问题的答案是“做你所做的”:
sudo netstat -ulnp是否显示chronyd监听NTP端口(UDP 123)sudo chronyc sources是否将127.127.1.0显示为可用的源对我来说,这些检查失败的事实准确地反映了port 0设置不正确的事实。
发布于 2018-06-04 11:50:09
您可能希望根据https://chrony.tuxfamily.org/doc/3.3/chrony.conf.html网络中的内容来考虑Isolated上的信息。
有几个选项可以帮助配置pseodo时间。尤其是这个透视图对你来说可能很有趣:
如果没有合适的计算机指定为主计算机,或者要求即使客户端失败时也保持同步,则本地指令的孤立选项启用了从多台计算机中自动选择主计算机的特殊模式。它们都需要使用相同的本地配置并相互轮询。具有最小引用ID (基于其IP地址)的服务器将承担主服务器的角色,其他服务器将与其同步。当它失败时,具有第二个最小引用ID的服务器将接管,以此类推。
但是,正如我从文档中了解到的,需要几个服务器。
关于您的服务器看起来是同步的,也许这个场景可能适用于您:https://chrony.tuxfamily.org/faq.html#_电脑_是_不_同步
检查chronyc的
Reach命令打印的sources值。如果是零,这意味着the没有从您试图使用的NTP服务器获得任何有效的响应。
此外,手册还解释了local指令
<#>local…本地指令允许本地引用模式,该模式允许作为NTP服务器运行的时间同步显示为实时(从客户端轮询它的角度来看),即使从未同步或时钟的上一次更新发生在很久以前。
所以虽然这不是真的,但它可能会给你一段时间的时间
https://serverfault.com/questions/915055
复制相似问题