NTP (Network Time Protocol) 讓網路中所有 Linux 主機與權威時間源同步,確保日誌時間戳一致、Kerberos 驗證正常、資料庫複寫有序、分散式追蹤準確。本文涵蓋 NTP 伺服器端 `/etc/ntp.conf` 詳細配置、啟動驗證、用戶端同步測試全流程。
| 檔案路徑 | 用途 |
|---|---|
| /etc/ntp.conf | NTP 服務主設定檔 (不同發行版路徑可能異,如 /etc/ntpsec/ntp.conf) |
| /usr/share/zoneinfo | 時區定義檔庫,/usr/share/zoneinfo/Asia/Taipei 為台灣時區 |
| /etc/sysconfig/clock | 系統時區設定 (舊版 RedHat/CentOS),新版用 timedatectl |
| /etc/localtime | 本地時間設定檔 (通常為 zoneinfo 檔案的複製或符號連結) |
# 忽略註解行
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
server 0.rhel.pool.ntp.org
server 1.rhel.pool.ntp.org
server 2.rhel.pool.ntp.org
server 127.127.1.0 # 本地時鐘 (Local Clock) 作為後備
fudge 127.127.1.0 stratum 10 # 將本地時鐘層級設為 10 (低優先序)
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys
kod:Kiss-o'-Death 封包,率限制濫用客戶端。nomodify:客戶端不可修改伺服器設定 (時間參數),但可進行網路校時。notrap:不提供控制訊息陷阱。nopeer:不允許對等模式關聯。noquery:不提供 `ntpq`/`ntpdc` 查詢 (資訊洩露防護)。
# /etc/ntp.conf 修改後內容
restrict default kod nomodify notrap nopeer noquery
# restrict -6 default ... (若無 IPv6 可註解)
restrict 192.168.8.0 mask 255.255.255.0 nomodify # 允許內網 192.168.8.0/24 同步,不可修改
restrict 127.0.0.1
# 上層時間源 (至少 3 台,建議混合公共/內部)
server 192.168.8.70 # 內部 GPS/原子鐘 NTP 伺服器
# server 0.pool.ntp.org # 公共池備用
# server 1.pool.ntp.org
# server 2.pool.ntp.org
server 127.127.1.0 # 本地時鐘後備
fudge 127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
systemctl restart ntpd (或 /etc/init.d/ntpd restart)watch ntpq -pntpdate 192.168.8.70adjust time server 192.168.8.70 offset -0.000031 sec → 成功同步。date ↔ 用戶端 date 差異 < 0.5 秒即合格。| 現象 | 原因與對策 |
|---|---|
| ntpdate 回傳 "no server suitable for synchronization found" | NTP 服務剛啟動,尚未完成與上層同步 (需 5~10 分鐘)。等待 `ntpq -p` 中 reach 達 377 後再測試。 |
| 防火牆阻擋 UDP 123 | 伺服器/用戶端雙向開放 UDP 123:`firewall-cmd --add-service=ntp --permanent && firewall-cmd --reload` |
| 時間偏移過大 (>1000s) 導致拒絕同步 | 先手動 `ntpdate -b |
| 虛擬機時間漂移 | 關閉宿主機時間同步 (VMware Tools/Hyper-V Integration Services),讓客體獨立運行 NTP。 |
建立內部 NTP 階層架構 (Stratum 1 GPS/原子鐘 → Stratum 2 內部主 NTP → Stratum 3 部門 NTP → 客戶端) 是企業級時間同步最佳實務。配置 `/etc/ntp.conf` 關鍵在於:**精準 restrict 存取控制、多源上層 server、本地時鐘低優先序後備、driftfile 記錄頻率漂移**。配合 `ntpq -p` 持續監控 reach/offset/jitter,即可維持全網時間精準一致。