サーバ時刻ズレの対処 - chrony/timedatectl で NTP を整える
時刻ズレが引き起こす問題
サーバの時刻がずれると、SSL/TLS 証明書検証エラー・Kerberos 認証失敗・ログのタイムスタンプ不整合・cron の誤動作など多岐にわたる障害につながる。数秒のズレが原因特定を困難にするため、時刻同期は運用の基本インフラとして維持する。
まず実行するコマンド
timedatectl status
System clock synchronized: yes なら同期済み。no なら以降の手順で修正する。
現在の時刻状態をどう確認するか
timedatectl status が最初の診断コマンド。NTP 同期の有無・タイムゾーン・RTC 状態を一度に確認できる。
timedatectl status
timedatectl status
Local time: Mon 2026-06-01 10:00:00 JST
Universal time: Mon 2026-06-01 01:00:00 UTC
RTC time: Mon 2026-06-01 01:00:00
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
| フィールド | 正常 | 異常 |
|---|---|---|
System clock synchronized |
yes |
no |
NTP service |
active |
inactive / n/a |
date コマンドで現在時刻を確認
date date -u
ローカル時刻と UTC の差がタイムゾーンのオフセットと一致するか確認する。
どの NTP クライアントが動いているか
Ubuntu / RHEL 系では以下のどちらかが稼働している。両方を同時に有効にしないこと。
| デーモン | 主な採用先 | 設定ファイル |
|---|---|---|
systemd-timesyncd |
Ubuntu(軽量) | /etc/systemd/timesyncd.conf |
chronyd |
Ubuntu / RHEL / CentOS(高精度) | /etc/chrony.conf または /etc/chrony/chrony.conf |
稼働中のサービスを確認する:
systemctl status systemd-timesyncd systemctl status chronyd
chronyd と systemd-timesyncd を同時に有効にすると競合し、どちらも正しく同期しなくなる。片方のみ有効にすること。
chrony を使った同期確認と修正
chronyc tracking で同期状態を確認
chronyc tracking
Reference ID : 133.243.238.163 (ntp.nict.jp) Stratum : 2 Ref time (UTC) : Mon Jun 01 01:00:00 2026 System time : 0.000123456 seconds fast of NTP time Last offset : +0.000123456 seconds RMS offset : 0.000012345 seconds Frequency : -1.234 ppm fast Residual freq : +0.001 ppm Skew : 0.123 ppm Root delay : 0.012345678 seconds Root dispersion : 0.000123456 seconds Update interval : 64.2 seconds Leap status : Normal
System time が数秒以上ズレている場合は即時修正が必要。
chronyc sources で NTP サーバ一覧を確認
chronyc sources -v
MS Name/IP address Stratum Poll Reach LastRx Last sample ^* ntp.nict.jp 1 6 37 43 -0.123ms[+0.456ms] +/- 12.3ms
^* が現在同期中のサーバ。? や x が多い場合は NTP サーバ側に問題がある。
時刻を強制同期する(makestep)
大きなズレ(数秒〜数分)がある場合、通常の緩やかな修正を待たず即時修正する:
chronyc makestep
200 OK
makestep は時刻を急激にスキップさせる。ログタイムスタンプの飛びが発生するため、本番環境では実行前に影響を確認すること。
chronyd が起動していない場合
# Ubuntu sudo apt install chrony sudo systemctl enable --now chronyd # RHEL / CentOS / Rocky Linux sudo dnf install chrony sudo systemctl enable --now chronyd
timedatectl で NTP を有効化する
NTP 同期が無効な状態(NTP service: inactive)では以下で有効化する。
sudo timedatectl set-ntp true
確認:
timedatectl status | grep NTP
NTP service: active
タイムゾーンの設定ミスを確認
時刻ズレの原因がタイムゾーン設定ミスの場合もある:
# 現在のタイムゾーン確認 timedatectl status | grep "Time zone" # 利用可能なゾーン一覧(Asia/* を絞り込み) timedatectl list-timezones | grep Asia # タイムゾーンを設定 sudo timedatectl set-timezone Asia/Tokyo
systemd-timesyncd の確認と設定
chrony を使わず systemd-timesyncd を使っている環境では以下で確認する:
timedatectl show-timesync --all
NTP サーバを変更する場合は /etc/systemd/timesyncd.conf を編集する:
[Time] NTP=ntp.nict.jp 0.pool.ntp.org 1.pool.ntp.org FallbackNTP=2.pool.ntp.org 3.pool.ntp.org
設定を反映する:
sudo systemctl restart systemd-timesyncd
VM・クラウド環境特有の時刻ズレ
VM をサスペンド/リジュームすると時刻が大きくずれることがある。chronyc makestep で即時修正するか、chrony 設定に makestep ディレクティブを追加しておく:
# /etc/chrony.conf に追加 makestep 1.0 3
makestep 1.0 3 は「最初の 3 回の同期で 1.0 秒以上のズレがあれば即時スキップ」を意味する。
クラウドプロバイダーの推奨 NTP
| プロバイダー | 推奨 NTP |
|---|---|
| AWS | 169.254.169.123 |
| Azure | time.windows.com |
| GCP | metadata.google.internal |
ファイアウォールで NTP が遮断されている場合
NTP は UDP 123 番ポートを使用する。ファイアウォールが遮断していると同期できない:
# ufw の場合 sudo ufw allow out 123/udp # firewalld の場合 sudo firewall-cmd --add-service=ntp --permanent sudo firewall-cmd --reload
NTP サーバへの到達確認:
chronyc ntpdata <NTP_SERVER_IP>
まとめ
- 時刻ズレの確認は
timedatectl statusから始める - NTP 同期が無効なら
sudo timedatectl set-ntp trueで有効化 chronyc trackingで詳細な同期状態とオフセット量を確認- 即時修正が必要なら
chronyc makestep - VM 環境では
/etc/chrony.confにmakestep 1.0 3を設定しておくと安全