Ubuntu 22.04 では、追加パッケージなしの systemd-timesyncd でも時刻同期できます。一方で、NTP サーバーを明示したい場合、同期状態を細かく確認したい場合、内部向けに時刻を配布したい場合は chrony が扱いやすくなります。
この記事では、既存の Ubuntu 22.04 環境を保守する前提で、chrony の導入、chrony.conf の基本設定、同期状態の確認、NTP サーバーとして使う場合の注意点を確認します。
- chrony と timesyncd の使い分け
chronyパッケージの導入/etc/chrony/chrony.confの基本設定chronyc sourcesとchronyc trackingによる確認- NTP サーバーとして配布する場合の注意点
書籍
ストーリーで覚える Linux CLI 入門
Linux のコマンドライン操作を基礎から確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
chrony を使う場面
単に外部 NTP と同期するだけなら systemd-timesyncd でも十分なことがあります。chrony は、より細かい状態確認や内部 NTP の構成が必要な場合に向いています。
| 用途 | timesyncd | chrony |
| 単純な時刻同期 | 向いている | 向いている |
| 詳細な同期状態確認 | 限定的 | chronyc で確認しやすい |
| 内部 NTP サーバー | 向かない | 構成しやすい |
| 複数 NTP サーバーの管理 | 可能 | より扱いやすい |
現在の時刻同期を確認する
chrony を導入する前に、現在の時刻、タイムゾーン、時刻同期サービスを確認します。
timedatectl
systemctl status systemd-timesyncd --no-pager || true
systemctl status chrony --no-pager || truechrony をインストールする
chrony を導入します。導入後は chrony.service の状態を確認します。
sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y chrony
systemctl status chrony --no-pagertimesyncd との重複を確認する
時刻同期サービスを複数同時に有効化すると、意図が分かりにくくなります。chrony を使う場合は、timesyncd の状態も確認します。
systemctl is-enabled systemd-timesyncd || true
systemctl is-active systemd-timesyncd || true
systemctl is-enabled chrony
systemctl is-active chronychrony.conf を設定する
NTP サーバーを明示する場合は /etc/chrony/chrony.conf を編集します。設定前にバックアップを取り、構文確認してから反映します。
sudo install -m 0644 /etc/chrony/chrony.conf /etc/chrony/chrony.conf.backup
sudo tee /etc/chrony/chrony.conf >/dev/null <<'EOF'
pool ntp.ubuntu.com iburst
pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
pool 2.ubuntu.pool.ntp.org iburst
makestep 1 3
rtcsync
logdir /var/log/chrony
EOF
sudo chronyd -Q -f /etc/chrony/chrony.confchrony を再起動する
設定を変更したら chrony.service を再起動します。起動直後は同期状態が安定するまで少し時間がかかります。
sudo systemctl restart chrony
systemctl status chrony --no-pager
journalctl -u chrony -n 50 --no-pager同期元を確認する
chronyc sources で同期元候補を確認します。^* が現在の同期元、^+ が利用可能な候補を示します。
chronyc sources -v
chronyc sourcestats -v同期状態を確認する
chronyc tracking で現在の時刻同期状態を確認します。大きなずれが残る場合は、NTP 到達性や firewall を確認します。
chronyc tracking
timedatectlNTP 通信を確認する
NTP は UDP 123 番を使います。外部 NTP へ同期できない場合は、名前解決、経路、firewall、プロキシでは処理できない UDP 通信を分けて確認します。
getent hosts ntp.ubuntu.com
ss -uapn | grep chrony || true
sudo nft list ruleset | grep 123 || true内部 NTP サーバーとして使う場合
chrony を内部ネットワーク向け NTP サーバーとして使う場合は、許可するネットワークを限定します。むやみに広い範囲へ NTP を公開しないようにします。
sudo tee -a /etc/chrony/chrony.conf >/dev/null <<'EOF'
allow 192.0.2.0/24
EOF
sudo systemctl restart chrony
chronyc clientsクライアント側から確認する
別の Ubuntu 22.04 サーバーから内部 NTP サーバーを使う場合は、同期先を明示し、同期状態を確認します。
chronyc sources -v
chronyc tracking運用時に見るポイント
時刻同期は、証明書、ログ、認証、分散システムの動作に影響します。同期できているかだけでなく、どの NTP サーバーを信頼しているかも確認します。
timedatectlで時刻とタイムゾーンを確認するchronyc sources -vで同期元を確認するchronyc trackingでずれを確認する- 内部 NTP を公開する場合は許可ネットワークを限定する
- UDP 123 番の通信経路を確認する
まとめ
Ubuntu 22.04 で chrony を使うと、NTP サーバーの指定、同期状態の確認、内部 NTP サーバーとしての配布を扱いやすくなります。単純な時刻同期だけなら timesyncd でもよいため、用途に応じて使い分けます。
chrony の運用では、chrony.conf、chronyc sources、chronyc tracking、UDP 123 番の通信経路を確認します。時刻同期は地味ですが、サーバー運用の前提として重要です。

