謹賀新年2022、そして、ntpd.conf(OpenNTPd)を和訳したよ
謹賀新年2022
あけましておめでとうございます。
今年もよろしくお願いいたします。
思えば、2017年に、「毎日何かやって投稿しよう!」と思って始めたこのブログですが、仕事が忙しくていつの間にかほったらかしになってました。
年も改まったことですし、再始動しようかな?と思う次第でございます。
時は金なり
相変わらず、物理or仮想を問わず、Linux環境がゴロゴロしてる我が家なわけですが…昨年、ドメインコントローラーと連携するストレージサーバーの設定をせっせとやっておりました。DCはSamba、ストレージはFreeNASなんですけどね。
設定にはとにかくハマりまくったのですが、そのうちの一つの要因が、「時計合わせ」各サーバーの時計がでたらめだったもんで、うまく同期してくれなくて、倒れそうなくらいハマりまくったというね。NICTの公開NTPであるntp.nict.jpに時刻同期してなんとかしたということがありました。
ネット回線が太い昨今とはいえ、各々のマシンが外部にトラフィックを出すというのも如何ながものかな?と思うので、ローカルにntpdを構築することに。
せっかくなので、LinuxではなくてOpenBSDでやってみようかなと思い立ちましたとさ。
同姓同名の別人?
相変わらず、ハマりの神様からは好かれてるのかな?
LinuxでもやったことあるからOpenBSDでも余裕でしょ?と適当にntpd.confをいじりまくったら、全くうまくいかないというね。
manページをじっくり読んで悟る。
「ntpd.conf、LinuxのntpとOpenNTPdで全く違くね?」
ということで、勉強し直しだぁ!とばかりに和訳して設定して、うまく行きましたとさ。
せっかく和訳したから、載せとくね?
ということで、拙い和訳ですが、せっかくなので、載せときますね。
なお、内容というか和訳の精度については、一切保証できません、ごめんなさい。
参考までに、ということで。
では、今年もゆるゆるとやっていきますので、よろしくです!
----------------------------------------------------------
名称
ntpd.conf Network Time Protocol デーモン設定ファイル
解説
このマニュアルページでは、ntpd(8)設定ファイルのフォーマットを解説する。
ntpd.confは下記のフォーマットになる。
空行と'#'で始まる行は無視されるされる。
キーワードは設定ファイル中で複数回指定されるかもしれない。基本的な設定オプションは下記の通り。
listen on address[rtable table-id]
ntpd(8)が動作するローカルIPアドレスまたはホスト名を指定する。複数回指定した場合は、それぞれのアドレスで動作する。もし、アドレスとして'*'を指定すると、ntpd(8)は明確なルーティングテーブルを用いた全てのローカルアドレスで動作する。ntpd(8)は標準ではどのアドレスでも動作しない。rtableオプションは動作するルーティングテーブルを指定する。標準では、ntpd(8)は現在用いられているルーティングテーブルを用いて動作する。
(例)
listen on *
または
listen on 127.0.0.1
listen on ::1
listen on 127.0.0.1 rtable 4
query from sourceaddr
ntpd(8)が外部問い合わせに使うべきローカルIPアドレスを指定し、その後にserversを指定する。そのIPアドレスはそのPC上で使用できる複数のIPアドレスを指定することができる。
(例)
query from 192.0.2.1
query from 2001:db8::1
sensor device[corrrection microseconds][refid ID-string][stratum stratum-value][trusted][weight weight-value]
ntpd(8)が使用すべき時間センサーデバイスを指定する。sensorは複数回指定できる。ntpd(8)は実在するそれぞれのセンサーを使用できる。実在しないセンサーは無視される。もし、デバイス名称として'*'が指定された場合は、ntpd(8)が認識した全ての時間センサーデバイスを使用する。
(例)
sensor *
sensor nmea0
correction
センサーとのズレを補正するためのマイクロ秒を指定する。最大値は127秒。
(例)DCF77が実時間と70msずれて受け取る場合
sensor udcf0 correction 70000
refid
ID-stringはセンサーのタイプを4文字以上のアスキー文字列で指定する。RFC2030はいくつかの一般的な参照識別子を提案しているが、新しい識別子はふさわしいものとして考案できる。もし、ID-stringが指定されない場合は、ntpd(8)は一般的な参照IDを用いる。
(例)
sensor nmea0 refid GPS
stratum
stratumのデフォルトは1であるが、変更する場合に指定する。
trusted
学習された時刻が、セキュア、信頼できる、そして中間者攻撃をされやすくないことを示し、constraintsを有効にしてもスキップされる。これは、constraintsが使用できない環境でブート時間を合わせる時に有効である。
weight
関連した重要なタイムソース(serversまたはsensor)を越えてコントロールを許可する。値は1〜10までを指定する。指定しない場合は、デフォルトは1になる。例えば、weightに5を指定したサーバーは、1で設定したサーバーであっても、5回時間のズレを調整する。
server address [trusted] [weight weight-value]
同期するNTPサーバーのIPアドレスまたはホスト名を指定する。もし、複数回指定した場合は、ntpd(8)は全ての指定したサーバーと同期を試行する。もし、複数のIPv4またはIPv6アドレスのホスト名を名前解決する場合は、最初のアドレスを使用する。もし、応答がない場合は、ntpd(8)は次のIPアドレスにリトライし、稼働しているIPアドレスが見つかるまでリトライを続ける。
(例)
server 10.0.0.2 wieight 5
server ntp.example.org weight 1
冗長的に提供するために、複数のサーバーを設定することが良い方法である。一般的に、ネットワーク遅延の低いサーバを使用すると最も正確に時刻を得られる。
servers address [trusted] [weight weight-value]
serverの場合と同様に、同期するNTPサーバーのIPアドレスまたはホスト名を指定する。もし、複数回指定した場合は、ntpd(8)は全ての指定したサーバーと同期を試行する。複数のIPアドレスの名前解決ができれば、ntpd(8)は全ての指定したサーバーと同期を試行する。もし、複数のIPv4またはIPv6アドレスのホスト名を名前解決する場合は、最初のアドレスを使用する。
(例)
servers pool.ntp.org
servers pool.ntp.org weight 5
制限事項
ntpd(8)は、TLSで暗号化された信頼されたHTTPSサーバーに'日付'を問い合わせするように設定することができる。この時刻情報は精度が高いものとしては使用できないが制限を証明されたものとして動作し、それによって、認証されていないNTP中間者攻撃の影響を減らす。制限範囲外のNTPサーバーから受け取ったNTPパケットは破棄され、そのようなサーバーは免役としてマークされる。
constraint from ule[ip]
constraintを提供するHTTPSサーバーのURL、IPアドレス、ホスト名を指定する。もし、URLを複数指定した場合は、稼働しているURLが見つかるまで試行する。URLと期待された証明書の名前は指定されたURLとして常に取得される。もし、constraint fromを何度も用いる場合は、ntpd(8)は指定された全てのサーバーの中間値を算出する。
(例)
servers ntp.example.org
constraint from www.example.com
constraint from "httos://9.9.9.9" "2620:fe::9"
constraints from url
constraintの場合と同様に、constraintを提供するHTTPSサーバーのURL、IPアドレス、ホスト名を指定する。複数のIPアドレスの名前解決する場合は、ntpd(8)はそれら全ての中央値を算出する。
(例)
servers pool.ntp.org
constraints from "https://www.google.com"
ファイル
/etc/ntpd.conf
デフォルトのntpd(8)設定ファイル
/etc/example/ntpd.conf
設定ファイルのサンプル
参照
ntpctl(8)、ntpd(8)、sysctl(8)
履歴
初出 OpenBSD 3.6