chronydやntpdが時刻同期しない。ntpdateだと同期できるのに…

見出し



◆NTPの同期に失敗する

ntpdateで時刻同期できる状態でも、NTPクライアントが時刻同期してくれないケースがあります。
これは、LinuxのNTPクライアントが、WindowsのNTPサーバに同期しようとしているというケースで発生しやすい印象です。
WindowsのNTPのデフォルトのゆらぎ値(Root Dispersion)は大きすぎて、LinuxのNTPクライアントでは同期してくれないようです。


# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 192.168.0.2     192.168.0.3      1 u    6   64  377    0.271  -43935.   3.780
//↑同期していないため、行頭の状態表示が表示されない
//offsetもズレまくり…

◆解決策

【解決策1】WindowsのNTPサーバにて、レジストリ値「LocalClockDispersion」を下げる。
デフォルトは0xa(=10秒)。これを0x0などに下げればOK。
項目/td>内容
キーHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
値の名前LocalClockDispersion
値のデータ0xaから0x0に変更

【解決策2】LinuxのNTPクライアントにて、maxdistanceを上げる。
confファイルを修正して、maxdistanceの値を高く指定する。
実装設定ファイル設定内容
ntpdntp.conftos maxdist 20
chronychrony.confmaxdistance 20

◆結果

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.168.0.2     192.168.0.3      1 u    -   64    1    0.224   -3.152   0.079
//↑同期成功(行頭にアスタリスク)