手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 chrony の設定 – NTP で時刻同期を安定させる

Ubuntu 22.04 では、追加パッケージなしの systemd-timesyncd でも時刻同期できます。一方で、NTP サーバーを明示したい場合、同期状態を細かく確認したい場合、内部向けに時刻を配布したい場合は chrony が扱いやすくなります。

この記事では、既存の Ubuntu 22.04 環境を保守する前提で、chrony の導入、chrony.conf の基本設定、同期状態の確認、NTP サーバーとして使う場合の注意点を確認します。

関連する記事
この記事で確認すること
  • chrony と timesyncd の使い分け
  • chrony パッケージの導入
  • /etc/chrony/chrony.conf の基本設定
  • chronyc sourceschronyc tracking による確認
  • NTP サーバーとして配布する場合の注意点
参考
書籍
参考書籍

ストーリーで覚える Linux CLI 入門

Linux のコマンドライン操作を基礎から確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

chrony を使う場面

単に外部 NTP と同期するだけなら systemd-timesyncd でも十分なことがあります。chrony は、より細かい状態確認や内部 NTP の構成が必要な場合に向いています。

用途timesyncdchrony
単純な時刻同期向いている向いている
詳細な同期状態確認限定的chronyc で確認しやすい
内部 NTP サーバー向かない構成しやすい
複数 NTP サーバーの管理可能より扱いやすい

現在の時刻同期を確認する

chrony を導入する前に、現在の時刻、タイムゾーン、時刻同期サービスを確認します。

timedatectl
systemctl status systemd-timesyncd --no-pager || true
systemctl status chrony --no-pager || true

chrony をインストールする

chrony を導入します。導入後は chrony.service の状態を確認します。

sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y chrony
systemctl status chrony --no-pager

timesyncd との重複を確認する

時刻同期サービスを複数同時に有効化すると、意図が分かりにくくなります。chrony を使う場合は、timesyncd の状態も確認します。

systemctl is-enabled systemd-timesyncd || true
systemctl is-active systemd-timesyncd || true
systemctl is-enabled chrony
systemctl is-active chrony

chrony.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.conf

chrony を再起動する

設定を変更したら 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
timedatectl

NTP 通信を確認する

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.confchronyc sourceschronyc tracking、UDP 123 番の通信経路を確認します。時刻同期は地味ですが、サーバー運用の前提として重要です。

関連する記事
Ubuntu 22.04 chrony の設定 – NTP で時刻同期を安定させる

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る