2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

ntpdateコマンドエラーについての誤解!

NTPサーバ構築関係は、ここ のネタに任せるとして、ここではNTPサーバとNTPクライアントとの同期について書いてみたい。結構混乱した覚えがある。


1.ntpdateコマンドでのNTPサーバが上位サーバとシンクロできないエラー

例えば ntpdate コマンドを叩いて、以下のようなエラーが出た場合。

root@sv:~# ntpdate -d ntp.kozupon.com
31 Mar 13:48:41 ntpdate[30115]: ntpdate 3-5.93 Wed Jul 18 10:36:05 JST 2001 (1)
transmit(203.141.157.142)
receive(203.141.157.142)
transmit(203.141.157.142)
receive(203.141.157.142)
transmit(203.141.157.142)
receive(203.141.157.142)
transmit(203.141.157.142)
receive(203.141.157.142)
transmit(203.141.157.142)
server 203.141.157.142, port 123
stratum 1, precision -6, leap 00, trust 000
refid [LOCL], delay 0.05396, dispersion 0.00026
transmitted 4, in filter 4
reference time: cd798b20.49d93c2c Sun, Mar 29 2009 14:52:32.288
originate timestamp: cd7c1f25.84b1462d Tue, Mar 31 2009 13:48:37.518
transmit timestamp: cd7c1f29.fcf2b000 Tue, Mar 31 2009 13:48:41.988
filter delay: 0.05598 0.05434 0.05487 0.05396
0.00000 0.00000 0.00000 0.00000
filter offset: -4.47562 -4.47600 -4.47653 -4.47626
0.000000 0.000000 0.000000 0.000000
delay 0.05396, dispersion 0.00026
offset -4.476266

31 Mar 13:48:42 ntpdate[30115]: no server suitable for synchronization found


ほとんどの人が、「ファイアーウォールで123番ポートがフィルターしてあるのだ」とエラーの原因を特定する。しかし、実はその原因が違ったりもする。
もう一つの原因として、ntpdateで指定してるNTPサーバが設定ファイルで指定してる上位サーバとのシンクロが出来ないことを意味してる場合も有る。実は、そこが勘違いされやすいのだ。
このとき、時間が経っても状況が変わらない場合は、ntpdateで指定してるNTPサーバを変えるか、NTPサーバがシンクロしている上位サーバを変えるかの対応が必要になってくる。


2.NTPサーバが動いているホストからntpdateコマンドを発行した場合のエラー

当然だが、NTPサーバが動いているホストからntpdateコマンドを発行すると、以下のようなエラーが出る。

vline:~# ntpdate -d ntp.kozupon.com
2 Apr 09:22:26 ntpdate[12086]: ntpdate 4.2.2p4@1.1585-o Sun Jan 11 17:05:59 UTC 2009 (1)
2 Apr 09:22:26 ntpdate[12086]: the NTP socket is in use, exiting

この場合は、もちろん、ntpdateコマンドは使わない(と言うか使う必要はない)。


3.では、ntpdateが旨く行ったときは

ntpdateコマンドを発行して、旨く現在時刻をゲットできたときは、以下のようになる。

wirehork:~# ntpdate -d ntp.kozupon.com
1 Apr 14:13:28 ntpdate[14713]: ntpdate 4.2.4p4@1.1520-o Wed Jan 7 18:06:30 UTC 2009 (1)
transmit(203.141.157.142)
receive(203.141.157.142)
transmit(203.141.157.142)
receive(203.141.157.142)
transmit(203.141.157.142)
transmit(203.141.157.142)
receive(203.141.157.142)
transmit(203.141.157.142)
server 203.141.157.142, port 123
stratum 2, precision -6, leap 00, trust 000
refid [203.141.157.142], delay 0.05350, dispersion 8.00018
transmitted 4, in filter 4
reference time: cd7c9b5d.cdb08953 Tue, Mar 31 2009 22:38:37.803
originate timestamp: cd7d767e.8f5f8063 Wed, Apr 1 2009 14:13:34.560
transmit timestamp: cd7d7679.6eee2003 Wed, Apr 1 2009 14:13:29.433
filter delay: 0.05611 0.05362 0.00000 0.05350
0.00000 0.00000 0.00000 0.00000
filter offset: 5.121149 5.120472 0.000000 5.120436
0.000000 0.000000 0.000000 0.000000
delay 0.05350, dispersion 8.00018
offset 5.120436

1 Apr 14:13:29 ntpdate[14713]: step time server 203.141.157.142 offset 5.120436 sec


4.NTPサーバのStratum値について

NTPサーバは、階層になっていて上位のサーバで順に1(上位)~16(最下位)に別れている。これをStratum値と言っている。

当然、一般的には、上位のサーバ程利用率が高い訳で下位側のNTPサーバを使用するようにと呼びかけられている。推奨するのは、Stratum値2とか3のNTPサーバを使うと良い。
さらに、最上位Stratum値 1のサーバだと使用率が高すぎて、なかなかシンクロできないサーバも出てくる。

以下は、俺のNTPサーバのシンクロ先だが、「st」と有るのがStratum値である。

sub2:~# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*ns.doga.co.jp 133.243.238.244 2 u 860 1024 377 48.090 -6.426 0.286
+211.19.56.141 211.19.56.138 3 u 549 1024 377 12.960 -2.547 0.353
-dns.sanda.net 7.172.114.220 2 u 852 1024 377 23.656 5.591 2.234
+ns2.ktroad.net 210.173.160.27 3 u 605 1024 377 18.115 -5.838 0.847

ntpqコマンドを発行すれば、Stratum値が解る。

基本的に、例えばNTPサーバが設定している上位のNTPサーバのStratum値が2の場合には、このNTPサーバのStratum値は、「2より大きな値」3とか4とかを設定する事となる。

以上

コメント