ntpdcが動かなくなった
FreeBSD 10.1-RELEASEでFreeBSD-SA-16:09.ntpに対応するためfreebsd-updateを実行し、ntpdなど関連ファイルを更新しました。
ntpdを再起動して、動作確認のためにntpdcを起動したところ
$ ntpdc
ntpdc> peer
localhost: timed out, nothing received
***Request timed out
ntpdc>
というエラーが出て動かなくなってしまいました。
このことをfreebsd-users-jpメーリングリストで質問したところ、ntpdcが使うmode 7というプロトコルはntp 4.2.7p230でデフォルトでは無効に変更されていることを教えていただきました。
http://support.ntp.org/bin/view/Main/SoftwareDownloadsというページに説明があり、知識不足のため理解できないまま紹介してしまいますが
- mode 7は類似コマンドのntpqが使っているmode 6というプロトコルよりも実装の難易度が高く、バグの混入が懸念されること。
- mode 6はRFC 1305で標準化されているのに対し、mode 7はdefined as vendor/implementation-specificであること。
を理由として挙げているように読めます。
RFC 1305はNTP ver.3についての規定ですが、NTP ver.4について規定しているRFC 5905でもp.21のFigure 10: Association ModesでValue 6はNTP control message、Value 7はreserved for private useと書かれています。
過去にはntpdcだけが持っている機能もあったようですが、今ではntpdcの機能はすべてntpqでも提供されているとのことなので、特に理由がなければntpdcの利用は取りやめてntpqに移行するのがよさそうです。例えばシェルスクリプトの中でntpdcを起動していて、書き換えが済むまでの移行措置とか、リスクを評価した上で受け入れられると判断してntpdc/mode 7を使い続けるためには、ntp.confに
enable mode7
と記述すれば、mode 7が有効になってntpdcを使うことができるようになります。
トップページへ
Copyright(c) 2016 Koh-ichi Ito, All rights reserved
Last update: $Date: 2018-10-21 16:09:48 +0900 (Sun, 21 Oct 2018) $