NTP 同步失敗,但在 Windows 10 上可以存取 NTP 伺服器

NTP 同步失敗,但在 Windows 10 上可以存取 NTP 伺服器

我無法在 Windows 10 中同步時鐘。

當在控制面板中請求同步時,或透過w32tm /resync我的電腦發送一些 NTPv3 封包到pool.ntp.org(我手動設定該伺服器,但我使用哪個伺服器並不重要)並且沒有得到回應。

但是,如果我w32tm /monitor /computers:pool.ntp.org這樣做,它會起作用,並且我可以在 Wireshark 中看到我的電腦發送 NTPv1 封包並獲得回應。

但是,如果我將電腦連接到手機的行動熱點,則可以透過 NTPv3 進行時間同步。此外,與我的 Windows 10 位於同一網路上的另一台 Linux 電腦可以毫無問題地同步(並且我看到它使用 NTPv4)。

我努力了:

  • 重新啟動 Windows 時間服務
  • 重設 Windows 時間服務
  • 在路由器防火牆中開啟連接埠 123
  • 更改 DNS 設定(我使用 DNS-over-TLS)

並且還沒有讓它發揮作用。

我的路由器採用雙 NAT 設定(即互聯網 - 另一個我無法控制的路由器 - 我的路由器 - 我的電腦),這可能會導致 NTP 問題,但我不明白我的 Linux 筆記型電腦如何同步。

編輯1:

帶有回應的 NTP 封包 帶有回應的 NTP 封包

NTP 封包無回應 NTP 封包無回應

答案1

正如評論中所討論的,差別Windows 中的 W32time 服務以「對稱」模式使用 NTP 連接埠號,其中目標和來源連接埠號碼為 123,即使它純粹作為客戶端運行並且未設定為對稱對等點工作(它具有該功能)。

這意味著無狀態防火牆無法區分入站回覆和入站查詢,因為它們都到達「到」連接埠 123,如果 ISP 有阻止您託管 NTP 伺服器的過濾器,它也會阻止您使用 NTP在此模式下工作的客戶端。

Linux NTP 軟體通常遵循協定規範,並在客戶端/伺服器模式下使用臨時來源端口,就像大多數其他 UDP 軟體一樣(123→123 純粹用於對稱模式)。同樣,該w32tm工具可以工作,因為它的監視器/條形圖選項導致它使用綁定到臨時連接埠的常規套接字產生自己的 NTP 查詢。

  • 如果您有一個始終在線的 Linux 或 BSD 系統,那麼您可以使用該系統作為您的內部 NTP 伺服器(只需很少的設定即可使 Chrony 或 ntpd 等作為中等品質的伺服器工作)。

    這也適用於 WSL2,因為它的核心時鐘並不嚴格與主機時鐘相關(據我所知)——應該可以在 WSL2 中運行 Chrony 作為 NTP 伺服器,並告訴它不要嘗試更新實時時鐘。

  • 如果您有任何可以透過 VPN 的地方,您也許可以使用 VPN 連線進行 NTP。

  • 第三方 Windows NTP 用戶端也應該可以工作 - 特別是如果本機連接埠 123 已被 W32time 佔用,那麼它們別無選擇,只能使用另一個本機連接埠。例如,網路時間看起來可能有用。

  • 非 NTP 協定的第三方用戶端也可以工作,因為它們不使用相同的 UDP 連接埠。準確性不如 NTP,但對於 PC 來說可能已經足夠了。例如,NIST 發布了其尼斯泰姆可以使用 NTP 以及較舊的 RFC-868 協定的客戶端。

相關內容