熱門分類
載入中…
目錄0%

🐧 Linux NTP 時間同步服務教學:Chrony 與 systemd-timesyncd 設定全攻略

    🐧 Linux NTP 時間同步服務教學:Chrony 與 systemd-timesyncd 設定全攻略

    時間同步是所有系統與網路服務的底座——影響 憑證有效期日誌時間線叢集一致性安全事件追查。本文以 Chronysystemd-timesyncd 為主,提供「用作 NTP Client」與「建置 LAN 內部 NTP Server」的完整設定與排錯清單。

    📑 目錄

    一、Chrony vs systemd-timesyncd:怎麼選?

    • Chrony:功能完整,伺服器/客戶端 都能勝任,抖動修正快、支援離線後追趕,企業建議預設
    • systemd-timesyncd:輕量 NTP client(不提供 NTP 服務給他人),桌面/容器很夠用。

    二、NTP Client 設定(最短路徑)

    方案 A:使用 Chrony(建議)

    # Ubuntu/Debian
    sudo apt update && sudo apt install -y chrony
    
    # RHEL/Rocky/Alma
    sudo dnf install -y chrony
    
    # 設定上游(以 pool.ntp.org 為例;企業可改內部 NTP 主機)
    sudo sed -i 's/^pool .*/pool tw.pool.ntp.org iburst/' /etc/chrony/chrony.conf
    
    sudo systemctl enable --now chronyd
    sudo timedatectl set-ntp true    # 確保由 NTP 同步
    

    方案 B:使用 systemd-timesyncd(僅 client)

    # 安裝/啟用(多數發行版內建)
    sudo systemctl unmask systemd-timesyncd
    sudo systemctl enable --now systemd-timesyncd
    
    # 指定上游 NTP
    sudo bash -c 'cat >/etc/systemd/timesyncd.conf<<EOF
    [Time]
    NTP=tw.pool.ntp.org
    FallbackNTP=time.google.com ntp.ubuntu.com
    EOF'
    sudo systemctl restart systemd-timesyncd
    

    三、內部 NTP Server 建置(對 LAN 提供同步)

    使用 Chrony 最單純;timesyncd 不提供對外服務。

    # 1) 安裝
    sudo dnf/apt install -y chrony
    
    # 2) 設定 /etc/chrony/chrony.conf
    # - 指定上游;允許內網;啟用本地參考(選擇性)
    pool tw.pool.ntp.org iburst
    allow 192.168.0.0/16
    # 如果你要在外網不通時提供暫時時間,取消註解下行(慎用)
    # local stratum 10
    
    # 3) 啟用服務
    sudo systemctl enable --now chronyd
    
    # 4) 防火牆開放 NTP (UDP/123)
    # firewalld
    sudo firewall-cmd --add-service=ntp --permanent
    sudo firewall-cmd --reload
    # ufw
    sudo ufw allow 123/udp
    

    備註:SELinux 預設允許 chronyd;若自訂路徑或額外限制,請檢查 audit 日誌後再以 semanage 調整。

    四、驗證與監控指令

    # 是否由 NTP 控制
    timedatectl
    
    # Chrony 來源與同步狀態
    chronyc sources -v
    chronyc tracking
    chronyc sourcestats
    
    # 系統時計偏移/步進紀錄
    journalctl -u chronyd --since "today"
    

    五、安全建議與最佳實務

    • Server 僅 allow 內部網段;外部主機請改走上游(pool / ISP NTP)。
    • 使用多個上游(公網 + 本地 ISP)並加 iburst 提升收斂速度。
    • 虛擬化/容器環境:優先以 宿主機 爲 NTP 來源,避免層層延遲。
    • 關鍵系統更新 BIOS/RTC 後,驗證 timedatectl 是否仍由 NTP 控制。

    六、常見問題排查清單

    • ⛔ UDP/123 被擋:檢查 firewalld/ufw、邊界防火牆 ACL。
    • 🌀 NTP 來源不可達:更換 pool,或加入 time.google.com/ntp.ubuntu.com
    • 🔁 服務衝突:不要同時啟用 chronydsystemd-timesyncd。保留其一。
    • ⏱️ 時鐘大幅漂移:第一次可允許步進(chrony 會自動處理),或手動 sudo hwclock -w 同步 RTC。

    七、快速 Recipes:Ubuntu / Debian / RHEL / Rocky

    Ubuntu / Debian(Server + Client)
    sudo apt update && sudo apt install -y chrony
    sudo sed -i 's/^pool .*/pool tw.pool.ntp.org iburst/' /etc/chrony/chrony.conf
    echo "allow 192.168.0.0/16" | sudo tee -a /etc/chrony/chrony.conf
    sudo systemctl enable --now chronyd
    sudo ufw allow 123/udp
    chronyc tracking && chronyc sources -v
    
    RHEL / Rocky / Alma(Server + Client)
    sudo dnf install -y chrony
    sudo sed -i 's/^pool .*/pool tw.pool.ntp.org iburst/' /etc/chrony.conf
    echo "allow 192.168.0.0/16" | sudo tee -a /etc/chrony.conf
    sudo systemctl enable --now chronyd
    sudo firewall-cmd --add-service=ntp --permanent && sudo firewall-cmd --reload
    chronyc tracking && chronyc sources -v
    

    🧭 行動清單

    ✅ 選定方案:Server 用 Chrony、工作站可用 timesyncd
    ✅ 設定上游 pool 與 allow 內網段
    ✅ 開啟防火牆 UDP/123 並驗證 chronyc tracking/sources
    ✅ 將本機設為內部 NTP,其他主機改指向它
      

    🔗 延伸閱讀

    🔗 分享這篇 LINE Facebook X

    沒有留言:

    字級