【NTP】時刻同期エラーになる場合の対処法 ~show ntp statusで”unsynchronized, stratum 16″と表示される等~

症状

NTP クライアントの設定をしている(NTPサーバのIPを指定している)が、正しい時刻にならない。show コマンドで確認しても stratum 16 と表示される。

原因

以下が考えられます。

  1. 同期先のNTPサーバの負荷が高過ぎる。
  2. 同期先のNTPサーバとの時間差が1000秒以上離れている。
  3. 同期先のNTPサーバが2台あり、その2台の時間差が大きい(かつpreferやtrust等のオプションを使っていない)。
  4. NTPサーバとの疎通ができていない、または認証やアクセス制御により受け付けない状態である。
  5. 時間経過が必要

原因 1 の詳細と対策

例えば Windows のデフォルトの NTP サーバは『time.windows.com』ですが、世界中の Windows がアクセスしますので、常に負荷が高く、成功率もあまり良くありません。しかもロケーションも国外ですので遅延の影響により精度もよくありません。

他の NTP サーバを使うことを検討しましょう。例えばインターネットマルチフィードという会社が有名です。

http://www.jst.mfeed.ad.jp/about/04.html

原因 2 の詳細と対策

以前まで UNIX/Linux で標準で使われていた ntpd (今は chrony というものに置き換わり始めていますが)というプログラムでは、tinker panic と呼ばれるパラメータがあり、このパラメータで設定された秒数よりも時刻差がある場合、何か大きな問題が生じたと判断し、同期を辞めてしまいます (デフォルト 1000 )。

Cisco 等の NW 機器もこのフリープログラムを流用しているのか、同じ問題が起こります。

まずは手動で大体の時刻を合わせ、様子を見てみましょう。

原因 3 の詳細と対策

NTP の仕様 (RFC 5905) として、同期先を複数台指定している場合、まず大きく時刻が外れたサーバを除外し、残った NTP サーバのうち最大3台の情報を使って時刻同期をします。

2 台のうちどちらかが大きくズレていると、大きく時刻が外れたサーバを除外する際にどちらが外れているか判断できず、同期を止めてしまいます

対策としては、NTP サーバを 3 台以上設定するか、あまり望ましくはありませんが prefertrust のオプションを付けて対応します。

原因 4 の詳細と対策

まずは NTP サーバへ ping が通るかUDP/TCP の 123 番ポートがファイアウォール等で止まっていないか(NTP は通常 UDP ですが、TCP の実装も稀にあります)、送信元 IP はどうなっているか(ntp source コマンドで変更していないか)、その送信元 IP からのアクセス制御は為されているか、等を確認します。

また、NTP の認証はお互いにキー番号とパスワードを揃える必要がありますので、それらが合っているか、サーバの設定をしっかり確認しましょう。

原因 5 の詳細と対策

Cisco だとよく発生するのが、show ntp status コマンド結果に『Clock is unsynchronized, stratum 16, no reference clock』と表示されるケース。

『設定は絶対にあってる!」という自信があるなら、単に時間経過が必要であるケースが多いです。

例えば以下のように debug を見てみます。

Cat3750X# debug ntp all
Cat3750X# 
Apr  4 04:21:03.234: NTP message sent to 10.18.10.1, from interface 'GigabitEthernet1/1/1' (10.18.10.254).
Apr  4 04:21:03.234: NTP message received from 10.18.10.1 on interface 'GigabitEthernet1/1/1' (10.18.10.254).
Apr  4 04:21:03.234: NTP Core(DEBUG): ntp_receive: message received
Apr  4 04:21:03.234: NTP Core(DEBUG): ntp_receive: peer is 0x042E5D38, next action is 1.
Apr  4 04:21:03.234: NTP Core(DEBUG): receive: packet given to process_packet
Cat3750X#sh clock
13:21:09.543 JST Thu Apr 4 2019
Cat3750X#show ntp association

  address         ref clock       st   when   poll reach  delay  offset   disp
 ~10.18.10.1      172.20.253.26    3     56    128     0  0.000   0.000 15937.
 * sys.peer, # selected, + candidate, - outlyer, x falseticker, ~ configured

Cat3750X#show ntp status
Clock is unsynchronized, stratum 16, no reference clock
nominal freq is 119.2092 Hz, actual freq is 119.2092 Hz, precision is 2**17
reference time is 00000000.00000000 (09:00:00.000 JST Mon Jan 1 1900)
clock offset is 0.0000 msec, root delay is 0.00 msec
root dispersion is 30.29 msec, peer dispersion is 0.00 msec
loopfilter state is 'FSET' (Drift set from file), drift is 0.000000000 s/s
system poll interval is 64, never updated.
Cat3750X#

デバッグで見ても問題ないし show ntp association で見ても st=3 となっています。でも show ntp status だと同期していなそうに見えます。このようなケースだと時間が解決するでしょう。

しばらくすると以下のように変わりました。

Cat3750X#sh ntp status
Clock is synchronized, stratum 4, reference is 10.18.10.1
nominal freq is 119.2092 Hz, actual freq is 119.2094 Hz, precision is 2**17
reference time is E050151F.F827F2C2 (14:31:11.969 JST Thu Apr 4 2019)
clock offset is -60.7574 msec, root delay is 88.88 msec
root dispersion is 111.19 msec, peer dispersion is 19.77 msec
loopfilter state is 'CTRL' (Normal Controlled Loop), drift is -0.000000946 s/s
system poll interval is 64, last update was 440 sec ago.
Cat3750X#

フォローする