我有一个独特的离线 LAN。它包含两台从同一来源获取时间的服务器。它们不通过互联网获取时间源。它们从应用程序层接收时间。我相信它们的时间。我有一个客户端,当我将其插入网络时,它应该会同步到它们的时间。这三台设备都运行 Windows 10 LSTC。我开始学习如何在操作系统内唤醒 NTP 服务。我进行了认真的故障排除,以了解开始工作的最低配置设置。我一直在使用由三台设备组成的测试环境。对于我的测试环境,我手动设置了作为服务器的两个设备上的时钟。因此,这两个设备在几周内出现了自然漂移,这就是我的问题所在。
在服务器上,组策略设置为未配置。
註冊
W32Time/TimeProviders/NTP 服务器/已启用 = 1
W32 时间/参数/类型 = NTP
W32Time/config/announceFlags = 5(十六进制)
故障排除后,这是我能够同步到其中一个服务器所需的最低配置。我在网上读到一些资料后设置了一些其他设置,但我发现这就是所需的全部。
从客户端来看
根据组策略,
NTP 客户端已启用。
配置 NTP 客户端也已启用,我正在其中指定要同步的 IP 地址。
我可以在配置 NTP 客户端下为客户端服务器 1 提供 IP 地址 0x8,然后它就会同步。
然后我可以将其更改为 Server2 IPAddress,并且它也会同步。
以上所有内容现在都让我想到了我的问题。当我将其配置为具有两个 IP 地址 [Server1 IP 地址,0x8 Server2 IP 地址,0x8] 时,客户端将不再同步,并且 W32tm /query /status 显示 CMOS 时钟。W32tm /query /peers 显示它有 2 个对等点。但是,当我执行 W32tm /resync 时,我会收到一条回复,说“时钟无法同步,因为没有可用的时间数据”。当我跳下那个兔子洞时,除了我的具体问题之外,我发现了太阳底下的一切。我尝试了所有 32 个命令,例如停止时间、取消注册、重新注册开始时间等等。什么都不起作用。当我在几分钟后关闭其中一台服务器时,它会开始与剩下的那台服务器一起沉没。我的具体问题不喜欢我给它 IP 地址。到此时,我的测试环境服务器已经漂移了大约 4 到 5 分钟。我花了整整一周的时间,想出了一个主意,将一台服务器的时间设置得更接近另一台服务器。现在我的服务器相隔大约 10 秒,一切都奇迹般地开始正常工作。
抱歉,我写得有点长,但我想详细说明一下我的情况。今天最后一个小时一切都很顺利。服务器之间的时间漂移真的是我的问题吗?当我想到在真实环境中,多台服务器会非常接近。当我给我的客户端两个 IP 地址,它联系了接收器,而这两个服务器在时间上不一致时,这是否迫使我的客户端决定它不能依赖这些源,而会自动切换到自己的 CMOS 时钟?
由于我对这个话题还很陌生,所以提前感谢您提供的任何建议。
答案1
不建议仅使用两个 NTP 服务器。
“戴手表的人知道现在几点,戴两块手表的人永远不知道时间”。
如果多个 NTP 服务器是必需的,三人是法定人数的最低要求,但在实践中建议使用四个 NTP 服务器以实现冗余并防止出现错误的时间源或“falseticker”。请参阅https://support.ntp.org/Support/SelectingOffsiteNTPServers#Upstream_Time_Server_Quantity
如果你只列出一个,那么就不会有哪个问题被认为是“正确”或“错误”的问题。但如果那个问题被解决,你就完蛋了。
如果使用两个,则无法判断哪一个更好,因为您没有其他参考来比较它们。
这实际上是最糟糕的配置——您最好只使用一个上游时间服务器,如果上游服务器死机或无法访问,则让时钟自由运行。有了三台服务器,您就拥有了允许 ntpd 检测某个时间源是否为“falseticker”所需的最少时间源数量。但是 ntpd 随后将不得不从剩余的两个源中进行选择。此配置不提供冗余。
如果至少有四个上游服务器,其中一个(或多个)可以是“falseticker”,或者只是无法访问,则 ntpd 将有足够数量的源可供选择。