根据可用连接更改 NTP 服务器

根据可用连接更改 NTP 服务器

请参考插图。

我在 LAN 上有两台机器,其中只有一台具有 Internet 连接(通过不同的接口)。服务器 1 有一个垃圾硬件时钟。服务器 2 有一个良好的硬件 RTC。

不幸的是,服务器 1 通常具有 Internet 连接,而具有良好硬件 RTC 的服务器则没有,因此根据 Internet 连接状态,服务器 1 要么是最准确的,要么是非常不可靠的。

两台机器保持密切同步至关重要。

是否有可能通过对每台机器的层进行自动调整,让系统自动从场景 1 失败到场景 2?

场景 1 与场景 2

答案1

首先,你极不可能被允许访问阶层1服务器,除非您为 Stratum 1 服务器管理员所知并且他们明确授予您这样做的权限。话虽如此,该服务器的层数对于这个答案并不重要,因此为了清楚起见,我将该机器称为“低层”服务器。

您应该配置server2为从低层服务器获取时间,而不是从server1.这将要求它能够(至少对于 NTP)访问 上的 Internet 链接server1。如果server2没有能够访问低层服务器的互联网链接,那么您可以通过server1(以 root 身份)运行以下命令来允许它这样做:

iptables -A FORWARD -s server2 -p udp --dport 123 -j ACCEPT
iptables -A FORWARD -s server2 -p tcp --dport 123 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sysctl -w net.ipv4.ip_forward=1

前两行允许来自主机的 NTP 流量server2 仅有的。注意:我不能 100% 确定是否需要 TCP 连接,但这应该不会有什么坏处。您可能还想添加-d lowstratumserver这两行,以便该计算机无法访问任何其他服务器(仅是低层服务器)。下一行允许从已建立的连接返回流量。第四行启用网络地址转换。最后一行启用 IP 数据包转发。有了这些,server1现在就是一个(最小的)路由器。

如果server2没有server1默认路由器,您还需要为低层服务器添加显式路由:

ip route add lowstratumserver via server1

这样,server2将用作server1其网络连接的路由器lowstratumserver,并用作其他一切的常规路由器。

然后,配置server2使用Internet上的低层服务器作为其NTP源,而不是server1

最后,进行配置server1,使其连接到server2,而不是 Internet 上的 Stratum 1 服务器。

现在server2与 Internet 上的低层服务器同步,而不是与server1;并将始终server1同步server2,无需添加故障转移设置(这充其量也很脆弱)。

由于额外的跃点,这会稍微降低准确性,但将本地网络上的计算机同步到具有良好硬件 RTC 的计算机总是比与具有低质量 RTC 的计算机同步要好。

相关内容