在Ubuntu上的NTP設定與最佳化指南|實現精準時間同步與安全性強化

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 最佳化

調整 minpollmaxpoll

在需要高精度時間同步的環境中,可以調整 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 請求,提高內部網路的安全性。