是否可以配置ntpd
来伪造网络源的层级?
乍一看,我认为该fudge
指令可以完成此操作,但是在浏览ntp.conf(5)
手册页后,我发现该指令仅适用于参考时钟。
一些细节:
我有一个本地服务器ntpd
作为 LAN 上客户端的主要时间源运行。该服务器指向 ntp.org 池,通常保持层级 3。
除了我的主服务器之外,我还有一个 3rd 方网络设备,其主要工作是通过无线同步挂钟。射频传输。该设备的规格说明它是“符合 RFC2030 的时间服务器”,但除此之外它几乎是一个黑匣子。我已将设备配置为使用我的主服务器,因为它是唯一的时间源:
黑盒配置 http://www.freeimagehosting.net/uploads/21bafb12bd.png
当我ntpd
在个人计算机上配置使用我的主 NTP 服务器和无线发射器作为时间源时,我的问题就出现了。在查询我的本地 ntpd 时,我注意到“黑匣子”(10.xxZ)是首选的时间源:
$ ntpq -pn
remote refid st t when poll reach delay offset jitter
==============================================================================
x10.x.x.X 69.164.222.108 3 u 48 64 177 0.501 370.029 1.530
*10.x.x.Z 10.x.x.Z 2 u 50 64 377 1.354 -23.681 14.179
Run Code Online (Sandbox Code Playgroud)
由于 server10.x.x.Z
唯一的时间源是server 10.x.x.X
(它是第 3 层),所以它应该是第 4 层。我相信制造商已经对其层级进行了硬编码。
有没有办法让我的机器偏向于“好”(10.xxX)服务器,尽管它的层级更高?我也在prefer
本地ntp.conf
文件中尝试了该指令,但无济于事,小黑盒总是获胜:/
值得一提的是,我的本地机器运行的是 Mac OS X 10.6。
$ ntpq -c rv | grep version
version="ntpd 4.2.4p4@1.1520-o Mon May 18 19:38:25 UTC 2009 (1)",
Run Code Online (Sandbox Code Playgroud)
经过更多研究,似乎不可能“捏造”网络资源的层级。所以我继续前进并尝试了dtoubeli 的回答。令我惊讶的是,简单地将我的本地时间服务器设为第 2 层(等于第 3 方设备)并不总是使其成为首选时间源。我的本地 ntpd 仍然将它们都视为“假滴答声”。出于什么原因,我不确定,但我猜是因为它们是仅有的两个时间源,而且它们的时间相距甚远。
这里最大的问题是我的第 3 方设备似乎没有非常一致的时间,实际上它波动很大。我的问题的解决方案是将其他几个准确的时间源(pool.ntp.org)添加到我的/etc/ntp.conf
. 现在,我的本地服务器始终被选为首选时间源,尽管其层级通常高于池中的某些服务器。