如何在 Linux 上設定時間同步
在 Linux 系統的管理與開發中,時間同步(Time Synchronization)絕對是一個常被忽視卻至關重要的環節。無論是日誌分析、資料庫事務處理,還是分布式系統的節點協調,精準且一致的時間都是確保系統穩定運行的基石。當伺服器時間出現偏差,不僅會導致 SSL/TLS 憑證驗證失敗,更可能引發難以追蹤的邏輯錯誤。
過去,我們習慣使用 ntpdate 或 ntpd 來處理時間同步,但隨著 systemd 的普及,現代 Linux 發行版(如 Ubuntu 22.04 和 Debian 12)已預設採用 systemd-timesyncd 服務。本文将帶領您了解如何檢查、設定並驗證這個現代化的時間同步機制,確保您的伺服器始終保持準確。
了解預設的時間同步服務
在 Ubuntu 22.04 和 Debian 12 中,systemd-timesyncd 是一個輕量級的時間同步客戶端。它的主要優點在於啟動速度快、資源佔用低,並且能自動配置預設的 NTP 伺服器(通常是公共 NTP 池)。對於大多數單一伺服器或小型集群環境來說,這已經足夠使用。
首先,讓我們確認目前系統是否正在運行該服務。您可以在終端機中輸入以下指令:
systemctl status systemd-timesyncd
如果輸出結果顯示 active (running),表示服務正在運作。若顯示 inactive 或 dead,則需要手動啟動並啟用該服務:
sudo systemctl enable --now systemd-timesyncd
enable 參數確保伺服器重啟後服務自動啟動,--now 則立即啟動服務而不需重新啟動系統。
檢查當前時間同步狀態
了解服務是否運行後,下一步是確認它是否成功與上游時間伺服器同步。您可以使用 timedatectl 指令來查看詳細狀態:
timedatectl
在輸出結果中,請特別關注以下幾行資訊:
- System clock synchronized: yes:這表示系統時間已經與 NTP 伺服器同步。
- NTP service: active:確認 NTP 服務處於活躍狀態。
- Local time 與 Universal time:確認顯示的時間是否正確。
如果 System clock synchronized 顯示為 no,這通常意味著系統尚未與伺服器建立連接,或者網路阻擋了 UDP 123 端口的通訊。您可以嘗試執行 sudo systemctl restart systemd-timesyncd 來強制重新連接。
自訂 NTP 伺服器
雖然預設的公共 NTP 伺服器在大多數情況下都能正常工作,但在企業環境或對時間精度要求較高的場景中,您可能希望指定特定的內部時間伺服器或更可靠的公共池。
設定檔位於 /etc/systemd/timesyncd.conf。您可以使用編輯器打開它:
sudo nano /etc/systemd/timesyncd.conf
在檔案中,找到 [Time] 區塊,取消註解並修改 NTP 參數。您可以填入多個伺服器,以逗號分隔。例如:
[Time]
NTP=time.google.com time.cloudflare.com
FallbackNTP=ntp.ubuntu.com
設定完成後,記得重新啟動服務以套用變更:
sudo systemctl restart systemd-timesyncd
之後再次執行 timedatectl,您可以透過觀察同步狀態的變化來確認新的伺服器是否已被採用。
常見問題與排除
1. 時間同步失敗,顯示 "System clock synchronized: no"
這是最常見的問題。主要原因通常有兩點:
- 網路防火牆阻擋:確保您的伺服器允許對外發送 UDP 123 封包。如果您處於公司內部網路,可能需要聯繫網管人員開放此端口。
- 時區設定錯誤:雖然這不直接影響同步,但錯誤的時區會導致顯示時間與預期不符。請使用
timedatectl list-timezones查看可用時區,並使用timedatectl set-timezone Asia/Taipei進行設定。
2. 系統時間跳動或嚴重偏差
如果系統時間與伺服器時間相差過大(通常超過 1000 秒),systemd-timesyncd 可能會拒絕進行平滑調整,導致同步失敗。在這種情況下,您可以手動強制設定時間作為臨時解決方案,但請務必確認源頭正確:
sudo timedatectl set-time "YYYY-MM-DD HH:MM:SS"
注意:這只是手動修正,長期解決方案仍需確保網路連接正常,讓 NTP 服務自動校正。
小結
設定 Linux 時間同步並不複雜,特別是在現代發行版中,systemd-timesyncd 已經將複雜的設定隱藏在背後。對於大多數使用者而言,預設設定已足夠強大且穩定。只需透過 timedatectl 輕鬆監控狀態,並在必要時調整 NTP 伺服器來源,即可確保您的系統時間始終精準可靠。
記住,時間是系統管理的隱形支柱。定期檢查時間同步狀態,應成為系統維護例行工作中的一環,以預防潛在的效能與安全性問題。