
答案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 的電腦同步要好。