Ubuntu

為什麼 ntpd 不更新我伺服器上的時間?

  • July 2, 2019

我的伺服器上正在執行 ntpd。這是所有預設設置,除了我註釋掉它成為其他機器的伺服器的能力:

# restrict -4 default kod notrap nomodify nopeer noquery                                                                    
# restrict -6 default kod notrap nomodify nopeer noquery   
restrict default ignore

如果我跑步ntpdate -q ntp.ubuntu.com,我會被告知我的機器時鐘延遲了 7 秒。

這是怎麼回事?我如何診斷正在發生的事情,是否有可以打開的日誌?

更多資訊#1

# ntpq -np
    remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
91.189.94.4     193.79.237.14    2 u   30   64    7  108.518   -0.136   0.361

更多資訊#2

這是我問這個問題時的樣子:

# ntpdate -q ntp.ubuntu.com
server 91.189.94.4, stratum 2, offset 7.191308, delay 0.13310
10 Jan 20:38:09 ntpdate[31055]: step time server 91.189.94.4 offset 7.191308 sec

這是它現在的樣子,在重新啟動 ntpd 幾次之後(我假設這就是修復它的原因):

# ntpdate -q ntp.ubuntu.com
server 91.189.94.4, stratum 2, offset 0.000112, delay 0.13164
10 Jan 20:47:03 ntpdate[31419]: adjust time server 91.189.94.4 offset 0.000112 sec

更多資訊#3

我解除安裝了 ntp 並安裝了 openntpd 並執行了/usr/sbin/ntpd -d,我看到這樣的輸出:

reply from 64.73.32.134: offset 6.715003 delay 0.041152, next query 30s
reply from 208.53.158.34: offset 6.700224 delay 0.036263, next query 31s
adjusting local clock by 6.734120s
reply from 72.18.205.156: offset 6.708575 delay 0.035885, next query 30s
reply from 64.73.32.134: offset 6.701463 delay 0.044199, next query 33s

這對我來說非常清楚地表明我無法在我的伺服器上設置時間(儘管使用正常 ntp,它似乎有時會更新……)。

更多資訊#4

我的 VPS 提供商說:

最新的核心不應將您的系統鎖定到我們 dom0 的時鐘,為了安全起見,您可以在 sysctl.conf 中設置 xen.independent_wallclock = 1。

我想這仍然沒有解決 VPS 需要可用 CPU 才能進行正確的時序計算的問題。

好吧,伙計們,自從提出這個問題以來,我已經使用預設供應商(Ubuntu 10.0.4)配置重新安裝了 ntp 並讓它執行了幾天。在撰寫本文時,ntpdate -q ntp.ubuntu.com表明我的時間精確到 0.000216 秒以內。所以,我遇到的問題一定是我的自定義配置(我試圖讓外部主機無法查詢我的伺服器,我已經在用我的防火牆做這件事,所以我不太擔心)。這是 Ubuntu 10.0.4 ntp.conf 的完整內容,已刪除註釋:

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

server ntp.ubuntu.com

restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery

restrict 127.0.0.1
restrict ::1

我歡迎有關如何改進此配置的回饋。

我還向我的 VPS 提供商開了一張票,要求他們詳細推薦最佳做法。我將他們指向這個執行緒,以及一些其他文件表明 CPU 分配可能會導致計時問題。他們是這樣說的:

最新的核心不應將您的系統鎖定到我們 dom0 的時鐘,為了安全起見,您可以在 sysctl.conf 中設置 xen.independent_wallclock = 1。這將確保伺服器實例不遵循主機伺服器上的時鐘。

和:

我認為您可能誤解了此問題在虛擬化環境中影響 NTP 客戶端的確切程度。根據我在 Xen 主機上的虛擬化系統(例如我們在 Rackspace Cloud 上的設置)的經驗,即使在高負載系統上,由於沒有專用系統時鐘來處理中斷,所繼承的不准確性也只有幾分之一秒。這種輕微的不准確性很容易被 NTP 管理,即使它只設置為每天更新一次伺服器時間(或者甚至比這更不頻繁)。

您可以通過將其添加到 ntp.conf 來啟用登錄 ntpd:

logfile /var/log/ntpd.log

來源:ntp手冊

如果關閉ntpd,可以通過命令行更新時鐘嗎?如果您執行 ntpdate 命令並收到如下錯誤:

# ntpdate ntp.ubuntu.com
10 Jan 23:47:57 ntpdate[26284]: Can't adjust the time of day: Operation not permitted

這意味著您可能在 VPS 上,在這種情況下您不能修改系統時鐘 - 這只能在主機上完成。

引用自:https://serverfault.com/questions/220836