ntpd 伺服器在由主機名定義時停留在初始化狀態,但在由 IP 地址定義時正確同步
我開始在我們的幾個託管伺服器上遇到問題,這引起了相當多的頭疼。
我被警告在幾台伺服器上出現時鐘偏差,當我去調查 ntpq -=p 時顯示以下內容:
remote refid st t when poll reach delay offset jitter ============================================================================== ntp1.hetzner.de .INIT. 16 u - 64 0 0.000 0.000 0.000 ntp2.hetzner.de .INIT. 16 u - 64 0 0.000 0.000 0.000 ntp3.hetzner.de .INIT. 16 u - 64 0 0.000 0.000 0.000
很明顯,伺服器無法聯繫其 ntp 伺服器。但是,它的姊妹伺服器沒有這樣的問題,所以我認為問題出在伺服器上。可能是 IPtables 中的錯誤配置。但是不,IPtables 配置正確。重新啟動 ntpd,等了幾分鐘,但 ntp 伺服器仍處於 INIT 中。作為支票,我跑了
ntpdate ntp1.hetzner.de
我得到了時間伺服器的響應!不解,我為 UDP 123 流量啟動了一個 tcpdump 並重新啟動了 ntpd。沒有數據包。不是一個。即使過了一個小時。然而,如果我停止 ntp 並執行 ntpdate,我會看到數據包通過線路傳輸到時間伺服器沒有問題。
因此,我嘗試將時間伺服器的 IP 地址放入 ntp.conf 中,然後我立即同步
remote refid st t when poll reach delay offset jitter ============================================================================== ntp1.hetzner.de .INIT. 16 u - 64 0 0.000 0.000 0.000 ntp2.hetzner.de .INIT. 16 u - 64 0 0.000 0.000 0.000 ntp3.hetzner.de .INIT. 16 u - 64 0 0.000 0.000 0.000 *ntp1.hetzner.de 192.53.103.103 2 u 23 64 1 2.856 -2.246 0.016 ntp2.hetzner.de 192.53.103.103 2 u 22 64 1 0.246 -2.174 0.019 ntp3.hetzner.de 192.53.103.108 2 u 21 64 1 0.262 -1.282 0.037
該輸出中有六台伺服器,因為我在 ntp.conf 中附加了伺服器 IP 地址
所以我很難過。ntpd 中是否有一些奇怪的 DNS 問題,或者我在配置中做了一些愚蠢的事情?本機是Debian 7.8,ntpd版本是4.2.6p5
我的 ntp 配置現在如下:
driftfile /var/lib/ntp/ntp.drift statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable restrict -4 default kod notrap nomodify nopeer noquery restrict -6 default kod notrap nomodify nopeer noquery restrict 127.0.0.1 restrict ::1 server ntp1.hetzner.de iburst server ntp2.hetzner.com iburst server ntp3.hetzner.net iburst server 213.239.239.164 iburst server 213.239.239.165 iburst server 213.239.239.166 iburst
我在 Hetzner 有一些伺服器,安裝映像中的預設 ntpd 配置將使用 IPv6 與 Hetzner 提供的 ntp 伺服器通信。
鑑於您在輸出中看到重複條目,我強烈懷疑您的 ntpd 已將這些主機名解析為 IPv6 地址而不是 IPv4 地址。您可以通過使用
-n
標誌來驗證這一點ntpq
,這樣它將顯示 IP 地址而不是主機名。配置 ntpd 以使其同時使用一些 IPv4 地址和一些 IPv6 地址作為時間源沒有任何問題。我什至會說這是一個很好的做法。因此,我不會說您的 ntpd 配置有任何問題。
但是,我確實懷疑您的 IPv6 配置中有錯誤配置,這就是您應該解決的問題。