chronyc・chronyコマンドでLinuxの時刻同期を管理する方法|offset確認・トラブルシュートまで

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips > chronyc・chronyコマンドでLinuxの時刻同期を管理する方法|offset確認・トラブルシュートまで
Linuxサーバーの時刻がズレていることに気づかず、ログの突合わせができなかったり、SSL証明書の検証エラーが出たりと、思わぬトラブルに陥ったことはないでしょうか。
時刻のズレはサーバー運用における「静かな障害」で、放置するとシステム全体の信頼性に影響します。

この記事では、現代Linuxにおける時刻同期デーモン chronyd の設定と、その管理コマンドである chronyc の実践的な使い方を解説します。
インストールから設定ファイルの読み方、オフセット確認、トラブルシュートまで、RHEL 9.4 / AlmaLinux 9.4 / Ubuntu 24.04 LTS で動作確認した手順を紹介します。

この記事のポイント

・chronyc tracking でサーバーの時刻オフセットをリアルタイム確認できる
・/etc/chrony.conf の pool 行で NTP サーバーを指定し、systemctl で反映させる
・chronyc sources -v で各 NTP ソースの状態と選択状況を一覧表示できる
・「Cannot talk to daemon」は chronyd 未起動が原因で systemctl start で解決できる


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

chronyd と chronyc の基本概念

NTP(Network Time Protocol)による時刻同期は、Linuxサーバーの安定運用に欠かせない仕組みです。
RHEL 8 以降では、従来の ntpd に代わって chronyd(chrony デーモン)が標準採用されています。

chronyd と chronyc の関係は次のとおりです。

chronyd:バックグラウンドで動作する時刻同期デーモン。NTP サーバーと通信して時刻を調整する
chronyc:chronyd を操作・監視するコマンドラインクライアント。対話モードとワンショット実行の両方に対応する

ntpd との主な違い:

ntpd は時刻のズレが大きい場合、調整を拒否してしまうことがあります。
一方、chronyd はネットワーク接続が断続的な環境や仮想マシン上でも高速かつ正確に時刻を同期できるよう設計されています。
とくにクラウド環境(AWS EC2、Azure VM、GCP など)では chronyd が推奨されています。

chronyd のインストールと起動確認

1. インストール(パッケージ未導入の場合)

RHEL 9 / AlmaLinux 9 / Rocky Linux 9 では、デフォルトで chrony がインストールされています。
念のため確認して、未導入であれば以下を実行します。

# RHEL/AlmaLinux/Rocky Linux $ sudo dnf install chrony # Ubuntu 24.04 LTS $ sudo apt install chrony

2. サービスの有効化と起動

# サービスを有効化(OS再起動後も自動起動) $ sudo systemctl enable chronyd # サービスを起動 $ sudo systemctl start chronyd # 起動状態を確認 $ sudo systemctl status chronyd

実行結果の例(正常起動時):

* chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; preset: enabled) Active: active (running) since Wed 2026-06-04 09:00:11 JST; 2h 15min ago Main PID: 987 (chronyd) Tasks: 1 (limit: 23180)

設定ファイル /etc/chrony.conf の読み方

chronyd の動作はすべて /etc/chrony.conf で制御されています。
主要な設定項目を確認しましょう。

$ cat /etc/chrony.conf

AlmaLinux 9 のデフォルト設定例:

# NTP サーバーのプール設定 pool 2.rhel.pool.ntp.org iburst # ドリフトファイル(時刻ズレの傾向を記録) driftfile /var/lib/chrony/drift # 起動時に時刻が大きくズレている場合に強制調整(秒) makestep 1.0 3 # ハードウェアクロック(RTC)を同期させる rtcsync # NTP 統計ログのディレクトリ logdir /var/log/chrony

主要ディレクティブの説明:

pool:接続先 NTP サーバーを指定する。iburst を付けると起動直後の同期が高速化される
server:pool ではなく単一サーバーを指定する場合に使用する
driftfile:ハードウェアクロックのズレ傾向(drift)を記録するファイル。chronyd の精度維持に重要
makestep:起動時など大きなズレがある場合に即時修正する(例:1秒以上ズレていれば最初の3回のみ強制修正)
rtcsync:定期的にハードウェアクロック(RTC)に時刻を書き戻す設定

AWS EC2 での設定例:
EC2 インスタンスでは、AWS の専用 NTP エンドポイントを使うことが推奨されます。

# /etc/chrony.conf(EC2向け推奨設定) server 169.254.169.123 prefer iburst

設定を変更したら、chronyd を再起動して反映させます。

$ sudo systemctl restart chronyd

chronyc コマンドの基本的な使い方

1. tracking — 時刻同期の現在状態を確認する(最重要)

chronyc tracking は、chronyd の同期状態を詳細に表示するコマンドです。
日常的な時刻ズレ確認にはまずこれを実行します。

$ chronyc tracking

実行結果の例:

Reference ID : D8EF2312 (ntp1.example-isp.jp) Stratum : 3 Ref time (UTC) : Wed Jun 04 00:10:45 2026 System time : 0.000035412 seconds slow of NTP time Last offset : -0.000012345 seconds RMS offset : 0.000023456 seconds Frequency : 12.345 ppm slow Residual freq : -0.001 ppm Skew : 0.678 ppm Root delay : 0.012345678 seconds Root dispersion : 0.001234567 seconds Update interval : 64.2 seconds Leap status : Normal

主要フィールドの読み方:

System time:現在の時刻ズレ。seconds slow はサーバー時刻が遅れている、seconds fast は進んでいる
Last offset:直前の同期で修正したズレ量
Stratum:NTP 階層。1が最上位(原子時計直結)、数字が大きいほど間接参照。通常 2~4 が正常
Leap status:うるう秒の状態。Normal であれば問題なし
Frequency:クロックの進み・遅れの傾向(ppm = 100万分の1)

2. sources — NTP ソースの一覧と状態確認

$ chronyc sources

実行結果の例:

MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* ntp1.example-isp.jp 2 6 377 45 +0.012ms[+0.008ms] +/- 5ms ^- ntp2.example-isp.jp 2 6 377 44 -0.234ms[-0.238ms] +/- 8ms ^+ ntp3.nict.go.jp 1 6 377 46 -0.056ms[-0.060ms] +/- 3ms

左端の記号の意味:

*:現在選択されている(同期中の)NTP ソース
+:選択候補として組み合わせに使用されているソース
-:除外されているが接続は維持しているソース
?:到達不能または応答がないソース

詳細情報を表示するには -v オプションを使います。

$ chronyc sources -v

3. sourcestats — 各 NTP ソースの統計情報

$ chronyc sourcestats

実行結果の例:

Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev =============================================================================== ntp1.example-isp.jp 8 5 517 -0.012 0.234 -0.002ms 0.015ms ntp3.nict.go.jp 8 4 518 0.005 0.189 +0.021ms 0.011ms

主要フィールドの読み方:

NP:測定サンプル数
Freq Skew:周波数推定の誤差。値が小さいほど安定している
Offset:このソースとの時刻差の推定値
Std Dev:オフセットの標準偏差。値が小さいほど精度が高い

4. makestep — 時刻の即時強制修正

chronyd は通常、時刻をゆっくりと調整(スルー調整)します。
しかし、大きなズレがある場合は makestep で即時修正できます。

# 即時強制同期(sudo 必要) $ sudo chronyc makestep

実行結果:

200 OK

注意:稼働中のデータベースやアプリケーションが時刻の急変に敏感な場合は、事前に停止してから実行することを推奨します。

5. activity — NTP ソースのオンライン/オフライン状態

$ chronyc activity

実行結果の例:

200 OK 3 sources online 0 sources offline 0 sources doing burst (return to online) 0 sources doing burst (return to offline) 0 sources with unknown address

よく使う chronyc コマンドまとめ

やりたいこと コマンド
時刻同期の現在状態を確認する chronyc tracking
NTP ソースの一覧を確認する chronyc sources
NTP ソースの詳細情報を確認する chronyc sources -v
各 NTP ソースの統計情報を確認する chronyc sourcestats
時刻を即時強制修正する sudo chronyc makestep
NTP ソースのオンライン状態を確認する chronyc activity
対話モードで chronyc を起動する chronyc
chronyd のログをリアルタイム確認する sudo journalctl -u chronyd -f

NTP サーバーの変更・追加方法

日本標準時(JST)の信頼できる NTP ソースとして、NICT(情報通信研究機構)の公開 NTP サーバーが推奨されます。

# /etc/chrony.conf を編集 $ sudo vi /etc/chrony.conf

# 既存の pool 行をコメントアウトして NICT を追加する例 #pool 2.rhel.pool.ntp.org iburst server ntp.nict.jp iburst server ntp1.jst.mfeed.ad.jp iburst server ntp2.jst.mfeed.ad.jp iburst

# 変更を反映する $ sudo systemctl restart chronyd # 同期状態を確認する $ chronyc sources

pool と server の使い分け:

pool:DNS ラウンドロビンで複数の NTP サーバーを自動的に使い分ける。2.rhel.pool.ntp.org のようなプールアドレスに使用する
server:単一の NTP サーバーに固定接続する。IPアドレスや特定ホスト名を指定する場合に使用する

トラブルシュート|よくあるエラーと対処法

「Cannot talk to daemon」が出る場合

chronyd サービスが停止しているときに発生するエラーです。

$ chronyc tracking 506 Cannot talk to daemon

対処法:

# chronyd の状態確認 $ sudo systemctl status chronyd # 停止していれば起動する $ sudo systemctl start chronyd # 再度確認 $ chronyc tracking

sources に「?」表示が多い場合(NTP サーバーへの到達不能)

$ chronyc sources MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^? ntp1.example-isp.jp 0 6 0 10y +0ns[ +0ns] +/- 0ns

原因と対処法:

・ファイアウォールで UDP 123番ポートがブロックされている
・NTP サーバーのホスト名が解決できない(DNS 障害)
・ネットワーク自体に問題がある

# UDP 123番ポートへの疎通確認(ntpdate -q を使う) $ sudo ntpdate -q ntp.nict.jp # firewalld でポートを開放する(RHEL系) $ sudo firewall-cmd --permanent --add-service=ntp $ sudo firewall-cmd --reload # DNS 解決の確認 $ dig ntp.nict.jp A

時刻のズレが解消されない場合

chronyc tracking で System time のズレが大きい場合は、makestep で即時修正します。

# 即時強制修正 $ sudo chronyc makestep 200 OK # 修正後のズレを確認 $ chronyc tracking

それでも改善しない場合は、/var/log/chrony/ 配下のログを確認します。

# chronyd のログを確認する $ sudo journalctl -u chronyd --since "1 hour ago"

時刻がズレ続ける(仮想マシン環境)

VMware・KVM・VirtualBox などの仮想マシン環境では、ホスト OS のサスペンド・レジューム後に時刻が大きくズレることがあります。
/etc/chrony.conf に以下を追加することで、起動時の大きなズレを自動修正できます。

# 起動時に 10秒以上ズレていれば即時修正(最初の 5回まで) makestep 10 5

timedatectl との使い分け

時刻管理に関連するコマンドとして timedatectl もよく使われます。それぞれの役割の違いを整理します。
コマンド 主な用途 特徴
chronyc tracking NTP 同期の精度・状態確認 オフセット、stratum、drift など詳細な同期情報を表示
chronyc sources NTP ソースの状態確認 どの NTP サーバーと同期しているか、到達状況を確認
timedatectl タイムゾーン設定・NTP 有効化 タイムゾーン変更、NTP の有効/無効の切り替えに使う
date 現在時刻の表示・設定 シェルスクリプトでの日時操作に便利

タイムゾーンの確認と変更は timedatectl コマンドの使い方 を参照してください。

また、時刻同期の仕組み全体(ntpd との比較を含む)は Linux の時刻同期を設定・確認する方法|chronyc・ntpstat とズレ発生時の対処 で解説しています。

シェルスクリプトでの時刻ズレ監視

定期的に時刻ズレを監視してアラートを出すシンプルなスクリプト例です。

#!/bin/bash # 時刻ズレをチェックして 10ms を超えたら警告するスクリプト THRESHOLD_MS=10 # しきい値(ミリ秒) # chronyc tracking からオフセット値を抽出する OFFSET=$(chronyc tracking | grep "System time" | awk '{print $4}') OFFSET_ABS=$(echo "$OFFSET" | sed 's/-//') # ミリ秒に変換(seconds → ms) OFFSET_MS=$(echo "$OFFSET_ABS * 1000" | bc) # しきい値チェック if (( $(echo "$OFFSET_MS > $THRESHOLD_MS" | bc -l) )); then echo "[WARN] 時刻ズレが ${THRESHOLD_MS}ms を超えています: ${OFFSET_MS}ms" logger -p local0.warning "NTP offset exceeded: ${OFFSET_MS}ms" else echo "[OK] 時刻ズレは正常範囲内です: ${OFFSET_MS}ms" fi

このスクリプトを crontab に登録することで、定期的な時刻ズレ監視が実現できます。
crontab の設定方法は crontab コマンドの設定と書き方|動かない時のログ確認まで を参照してください。

本記事のまとめ

やりたいこと コマンド・設定
chronyd の起動状態を確認する systemctl status chronyd
時刻同期の現在状態(オフセット)を確認する chronyc tracking
NTP ソースの接続状態を一覧表示する chronyc sources
NTP ソースの詳細情報を表示する chronyc sources -v
各 NTP ソースの統計情報を表示する chronyc sourcestats
時刻を即時強制修正する sudo chronyc makestep
NTP サーバーを変更する /etc/chrony.conf の pool/server 行を編集後、systemctl restart chronyd
chronyd のログを確認する journalctl -u chronyd

時刻のズレは「気づきにくい障害」です。
chronyc tracking を日常的に確認する習慣をつけ、ズレが大きくなる前に対処できる体制を整えておきましょう。

chronyd のログ管理や journalctl の活用については、journalctl コマンドでsystemd のログを確認する方法 も合わせて参照してください。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
Linux Master Pro Seminar(2日間ハンズオン)では chronyd・SELinux・ファイアウォール設定まで、
実際のサーバーを触りながらサーバー管理の基礎を体系的に習得できます。

>> セミナー詳細・お申込みはこちら

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。