根據可用連線更改 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 的電腦同步要好。

相關內容