如何強製本地隔離ntpd更新時間

如何強製本地隔離ntpd更新時間

客觀的

我有本地隔離的主機。我希望他們都有同樣的時間。其中一個充當時間伺服器,其他則作為客戶端與其同步。

所有機器都有零星的正常運作時間。它們很少通電。因此他們可以獲得顯著的抵消效果。手動設定伺服器本地時間後,整個主機集應在幾分鐘內同步。

為了確認可靠性,我透過設定良好的手動調整(幾個小時)來測試 ntp 主機連接,並測量客戶端同步的速度。

ntpd - ntpd 案例

我嘗試使用恩特普德對於客戶端以及伺服器。恩特普德需要很長時間來調整時鐘。此外,它拒絕將時間倒回幾個小時。

如果可以修復,我更喜歡使用恩特普德作為客戶。因此,我正在尋找配置選項來暗示 ntpd 渴望接受網路時鐘更新。

但如果沒有辦法就業恩特普德,日期替代方案仍然可以接受。

ntpd - ntpdate 案例

日期毫不猶豫地完美更新時鐘。我把它放在一個 cron 任務中並得到了粗糙但有效的解決方案。不幸的是,第一印像是錯的。經過幾次測試後我注意到日期客戶端開始拒絕伺服器。由於某些原因,伺服器決定返回層 16 fudge 127.127.1.0 stratum 8ntp設定檔在伺服器端以避免這種確切的行為。但ntpdate-v-d輸出顯示從伺服器傳輸的“stratum 16”。

所以我看到兩種方法。要么強迫恩特普德無論本地時間跳躍還是強制,伺服器都會返回層 9日期客戶端接受任何伺服器,即使它有層 16。

我嘗試用​​谷歌搜尋任何一種方式,但一無所獲。有人可以建議合適的配置選項嗎?

答案1

ntpd所有人都使用一台時間伺服器。所有每天重新啟動的 PC 都可以透過命令在啟動時同步時鐘ntpdate。其他伺服器上的時鐘可以透過服務同步,ntpd因為它會軟調整時間。

對於主要 ntpd時間伺服器使用:

server 127.127.1.0 prefer
fudge 127.127.1.0 stratum 2
driftfile /var/lib/ntp/ntp.drift
restrict default nomodify notrust
restrict 127.0.0.0/8
disable auth
logfile /var/log/ntp.log

答案2

我的主要建議:不要這樣做。嘗試改變您的需求或約束,以便您可以擁有一個始終在線的系統,該系統可以作為時間源,或者使您的系統不被隔離並且可以從全域 NTP 池, 或兩者。

如今,您可以相當便宜地獲得具有 GPS 接收器的低功耗 NTP 伺服器。如果你喜歡 DIY,BeagleBones 和 Raspberry Pi 可以以不到 100 美元的價格製作成 NTP 伺服器,或者如果你想要現成的東西,請嘗試LeoNTP

下一個建議:如果ntpd更新時鐘需要很長時間,您可能需要檢查您的設定:

  1. 確保您使用的是-G命令列標誌;-g是某些 Linux 發行版上的預設設置,但它不會產生很大的後退。
  2. 確保您的所有伺服器/池都配置了iburst.
  3. 使用tinker step 0.5tinker panic 0來最大化ntpd修復大偏移的能力。
  4. 確保您的漂移檔案可寫入ntpd並且在關閉時正確保存。

第三個建議(我更喜歡這個ntpdate):嘗試chrony- 它對偶爾連接的客戶端(例如定期掛起的筆記型電腦)有明確的支援。手冊chrony.conf(5)頁包含有關此內容的所有詳細資訊。如果您使用的chrony是預設發行版(CentOS/Red Hat,以及 18.04 發布後的 Ubuntu),這可能是我的第二個建議。

最後建議:如果ntpdate將伺服器報告為層 16,則表示該伺服器有問題。嘗試發布伺服器的配置以及ntpq -np和的輸出ntpq -nc rv,以便我們可以幫助診斷它。

相關內容