ntpd はインターネット接続が少し遅れると時計を同期しません

ntpd はインターネット接続が少し遅れると時計を同期しません

私たちの実稼働ボックスでは、ntpd に関する問題が発生しています。実稼働ボックスで NTP 機能を有効にしていますが、1 つの問題が発生しています。

私たちは、ボックスの初期化プロセスでntpdデーモンを起動します。その間、インターネット接続はありません。以下は私の小さなntp.confファイルです

driftfile  /etc/ntp.drift
logconfig =syncstatus
server pool.ntp.org iburst

インターフェースが立ち上がると、私たちのボックスはインターネット接続が少し遅れます。そのとき、ntpdが時計を同期していないことがわかります。同期するとntpq -c as、次のようになりますno association id's found。私はほぼ30分待ちましたが、それでもno association id's found

ntpd を再起動する必要があります。再起動後、ntpd はクロックを同期し、すべて正常に動作します。しかし、ボックスを再起動すると、同じ問題が発生します。ボックスが起動し、インターネットにアクセスできるようになると、再び ntpd を再起動する必要があります。

同じような問題に直面した人はいますか?

インターフェースが起動するまで ntpd の起動を遅らせる必要がありますか?

アップデート

さらに実験を行い、 を置き換えました。この変更server pool.ntp.org iburstによりpool pool.ntp.org iburst、ntpd はクロックを自動的に同期します。ntpd を再起動する必要はありませんでした。ここで別の疑問が生じます。

serverを に置き換えると何が起こりますかpool?

常にpoolの代わりにキーワードを使用する必要がありますかserver?

いつ使用すればいいですか?poolまた、いつ使用すればいいですかserver

調査したところ、 pool is the same as server, except it resolves one name into several addresses and uses them all 彼らが同じことをしているのなら、なぜserver pool.ntp.org iburst私にはうまくいかなかったのに、なぜうまくpool pool.ntp.org iburstいったのかがわかりました。

アップデート

pool提案されたように、の代わりにを使用しましたがserver、それでも起動時に時計を同期できません。以前はno association id's found表示されていましたが、プールを使用した後はリストが表示されます。

GW:/admin# ntpq -c lpeer
     remote           refid      st t when poll reach   delay    offset  jitter
===================================================================== =========
 time.google.com .POOL.          16 p    -   64    0    0.000   +0.000   0.002

GW:/admin# ntpq -np
      remote           refid      st t when poll reach   delay   offset  jitter

 time.google.com .POOL.          16 p    -   64    0    0.000   +0.000   0.002

GW:/admin# ntpq -c as
ind assid status  conf reach auth condition  last_event cnt
===========================================================
  1 34173  8811   yes  none  none    reject    mobilize  1

GW:/admin# ntpq -c "rv 34173"
associd=34173 status=8811 conf, bcast, sel_reject, 1 event, mobilize,
srcadr=0.0.0.0, srcport=0, srchost="time.google.com", dstadr=0.0.0.0,
dstport=0, leap=11, stratum=16, precision=-19, rootdelay=0.000,
rootdisp=0.000, refid=POOL, reftime=(no time), rec=(no time), reach=000,
unreach=0, hmode=3, pmode=0, hpoll=6, ppoll=10, headway=0,
flash=1400 peer_dist, peer_unreach, keyid=0, offset=+0.000, delay=0.000,
dispersion=16000.000, jitter=0.002,
filtdelay=     0.00    0.00    0.00    0.00    0.00    0.00      0.00    0.00,
filtoffset=   +0.00   +0.00   +0.00   +0.00   +0.00   +0.00   +0.00   +0.00,
filtdisp=   16000.0 16000.0 16000.0 16000.0 16000.0 16000.0 16000.0 16000.0

フラッシュ ステータスが と表示されます1400。 の意味は何ですか? NTP ドキュメントで1400フラッシュ ステータスを見つけることができませんでした。1400

アップデート

iburst動作し始めました。を に置き換えたminpoll 3 maxpoll 4後、再起動すると動作します。 プールを次のように使用しました pool pool.ntp.org minpoll 3 maxpoll 4。 この変更によってどのような違いが生じたかはわかりません。

minpoll と maxpoll の使用は避けるべきだとも読みました。 Too frequent for a sustained period and public NTP services may block you. ntpd is already good at dynamically selecting the pool interval.

とにかく、助けてくれた皆さんに感謝します。

答え1

ntpd にサーバーを指定すると、起動時にホスト名を IP アドレスに解決し、その IP アドレスを使用して時間を同期しようとします。ホスト名が解決されない場合は、そのホスト名を削除します。解決された場合でも、ホスト名は記憶されず、IP アドレスのみが記憶されます。

ライン内のサーバーがserver固定 IP アドレス (動的プールではなく) を持つローカル ホストである場合は、ホスト名を実際の IP アドレスに置き換えることができ、起動時にネットワークが起動していなくてもホスト名は削除されません。

代わりに ntpd にプールを提供すると、ホスト名が保持されます ( でタグ付けされます.POOL.)。定期的に (起動時を含む)、DNS でそのホスト名を解決し、取得した IP を個別のエントリとして追加し、最も好ましくないものの一部を削除します。

ntpq -np このコマンドまたは同等のコマンドで、この一部を見ることができます。ntpq -n -c peers

これらすべてにはタイミングの問題と ntpd のバージョンの問題もあることに注意してください。この問題は ntpd のバグとして報告されており、いくつかの修正バージョンがあります。ntpd の一部のバージョンでは、ホスト名の解決が失敗した場合に解決を延期しますが、最終的にはいずれ諦める場合があります。そのため、ネットワークを一時的に切断して再接続してテストしている場合は、問題が発生しない可能性があります。また、ntp は、到達可能なホストと到達不可能なホストの両方に対してホスト ポーリング時間を指数関数的に増加させるポーリング アルゴリズムを使用します (クロックの安定性とホストの時刻同期としての有用性によって異なります)。上限は 1024 秒 (32 分) であるため、ネットワークの到達可能性が変化すると、それに気付くまでにそのくらいの時間がかかる可能性があります。(ポーリング時間と間隔は に記載されていますntpq -np)

さらに、一部のブート起動スクリプトは、ntpdate または類似のツールを使用して、システム クロックを ntp.conf からサーバーに設定し、ntpd が起動する前にクロックが部分的に同期されるようにします。これは 1 回限りの試みであり、失敗すると、ntpd はクロックが大きくずれた状態で起動する可能性があります。わずかにずれているだけであれば、ntp はそれを修正しますが、大きくずれている場合は、ntpd はクロックの同期を拒否し、場合によっては ntpd のバージョンがクラッシュしたり終了したりすることがあります。ntpd の一部のバージョンには、独自の 1 回限りのクロックの大きなステップ オプションがあります。

関連情報