1. Ubuntu 中 NTP 的重要性
什麼是 NTP?
NTP(Network Time Protocol)是一種透過網路同步電腦系統時間的協定。維持系統的準確時間對於日誌一致性、交易處理以及網路通訊的準確性至關重要。如果時間不同步,可能會導致網路錯誤或數據不一致,對伺服器的運行尤為重要。
在 Ubuntu 中,推薦使用 chrony
,即使在網路不穩定的環境中也能實現準確的時間同步。此外,Chrony 因其低延遲和快速同步特性,非常適合伺服器和客戶端環境。
2. NTP 的設定方法
安裝與設定 Chrony
Chrony 是 Ubuntu 18.04 及之後版本的標準 NTP 客戶端。以下步驟將說明如何安裝 Chrony 並使用 NTP 伺服器進行時間同步設定。
安裝步驟
sudo apt update
sudo apt install chrony
接下來,啟動 Chrony 服務並設定為開機自動啟動。
sudo systemctl start chrony
sudo systemctl enable chrony
設定檔位於 /etc/chrony/chrony.conf
。若使用鄰近台灣的 NTP 伺服器,可設定如下:
server time.stdtime.gov.tw iburst
server 0.asia.pool.ntp.org iburst
server 1.asia.pool.ntp.org iburst
server 2.asia.pool.ntp.org iburst
iburst
選項會在首次連線時快速進行同步。
3. NTP 伺服器的最佳化與選擇
使用 NTP Pool Project
NTP Pool Project 提供全球各地的 NTP 伺服器,並根據地區提供最佳伺服器。設定多個 NTP 伺服器可以提高可靠性,即使其中一個伺服器停止運行,其他伺服器仍可作為備援。
以下的設定範例使用鄰近台灣的伺服器:
server time.stdtime.gov.tw iburst
server 0.asia.pool.ntp.org iburst
server 1.asia.pool.ntp.org iburst
server 2.asia.pool.ntp.org iburst
4. 時區設定
使用 timedatectl
指令
Ubuntu 的預設時區為 UTC,可以透過以下指令將時區更改為台北標準時間(CST):
sudo timedatectl set-timezone Asia/Taipei
更改後,可使用以下指令確認目前的時區設定:
timedatectl
5. 疑難排解
NTP 無法同步時的對應方法
檢查防火牆設定
NTP 使用 UDP 通訊埠 123,但該埠可能會被防火牆封鎖。可以使用以下指令開放 123 埠:
sudo ufw allow 123/udp
檢查 False-ticker
使用 ntpq -p
指令檢查 NTP 伺服器是否正常運作。若某些伺服器被標記為 x
,表示其提供的時間可能不準確,應選擇其他伺服器或修正設定。
Stratum 16 錯誤
當 NTP 伺服器無法與上層伺服器同步時,會發生 Stratum 16 錯誤。此錯誤表示伺服器連線或網路設定有問題,應檢查設定並改用其他可靠的伺服器。
手動同步時間
若需要手動同步時間,可以使用以下指令:
sudo ntpdate time.stdtime.gov.tw
此外,也可以透過檢查 Chrony 的日誌來找出同步問題:
sudo journalctl -u chrony
6. 高負載環境下的 NTP 最佳化
調整 minpoll
和 maxpoll
在需要高精度時間同步的環境中,可以調整 NTP 的輪詢間隔,以增加同步頻率並將時間誤差降至最低。以下設定是提升同步頻率的範例:
server time.stdtime.gov.tw iburst minpoll 4 maxpoll 10
使用 Juju 管理 NTP
在大型雲端環境中,可以透過 Juju 自動管理 NTP 服務。Juju 會自動監控各主機的負載,並選擇最佳主機作為 NTP 伺服器。以下指令可用於部署 Juju 管理的 NTP:
juju deploy cs:ntp ntp
juju config ntp auto_peers=true
此方法可自動化 NTP 管理並分散負載,確保高效的時間同步。
7. 強化安全性
NTP 伺服器的存取控制
為了提高安全性,可以限制 NTP 伺服器的存取權限,僅允許特定 IP 地址或網段連線。在 /etc/chrony/chrony.conf
中新增以下設定:
allow 192.168.1.0/24
此設定可防止外部未授權的 NTP 請求,提高內部網路的安全性。