NTPで時刻同期せずエラーになる

症状

NTPクライアントの設定をしている(NTPサーバのIPを指定している)が、正しい時刻にならない

原因

以下が考えられます。

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

原因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の仕様(RFC5905)として、同期先を複数台指定している場合、まず大きく時刻が外れたサーバを除外し、残ったNTPサーバのうち最大3台の情報を使って時刻同期をします。

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

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

原因4の詳細と対策

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

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

シェアする

  • このエントリーをはてなブックマークに追加

フォローする