時刻同期(ntpd / chronyd)が同期できないときの原因と修正

  • URLをコピーしました!

Linux サーバーの運用において、時刻同期 は非常に重要です。
認証やログ、分散システムの整合性に大きな影響を与えるため、時刻がずれていると様々なトラブルが発生します。

本記事では、ntpd / chronyd が同期できない場合の原因と修正方法 を、確認手順・正常/異常例つきで整理します。

目次

1. 現状の時刻同期状態を確認する

ntpd の場合

ntpq -p

正常例

     remote           refid      st t when poll reach   delay   offset  jitter
*ntp.nict.jp     .NICT.           1 u   42   64  377   12.345   -0.123   0.456
  • * が付いているサーバーが同期先
  • reach が 377 になっている → パケット疎通良好

異常例

     remote           refid      st t when poll reach   delay   offset  jitter
 ntp.nict.jp     .INIT.          16 u    -   64    0     0.000    0.000   0.000
  • * が付いていない → 同期先が選ばれていない
  • reach が 0 → サーバーに到達できていない

chronyd の場合

chronyc sources -v

正常例

210 Number of sources = 2
MS Name/IP address         Stratum Poll Reach LastRx Last sample
^* ntp.nict.jp                   1   10   377    42    -12us[  -34us] +/-   12ms
  • ^* が付いているサーバーが同期先

異常例

MS Name/IP address         Stratum Poll Reach LastRx Last sample
^? ntp.nict.jp                   0   10     0   -   +0ns[   +0ns] +/- 0ns
  • ^? → サーバーに接続できていない

2. 主な原因と解決方法

(1) NTP サーバーに接続できない(ネットワーク問題)

確認

ping ntp.nict.jp
telnet ntp.nict.jp 123
  • ping が通らない場合 → ネットワーク/DNS の問題
  • telnet でポート 123 が閉じている場合 → ファイアウォールや ACL

解決方法

  • /etc/firewalld/zones/public.xml などで UDP/123 を許可
sudo firewall-cmd --add-service=ntp --permanent
sudo firewall-cmd --reload

(2) NTP サービス自体が動作していない

確認

systemctl status ntpd
systemctl status chronyd

解決方法

  • ntpd
sudo systemctl enable ntpd
sudo systemctl start ntpd
  • chronyd
sudo systemctl enable chronyd
sudo systemctl start chronyd

(3) 設定ファイルに誤りがある

  • ntpd → /etc/ntp.conf
  • chronyd → /etc/chrony.conf

確認例

grep "^server" /etc/ntp.conf

正常例

server ntp.nict.jp iburst

よくある誤り

  • server の記述がない
  • 内部 DNS 名を使っていて解決できない

解決方法

  • 公開 NTP サーバーを設定
server ntp.nict.jp iburst
  • DNS 解決が不安定なら IP アドレス直指定

(4) 仮想環境特有の問題(VMware/Hyper-V)

仮想環境では、ホスト側の時刻同期機能 が干渉してずれることがあります。

対処法

  • VMware Tools / Hyper-V Integration Services の時刻同期をオフにする
  • NTP/Chrony による同期に一本化する

(5) システムクロックが大きくずれている

時刻が数分〜数時間以上ずれていると、ntpd/chronyd が徐々に補正できずに失敗します。

確認

date

解決方法(強制同期)

  • ntpd
sudo ntpd -gq
sudo systemctl restart ntpd
  • chronyd
sudo chronyc -a makestep

3. 実運用での推奨設定

  • 複数の公開 NTP サーバーを設定(冗長化のため)
  • iburst オプションで起動時同期を高速化
  • chrony の場合は makestep を利用して大きな時刻差を補正

例:/etc/chrony.conf

server ntp.nict.jp iburst
server ntp.jst.mfeed.ad.jp iburst
makestep 1.0 3

まとめ:原因と対処の対応表

症状主な原因確認方法解決方法
同期先が選ばれないネットワーク疎通不可ping, telnet host 123FW/ACL で UDP/123 を許可
サービスが動作していないntpd/chronyd が停止systemctl status ntpdsystemctl start で起動
設定ファイル誤り/etc/ntp.conf に server 記述なしgrep server公開 NTP サーバーを正しく設定
時刻が大幅にずれているシステムクロックの乖離datentpd -gq または chronyc makestep
仮想環境でずれるホストの時刻同期が干渉VMware/Hyper-V 設定ゲスト側のみで同期
目次