ntpq コマンドから次の出力を取得します。
# ntpq -pn
remote refid st t when poll reach delay offset jitter
================================================================================
*192.168.1.1 10.10.4.1 2 u 68y 1024 170 0.198 0.584 0.606
68y
コラムとはどういう意味ですかwhen
?文書によると、最後のパケットを受信してから一定時間が経過したことを示しています。これは、最後に受信したパケットが68年前に受信されたことを意味しますか?信じられますか?
# ntpq --version
ntpq 4.2.8p11
答え1
このreach
値は、以前にリモートNTPサーバーをポーリングしようとした8回の試行結果を8進数で表したものです。 8進値は、最後の3回のポーリング試行が失敗したことを示す2170
進値にマップされます。01111000
このpoll
値は現在のポーリング間隔を示します。あなたの場合、1024秒がデフォルトの最大値です。これはntpd
、リモートタイムサーバー192.168.1.1への接続が長く維持されており、合理的に良好な値であることが証明されてdelay
いるoffset
ようjitter
に、合理的に良好な同期が達成されたことを示しています。その結果、poll
値を最大許容値に調整しました。
このreach
値は、最後の3回のポーリング試行が失敗したことを示すため、poll
値1024は、構成されたリモートNTPサーバーの最後のポーリング成功から少なくとも3076秒が経過する必要があることを意味します。
内部にntpqサブコマンドのソースコード、when
値は次のように計算されます。prettyinterval()
機能。名前が示すように、時間間隔の長さをパラメータとして使用し、このパラメータは関数として計算されます。when()
。現在のタイムスタンプと最後に受信したタイムスタンプとの間隔を計算します。または、受信したタイムスタンプがゼロの場合、現在のタイムスタンプと最後の参照タイムスタンプとの間の間隔を計算します。
when()
大きな値を生成する唯一の方法は、最後の受信タイムスタンプにゼロではありませんが、予期せず小さい値がある場合、または最後の受信タイムスタンプが0の場合のようです。そして最後の参照タイムスタンプはゼロではありませんが、予想外に小さいです。
私の推測では、リモートNTPサーバーが最後に到達したときに応答として意味のないNTPタイムスタンプを送信した可能性があります。または、ローカルシステムの時計は本当に奇妙です。いくつかの簡単な計算の後、リモートNTPサーバーのタイムスタンプは約1954年であり、システムのローカル時間の概念は約2090年です。