てしりこじり

しりがちいさいエンジニアがいるという

NTP 再整理

NTP とは

  • Network Time Protocol の略
  • 時刻情報を取得するためのプロトコル
  • 時刻同期と呼ばれる
  • 時刻を合わせておくことで情報解析が捗る

時刻同期の実現方法

自動で時刻を同期させるためには以下の2つがある

  • ntpd を起動させて、時刻同期先を指定する
  • 定期的に ntpdate を実行する(注)

それぞれの違いは以下の通り

ntpd と ntpdate の違い

ntpd

設定次第で1秒の時間を調整してうまいこと時刻を同期してくれる
常駐して動作する

ntpdate

強制的に時刻を同期してくれる
随時で動作する

  • よくあるパターンとしてサーバの起動時に ntpdate を仕込んで、起動したら ntpd を動作させる
    • 時刻が大きくズレすぎていると同期できないことがあるため
  • なお、同じポートを使うため、どちらかが起動しているとどちらかは使えない。

ntpd をうまいこと設定する

時刻同期には以下のモードがある。

  • STEP モード
  • SLEWモード

STEPモード

ズレている時間を一気に修正する

SLEWモード

1秒の時間を調整して徐々に修正する
起動時に ntpd -x で起動するか、
/etc/ntp.conf にて tinker step 0 に設定する必要がある

基本的には SLEW モードがオススメ

うるう秒について

※ 23:59:59 と 00:00:00 の間にうるう秒が挿入される場合。

通常の時刻の流れ

23:59:59.000000 →(略)→ 23:59:59.999999 → 00:00:00.000000

うるう秒の場合

23:59:59.000000 →(略)→ 23:59:59.999999 → 23:59:59.000000 →(略)→ 23:59:59.999999 → 00:00:00.000000

NTP ではうるう秒のタイミングで Leap Indicator (LI) を送る。 ntpd が STEP モードで動作している場合、LI が送られると上記のように一度時間が逆進する。

対策

SLEW モードで動作させておくとズレが生じて少しづつ調整する。 また Leap Indicator を送らないので影響も出さない。

動作等々

  • 設定ファイル

    • /etc/ntp.conf
  • 時刻同期状態確認

$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp-a2.nict.go. .NICT.           1 u  198 1024  177   18.326    5.511   4.370
+ntp2.jst.mfeed. 133.243.236.17   2 u  490 1024  377   15.422    5.076   2.296

# NTPサーバの前に * or + が表示されていれば同期している
# 空白の場合、時刻同期中
  • 手動同期
$ sudo ntpdate ntp.jst.mfeed.ad.jp
21 Sep 13:28:44 ntpdate[9121]: adjust time server 210.173.160.27 offset 0.004727 sec



ままならないものだ。いろいろとこぼれ落ちていくものである。