Humanity

Edit the world by your favorite way

RTX810をSNTPサーバにする(+DHCPでオプション配布)

定期的に ntp.nict.jp と同期させるconfigを追記。

SNTPとNTPの違いについて

すみません詳しく分かってません。

  • SNTPは時刻合わせの時の問い合わせ回数を何回も行ったりせず、1回で終える
  • SNTPとNTPはクライアント/サーバのどの組み合わせでも互換性がある?

という事は分かった。

config

sntpd service on
dhcp scope option <scope_num> ntp_server=<RTX810のIPアドレス>


あと定期的に ntp.nict.jp と同期させたかったら、以下で土曜日の5時に同期する。

schedule at 1 */Sat 05:00 * ntpdate ntp.nict.jp

ただ、この設定には問題もある。
詳しくは後述の「時刻の戻りが発生してしまう懸念」の項を参照。

クライアント側の設定

Windows

WindowsではNTPサーバの設定は無視される。
なので手動で変更した。

Linux(Debian)

isc-dhcp-clientとntpが入ってると、
/etc/dhclient.confで反映するDHCPオプションを設定できる。
少なくともDebianはデフォルトでNTPサーバが配布されれば反映するようになってた。

  • /etc/dhclient.confに`request ntp-servers`があるのを確認
    • Debianだとデフォルトで入ってた
  • ntpパッケージが入っていることを確認
  • 「sudo ifdown eth0; sudo ifup eth0」
  • dhclientが自動的にservice ntp restartする

時刻の戻りが発生してしまう懸念

前提とするconfigを紹介しなかったためにいきなり感がひどかった。


ntpdateコマンドでいきなり時刻を変更してしまっているので、
時計が進んでいた場合時刻が戻ってしまう。
それによってアプリケーションで後に取得した時間なのに前に取得した時間より早くなったりして、様々な不都合が発生する*1


ただこれはRTX810本体のみの問題*2で、通常NTPクライアントは時刻の戻りが発生しないようになっている。
時刻が早まっている場合は段々と時計の進みを遅らせて正しい時刻になったらいつも通りの進みの早さに戻る。
これをslewモードと言う。
反対に徐々に早めたり遅めたりせず、一気に時刻を設定してしまうモードをstepモードと言う。
Linuxのntpdは起動時に-xオプションを渡す*3事でslewモードになる。
詳しくはman 8 ntpdを参照。

*1:具体例:「ログファイルの時刻が時系列順でなくなってしまう」「経過時間を計算しようと2つの時刻の差分を取ったらマイナスになった」

*2:なので思い付く問題と言えばRTX810のログの時刻が時系列でなくなる可能性があるぐらい?

*3:Debian系なら/etc/default/ntp、Redhat系なら/etc/sysconfig/ntpd