Ntp

為什麼 NTP 同步到本地伺服器而不是遠端伺服器?

  • February 9, 2022

所以,我正在嘗試調試我目前的 NTP 設置,發現他從我的單個配置伺服器的偏移量超過 3 秒,並且沒有調整。ntpq 輸出中 LOCAL(0) 上的星號似乎表明系統正在愉快地與自身同步,而不是 10.130.33.201 伺服器(這是我們系統上的另一個 linux 機器,我們希望一切都同步到)。

ntpq -p
    remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
10.130.33.201   LOCAL(0)         9 u   49   64  377    0.242  -3742.2   1.049
*LOCAL(0)        .LOCL.          10 l    2   64  377    0.000    0.000   0.001

這是我的 ntp.conf 文件。由其他人撰寫,所以我不能 100% 確定一切都是正確的。

server 10.130.33.201 burst iburst minpoll 4 maxpoll 11
driftfile /mnt/active/etc/ntp.drift

restrict -4 default  nomodify nopeer notrap
restrict -6 default  ignore

# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 10

我已經閱讀了有關 burst 和 iburst 和 minpoll/maxpoll 的資訊,所以我意識到可能不需要這些,但我認為這與我目前的問題沒有任何關係。

此外,由於它的部署方式,該配置文件將需要大量工作才能更改,所以我希望沒有什麼真正必須更改的。我希望這是我不了解 NTP 如何工作的情況。


編輯 -

所以,看起來這是This question的副本,但我不覺得張貼者得到了足夠的答案,所以我仍然想知道為什麼本地時間比伺服器更受歡迎。另外,根據以下答案之一,我嘗試prefer在配置的伺服器行上使用關鍵字並重新啟動,但這似乎沒有效果。

如果我確實刪除了配置中的所有“本地”行作為另一個問題的答案,那麼如果伺服器無法訪問會發生什麼?NTP 會死掉還是繼續嘗試?


重要編輯——

好的,通常情況下,10.130.33.201(“伺服器”)無法訪問網際網路,也沒有可使用的 GPS 時間源。重要的部分是系統上的所有設備都與伺服器具有相同的時間,無論該時間實際上有多正確。

因此,為了看看會發生什麼,我將其中一個 NTP 池伺服器添加到伺服器的配置文件中,這樣它就可以從那裡獲取時間,而不是從本地獲取時間。它現在可以正確地從 NTP 時間伺服器獲取時間。

在我這樣做之後,客戶端現在與伺服器同步,而不是更喜歡 LOCAL(0)

ntpq -p
    remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*10.130.33.201   38.229.71.1      3 u   58   64  377    0.216  715621.   1.001
LOCAL(0)        .LOCL.          10 l   18   64  377    0.000    0.000   0.001

新問題 - 當我的伺服器使用本地(給出的原始範例)時,客戶端似乎在說,“哦,10.130.33.201 正在使用 LOCAL(0)。嗯,我也有一個 LOCAL(0) 伺服器 - - 我將直接使用它,而不是通過 10.130.33.201" 獲取相同的資訊。

是這樣嗎?他們是否試圖“直接找到源頭”,而這不是正確的 LOCAL(0)?我需要我的伺服器從 LOCAL(0) 獲取時間,我需要客戶端從伺服器獲取時間。現在從客戶端配置文件中刪除“本地”伺服器是唯一的選擇,但我想了解為什麼會發生這種情況,如果可能的話,避免更改他們的配置(配置更改將是很多工作,因為我們的環境…)。

此外,看起來像是另一個沒有好的答案的副本。

僅配置了一個 NTP 伺服器,該算法並不完全確定該信任誰。儘管遠端主機的層數較低,但我敢打賭該算法認為本地時間更值得信賴。

嘗試在prefer您的語句中使用關鍵字將server其設置為優先時間源。


編輯 -

所以,看起來這是 This question 的重複,但我覺得海報沒有得到足夠的答案,所以我仍然想知道為什麼本地時間比伺服器更受歡迎。

要獲得真正充分的答案,您將深入研究一個非常複雜的算法。文件甚至沒有具體,但我確信那裡有白皮書或規範。

如果我確實刪除了配置中的所有“本地”行作為另一個問題的答案,那麼如果伺服器無法訪問會發生什麼?NTP 會死掉還是繼續嘗試?

NTP 守護程序不會死亡或停止,但它會在無法到達遠端伺服器後退出同步時間。這就是為什麼最佳實踐會建議至少三個遠端伺服器並且除非您與網路斷開連接,否則不要使用 LCL。建議三台伺服器,因為當只有兩台時,他們不同意,它會選擇哪台?第三台伺服器應該幫助算法消除虛假伺服器。

最後,我剛剛注意到您沒有定義driftfile. 這可能有幫助嗎?

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