LinuxのNTPサーバ設定
LinuxのNTPサーバ設定 †
基本的に「/etc/ntp.conf」ファイルを編集して設定をします。
が、設定する内容がよくわかりにくく、ちょっと悩んだので、悩んだ部分をメモします。
主な項目 †
ntp.confの主な設定項目があります。
- server
- 参照するNTPサーバを指定します。
- restrict
- アクセス制限を設定します。
server †
基本的には、参照したいNTPサーバのIPアドレスを指定するだけです。
例えば、NICTが提供するNTPサーバに時刻同期したい場合
server ntp.nict.jp
と記述します
■参考
restrict †
これが、最初さっぱりわかりませんでした笑
基本的な構文は以下の通り
restrict {host|default} [mask '''netmask'''] [parameter] [parameter] ...
端的には、hostに該当した場合、parameterの通りに制御せよ、ということです。
各項目の意味は以下の通り
- host
- アクセス制限対象のホスト/ネットワークを指定します。hostにはネットワークを指定することが出来、その場合は、[mask netmask]を指定します。
restrict 192.168.0.1 ignore ← ホスト192.168.0.1からのすべてのNTPパケットに応答しない restrict 192.168.0.0 mask 255.255.255.0 ignore ← ネットワーク192.168.0.0/24からのすべてのNTPパケットに応答しない
- default
- hostの設定に該当しない場合のアクセス制御を設定します。
restrict default ignore ← デフォルトはNTPパケットに応答しない
- parameter
- アクセス制御のパラメータを指定します。
parameterの解説は、以下のサイトから引用します。秀逸です。
- http://www.asahi-net.or.jp/~AA4T-NNGK/ntpd.html
■ignore : すべての NTP パケットに答えない
■noquery : サーバの設定変更や状態の確認/変更に使用される NTP モード 6 (ntpq で使用) および 7 (ntpdc で使用) のパケットは受け付けない。時間の問い合わせには影響なし。なお、これらのパケットも UDP の 123 番ポートを使用する点に変わりはない
■nomodify : noquery のモードに当てはまるパケットが送られ、実際に設定や状態が変更されるようなコマンドが来た場合には拒否する。noquery よりは規制が若干緩いことになる。時間の問い合わせには影響なし
■notrap : host に対して、こちらの NTP内部情報 (設定変数や時間の参照源などの情報) を提供しない。そうした情報の伝達に使われるのは NTP モード 6 のサブセットで、 `control message trap service' と呼ばれる。 ntpq に返答を返さなくなるが、時間の問い合わせには影響なし。 noquery との差異が分かりづらいが、 noquery は「要求を受け取らない」であるのに対し、 notrap は「返答を返さない」ということのようだ
■notrust : NTP Ver.4.2 以降と 4.1 以前とでは働きが大きく異なる。バージョン 4.1 まででは、「時間の参照源としては使わない (信用しない) が、その他の面では制限なし」の意。かたや NTP 4.2 からは、「参照源としてだけでなくクライアントとしても信用しない。ただし暗号認証によって信頼関係が証明されればその限りでない」という意味となり、サーバ側でこれを指定された host やサブネット (クライアント) からは、そのサーバを時間参照することさえできなくなる
■limited : discard コマンドで指定した閾値を超えた頻度の問い合わせに対して、参照サービスの提供を拒絶する。モード 6/7 つまり ntpq 及び ntpdc のパケットはこの規制の対象とならない。discard コマンドは検証したことがないのでオフィシャルドキュメントを参照されたし
■kod : "Kiss of Death" の頭文字。通常、discard コマンドによって問い合わせ頻度閾値が設定してあると、それを犯した問い合わせパケットを破棄するだけだが、その上で kod の指定してあるクライアントには、キス・オブ・デス パケットが送られる。KoD は NTPプロトコルのパケットフォーマットのひとつで、クライアントに対して「もう問い合わせをやめてくれ」という意向を伝えるもの。KoD を受け取った NTPクライアントは、「断られた」ことを示すビットを立て、そのサーバへはもう問い合わせをしなくなる決まりになっている。KoD パケットの送信自体、最大 1パケット/秒 に制限されており、それ以上の頻度で送られてきた失礼な問い合わせパケットはただ単に破棄される。この仕組みによってビットの立ってしまったクライアントと当該サーバとの通信を再び可能にするには、クライアントとサーバ両方の ntpd を再起動しなければならないらしい。discard コマンドは検証したことがないのでオフィシャルドキュメントを参照されたし
■noserve : ntpq 及び ntpdc のパケットだけを受け入れ、時間参照サービスは提供しない。つまり noquery の逆
内部NTPサーバとして公開する場合、例えばこんな感じ
restrict 192.168.0.0 mask 255.255.255.0 nomodify