サーバ時刻ズレの対処 - chrony/timedatectl で NTP を整える

サーバ時刻ズレの対処 - 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

chronydsystemd-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.confmakestep 1.0 3 を設定しておくと安全

次に読む