NTP.CONF(5) | FreeBSD File Formats Manual | NTP.CONF(5) |
名称
ntp.conf — ネットワークタイムプロトコル (NTP) デーモンの設定ファイル書式
/etc/ntp.conf |
解説
ntp.conf 設定ファイルは、 ntpd(8) デーモンの初期始動時に、同期用時刻供給源、モード、その他関連情報を指定するために読み込みます。通常は、この設定ファイルは /etc ディレクトリにインストールされますが、どのディレクトリにもインストール可能です (デーモンの -c コマンドラインオプションを参照)。 /etc/rc.d/ntpdate スクリプトは、変数“ ntpdate_hosts
”が宣言されなかったなら、使用する NTP サーバのリストを取得するためにこのファイルを読み込みます。これに関する詳しい情報については rc.conf(5) マニュアルページを参照してください。
ファイルのフォーマットは、他の UNIX 設定ファイルと似ています。コメントは、文字‘ #
’からはじまり、行末まで続きます。また、空行は無視されます。設定コマンドは、先頭のキーワードと、その後に続く引数のリストからなります。引数にはオプションのものもあります。各引数は空白で区切られています。コマンドは、複数の行にまたがることはできません。引数として、ホスト名、ドットで 4 つの部分に区切られた形式の数値で書かれたホストアドレス、整数、浮動小数点で表現された数値 (秒で時間を指定した場合)、テキスト文字列があります。
このマニュアルページの残りでは、設定と制御オプションについて述べます。 ( /usr/share/doc/ntp にて提供される HTML 文書の一部として利用可能な) “Notes on Configuring NTP and Setting up a NTP Subnet” (NTP の設定と NTP サブネットの設定に関する注意) のページでは、これらオプションについて更に進んだ議論があります。一般的な 設定オプション の議論に加えて、サポートされている機能と、その機能を制御するためのオプションについて述べた、次のようなセクションがあります:
これらのセクションの後に その他のオプション について述べたセクションもあります。利用可能なオプションは豊富にありますが、必要なオプションは、 server, peer, broadcast, manycastclient コマンドだけです。
設定オプション
次に述べるのは、NTPv4 の設定コマンドについてです。これらのコマンドは、基本的な機能は NTPv3 のときと同じですが、場合によっては、新たな機能や引数を持ったものがあります。コマンドには、2種類のクラスがあります。設定コマンドは、リモートサーバまたは通信相手または参照クロックとの永続的なアソシエーションの設定を行ないます。補助コマンドは、さまざまな関連操作を制御する環境変数を設定します。設定コマンド
コマンドのキーワードおよび必要とされる IP アドレスの種類によって、さまざまなモードが決定されます。アドレスは次のような種類にクラス分けされます。 (s) リモートサーバあるいは通信相手 (IPv4 クラス A, B, C のいずれか)、 (b) ローカルインタフェースのブロードキャストアドレス、 (m) マルチキャストアドレス (IPv4 クラス D)、あるいは、(r) 参照時間アドレス (127.127.x.x) です。以下では、各コマンドに適用可能なオプションだけを記載していることに注意してください。記載していないオプションを使用してもエラーにならないかもしれませんが、その結果、妙なことをしたり、破壊的なことをしでかしたりすることがあります。IPv6 の基本ソケットインタフェース拡張 (Basic Socket Interface Extensions) (RFC-2553) が検出されるなら、 IPv4 アドレスファミリのデフォルトサポートに加えて、 IPv6 アドレスファミリのサポートが生成されます。小数の例として、 ntpdc によって生成されたリソースリスト (reslist) 掲示板 (billboard) を含んで、IPv6 アドレスが自動的に生成されます。アドレスフィールドのコロン“:”の存在によって IPv6 アドレスを識別することができます。常に IPv4 である、参照クロックアドレスを除いて、 IPv4 アドレスを使用することができるほとんどの場所で IPv6 アドレスを使用することができます。
ホスト名が予想されるコンテキストでは、ホスト名に先行する -4 修飾子は、 IPv4 名前空間の DNS 解決を強制し、 -6 修飾子は IPv6 名前空間の DNS 解決を強制することに注意してください。そのアドレスファミリのための同等なクラスの IPv6 参照を参照してください。
- server address [ key key | autokey][ burst][ iburst][ version version][ prefer][ minpoll minpoll][ maxpoll maxpoll]
- peer address [ key key | autokey][ version version][ prefer][ minpoll minpoll][ maxpoll maxpoll]
- broadcast address [ key key | autokey][ version version][ prefer][ minpoll minpoll][ ttl ttl]
- manycastclient address [ key key | autokey][ version version][ prefer][ minpoll minpoll][ maxpoll maxpoll][ ttl ttl]
これら 4 つのコマンドは、使用するタイムサーバ名またはアドレスと、動作を行うモードを指定するものです。 address は、DNS 名、またはドット付き 4 つ組形式の IP アドレスのいずれかを指定できます。アソシエーションの振る舞いに関する追加情報は、 ( /usr/share/doc/ntp で提供された HTML 文書の一部として利用可能な) “Association Management” (アソシエーション管理) のページにあります。
- server
- タイプ s および r のアドレス用です。このコマンドは、リモートサーバまたはローカルのラジオ時計との永続的クライアントモードのアソシエーションを行使します。このモードでは、ローカル時計がリモートサーバに同期することはありますが、リモートサーバがローカル時計に同期することは決してありません。このコマンドは、タイプ b または m のアドレスに対して使用すべきでは ありません。
- peer
- タイプ s のアドレス専用です。このコマンドは、指定したリモートの通信相手との間で永続的共通アクティブ (symmetric-active) モードのアソシエーションを行使します。このモードでは、ローカル時計がリモートの通信相手に同期することがあります。また、リモートの通信相手がローカル時計に同期することもあります。この性質は、さまざまな故障の生じ方によっては、ローカル側とリモート側のどちらもがより良い時刻源になりえるような、サーバのネットワークで有益です。このコマンドは、タイプ b, m あるいは r のアドレスに対して使用すべきでは ありません。
- broadcast
- タイプ b および m のアドレス専用です。このコマンドは、永続的ブロードキャストモードのアソシエーションを行使します。複数のローカルブロードキャストインタフェース (サブネット) および / あるいは、複数のマルチキャストグループを指定するため、複数のコマンドを使用できます。ローカルのブロードキャストメッセージは、指定されたサブネットに関連づけられたインタフェースだけに到達するということに注意してください。ただし、マルチキャストメッセージは全てのインタフェースに到達します。ブロードキャストモードでは、ローカルサーバは、指定した address に待機しているクライアント群に対して定期的にブロードキャストメッセージを送信します。このときのアドレスは、通常は、ローカルネットワーク (の 1 つ) のブロードキャストアドレス、もしくは NTP に割り当てられたマルチキャストアドレスです。 IANA は、マルチキャストグループの IPv4 アドレス 224.0.1.1 と IPv6 アドレス ff05::101 (サイトローカル) NTP 専用に割り当てています。しかし、メッセージを収容するために、その他の競合しないアドレスも管理境界内で使用できます。もともと、この仕様は、ローカルサーバが送信側として動作する時のみ適用されるものです。ブロードキャストクライアントとして動作させたい場合は、後に説明する broadcastclient もしくは multicastclient コマンドの項を参照してください。
- manycastclient
- タイプ m のアドレス専用です。このコマンドは、指定されたマルチキャストアドレスに対してメニーキャストクライアントモードのアソシエーションを行使します。この場合、使用するメニーキャストサーバで manycastserver コマンドで指定したアドレスと一致するアドレスを指定することが必要です。 IANA が割り当てた 224.0.1.1 というマルチキャストアドレスは、使用すべきではありません。ただし、これらのメッセージがインターネット上の広大な領域に撒き散らされ、それによって膨大な量のリプライが送り手に集中しないように、何か特別な手段を講じている場合は別です。 manycastserver コマンドは、ローカルサーバがクライアントモードで動作することを指定します。ローカルサーバは、ブロードキャスト / マルチキャストメッセージを送った結果発見したリモートサーバとともに、クライアントモードで動作します。クライアントは、指定した address に関連するグループアドレスへ、要求メッセージを送ります。そして、特に有効にされたサーバがこの要求メッセージに応答します。クライアントは、最も正確な時間を提供するサーバを選択し、以後は、 server コマンドを使用した場合と同様の動作を継続します。それ以外のサーバは、まるで応答を受信しなかったかのように無視します。
オプション:
- autokey
- サーバもしくは通信相手との間で送受信したパケットの全てが、 認証コマンド の項で説明する autokey 方式を使用して暗号化された認証フィールドを含むようになります。
- burst
- サーバが到達可能であるとき、通常のパケットの代わりに 8 つのパケットをバースト送信します。通常、パケットの間隔は 2 秒です。しかしながら、モデムまたは ISDN 電話接続が完了するまでの時間を追加することができる、calldelay コマンドで 1 番目と 2 番目のパケットの間隔を変更することができます。この動作は、 server コマンドと s アドレスを使った時刻管理を質的に改善するために設計されました。
- iburst
- サーバが到達可能でないとき、通常のパケットの代わりに 8 つのパケットをバースト送信します。通常、パケットの間隔は 2 秒です。しかしながら、モデムまたは ISDN 電話接続が完了するまでの時間を追加することができる、calldelay コマンドで最初の 2 つのパケットの間隔を変更することができます。この動作は、 ntpd(8) が -q オプション付きで起動されたとき、 server コマンドと s アドレスによる初期同期確立を高速化するために設計されました。
- key key
- サーバもしくは通信相手との間で送受信したパケットの全てが、 1 から 65534の間 (両端を含む) の値のキー識別子 key を使用して暗号化された認証フィールドを含むようになります。デフォルトでは、暗号化されたフィールドは含まれません。
- minpoll minpoll
- maxpoll maxpoll
- このオプションは、NTP メッセージに対する最小および最大のポーリング間隔を、秒単位の 2 の冪乗で指定します。最大ポーリング間隔のデフォルトは 10 (1024秒) ですが、 maxpoll オプションを使用することで、上限である 17 (36.4 時間) まで増やすことができます。最小ポーリング時間はのデフォルトは 6 (64 秒) ですが、 minpoll オプションを使用することで、下限である 4 (16 秒) まで減らすことができます。
- noselect
- 表示目的を除いて、未使用としてサーバをマークします。このサーバは選択アルゴリズムによって破棄されます。
- prefer
- サーバに望ましいものとしての印をつけます。他の条件で差がなければ、この印のついたサーバは、正しく動作しているホストの中から同期用に選択されます。さらなる情報については、 ( /usr/share/doc/ntp で提供された HTML 文書の一部として利用可能な) “Mitigation Rules and the prefer Keyword” (緩和のルールと prefer キーワード) のページを参照してください。
- ttl ttl
- このオプションは、ブロードキャストサーバモードとメニーキャストクライアントモードでのみ使用します。このオプションは、ブロードキャストサーバとマルチキャストサーバの上で使用する生存時間 ttl を指定し、リング検索をメニーキャストクライアントパケットに拡張する最大 ttl を指定します。デフォルトの値は 127 ですが、適切な値を選択するのはちょっとした黒魔術のようなものですので、システム管理者との間の調整が必要です。
- version version
- 送出する NTP パケットで使用するバージョン番号を指定します。バージョン 1-4 から選択します。バージョン 4 がデフォルトです。
補助コマンド
- broadcastclient
- このコマンドは、任意のローカルインタフェース (タイプ b) に対するブロードキャストサーバメッセージの受信を可能にします。最初のメッセージを受信する際に、ブロードキャストクライアントは、サーバとの間でクライアントサーバ間の短いやりとりを用いて、名目上の (nominal) サーバ伝播遅延を測定します。そのあと、ブロードキャストクライアントモードに入ります。このモードで、その後に受信するブロードキャストメッセージに同期します。偶然、あるいは故意にこのモードで両者決裂に至ることを避けるため、サーバとクライアントはどちらも、 認証コマンド の項で説明する共通キー認証または公開キー認証を用いて動作しなくてはならないことに注意してください。
- manycastserver address ...
- このコマンドは、(1個または複数の) 指定したマルチキャストグループアドレス (タイプ m) に対するメニーキャストクライアントメッセージの受信を可能にします。少なくとも 1 個のアドレスを必要とします。しかし、リプライの伝播を制限し、最初の送信側に大量のメッセージが殺到しないように、なんらかの方策を特別に用意しない限り、 IANA が割り当てた NTP マルチキャストアドレス 224.0.1.1 を使用してはいけません。偶然、あるいは故意にこのモードで両者決裂に至ることを避けるため、サーバとクライアントはどちらも、 認証コマンド の項で説明する共通キー認証または公開キー認証を用いて動作しなくてはならないことに注意してください。
- multicastclient address ...
- このコマンドは、(1個または複数の) 指定したマルチキャストグループアドレス (タイプ m) に対するマルチキャストサーバメッセージの受信を可能にします。最初のメッセージを受信する際に、マルチキャストクライアントは、サーバとの間でクライアントサーバ間の短いやりとりを用いて、名目上の (nominal) サーバ伝播遅延を測定します。そのあと、ブロードキャストクライアントモードに入ります。このモードで、その後に受信するマルチキャストメッセージに同期します。偶然、あるいは故意にこのモードで両者決裂に至ることを避けるため、サーバとクライアントはどちらも、 認証コマンド の項で説明する共通キー認証または公開キー認証を用いて動作しなくてはならないことに注意してください。
認証機能のサポート
認証機能のサポートによって、NTP クライアントは、サーバが本当に既知で信頼できるものであり、偶然であれ意図的であれ、サーバのふりをしてクライアントをだまそうとする侵入者ではないことを確認できます。 NTPv3 仕様 RFC-1305 は、受け取った NTP パケットを暗号により認証するための方式を定義しています。もともと、この機能は、Cipher Block Chaining (CBC) モードで機能する Data Encryption Standard (DES) アルゴリズムを使用して (一般的に、DES-CBC と呼ばれる方式です) 実現されていました。後に、秘密キーを使用した RSA Message Digest 5 (MD5) アルゴリズムを用いて (一般的に、 keyed-MD5 と呼ばれています) に置き換えられました。どちらのアルゴリズムもメッセージダイジェスト、つまり、片方向ハッシュを計算します。これは、サーバが正しい秘密キーとキーの識別子を持っているか否かを検証するのに使用できます。NTPv4 は、NTPv3 の方式を保持しています。この方式は、共通キー暗号化と説明するのが適切でしょう。それに加えて、公開キー暗号化に基づく新しい Autokey 方式も提供しています。一般に、公開キー暗号化は共通キー暗号化よりも安全であると考えられています。この方式の安全性が、両サーバそれぞれで生成され外部に持ち出されない秘密の値 1 個に基づくからです。 Autokey を使うことで、キー配布/管理機能が含むものは全て公開値のみです。値が公開されているので、キー配布と保管が単純化されます。公開キー管理は、商用サービスで提供されているか、または OpenSSL ソフトウェアライブラリ、または NTPv4 配布中のユーティリティプログラムによって作成された、X.509 証明書に基づいています。
共通キー暗号化のためのアルゴリズムは NTPv4 配布に含まれていますが、公開キー暗号化は、NTP 配布を構築する前に OpenSSL ソフトウェアライブラリがインストールされている必要があります。それを行うための指示は、配布ページの "構築とインストール"にあります。
認証機能はアソシエーションそれぞれに対して個別に設定されます。 設定オプション のページで説明されるように、認証機能は、 peer, server, broadcast と manycastclient 設定コマンドの key サブコマンドまたは autokey サブコマンドを利用して設定されます。以下で説明された認証オプションは、デフォルト以外であるなら、キーファイルの位置、どの共通キーが信頼されているか、そして、デフォルト以外であるなら、様々な操作の間隔を指定します。
認証は、以下で説明されるように設定されていなくて効果がなくても、常に有効にされます。メッセージ確認コード (MAC) を含んでいる NTP パケットが到着するなら、すべての暗号チェックをパスする場合にだけ、受け付けます。チェックには正しいキー ID、キーの値、とメッセージダイジェストを必要とします。パケットが何らかの方法で変更されているか、または侵入者によって再送されたなら、これらのチェックが 1 つ以上失敗して、破棄されます。さらに、Autokey 方式は、サーバ証明書を取得するために予備のプロトコル交換、資格証明書の検証とプロトコルの初期化を必要とします。
auth フラグは、新しいアソシエーションまたはリモート設定コマンドが暗号化認証を必要とするかどうかを制御します。 enable と disable コマンド、および、また、別のマシンで ntpdc(8) プログラムを実行することによってリモート設定コマンドを送信することによって、このフラグを設定するか、またはリセットすることができます。デフォルトで有効である、このフラグが有効にされるなら、新しいブロードキャストクライアントと共通パッシブアソシエーションとリモート設定コマンドは、共通キーまたは公開キー暗号化のいずれかを使用して暗号的に認証されなければなりません。このフラグが無効であるなら、たとえ暗号的に認証されていなくても、これらの操作は有効です。当然のことながら、 auth フラグが無効にされた状態で動作することは、悪党ハッカー (訳注: クラッカー) が偽時計 (falseticker) のふりをして、重大なシステムタイムキーパ (時間管理) を中断することができるところで重大な脆弱性を招きます。このフラグは、新しいブロードキャストのための応答で新しいアソシエーション、共通アクティブメッセージとリモート設定コマンドを許可するか拒否すること以外の目的はありません、そして特に、フラグは認証プロセス自体で効果がないことに注意することは重要です。
マルチキャストサポートが利用可能であるところで魅力的な代替手段は、クライアントが、 自動 NTP 設定オプション のページで説明されているようにサーバのために定期的にトロール (メッセージを投稿) する、メニーキャスト (manycast) モードです。このモードでは共通キーまたは公開キー暗号化認証のどちらかを使用することができます。メニーキャストモードの主要な利点は、クライアントが正常な操業の間にそれらを見つけて、すべてのクライアントのための設定ファイルを識別できるので、潜在的サーバは、事前に設定される必要がないということです。
共通キーと公開キー暗号化の両方のセキュリティモデルとプロトコル方式は、以下のように要約されます。 http://www.ntp.org/
からリンクされた NTP プロジェクトページにある簡単な報告、論文とレポートにあります。
共通キー暗号化
RFC-1305 仕様では、本来、65,534 個のキーの中の任意の 1 個を使い、アソシエーションを認証することが可能です。キーそれぞれは 32 ビットのキー識別子により区別されます。ここで使われるサーバとクライアントは、 NTP パケットを認証するためのキーおよびキー識別子を合意しておく必要があります。キーと関連する情報は、NTP プロトコル自体の範囲を超えて安全な手段を使用して配布されて、格納しなければならない、通常 ntp.keys と呼ばれるキーファイルの中で指定されます。本来の NTP アソシエーションに使用されるキーに加えて、追加のキーを ntpq(8) および ntpdc(8) ユーティリティプログラム用のパスワードとして使用できます。ntpd(8) が初めて起動すると、 ntpd は、 keys 設定コマンドで指定したキーファイルを読み込み、キーキャッシュにキーを設置します。一方、個々のキーは使用する前に trusted コマンドでアクティブにしておくことが必要です。これにより、例えば、いくつかのキーの束をインストールし、 ntpdc(8) を使用してキーの束をリモートからアクティブにしたり、非アクティブにしたりできます。また、これにより、キーの安全性が損なわれてしまった場合に使用できるキーの取消機能も提供されます。 requestkey コマンドは、 ntpdc(8) ユーティリティ用にパスワードとして使用されるキーを選択します。それに対して、 controlkey コマンドは、 ntpq(8) ユーティリティ用にパスワードとして使用されるキーを選択します。
公開キー暗号化
NTPv4 は、RFC-1305 に記述されたオリジナルの NTPv3 共通キー方式とさらに、公開キー暗号化に基づいている Autokey プロトコルをサポートします。 Autokey プロトコルページで説明されている Autokey バージョン 2 プロトコルは、 MD5 メッセージダイジェストを使用してパケットの整合性を検証し、デジタル署名といくつかのダイジェスト/署名方式でソースを検証します。識別方式 (Identity Schemes) ページで説明され、暗号化チャレンジ/レスポンスアルゴリズムに基づくオプションの識別方式も利用可能です。これらの方式をすべてを使用することは、変更、偽造、なり済まし、とほとんどのクロッギング (渋滞) 攻撃があってもなくても、応答に対して強固なセキュリティを提供します。Autokey プロトコルには、サポートされた様々な NTP モードと対応するいくつかの操作モードがあります。ほとんどのモードは、クライアントとサーバによって独立して計算することができる特別なクッキーを使用しますが、転送時に暗号化されます。それに加えて、すべてのモードで S-KEY 方式と良く似た方式を使用します。その方式では、疑似乱数キーのリストを生成し、逆順で使用します。これらの方式は、幹部向け要約、現状、要約スライド、文献リストともども、“自主認証 (Autonomos Authentication)”のページで説明します。
Autokey サーバとクライアントによって使用される特有の暗号化環境は、 ntp-keygen(8) プログラムによって生成された 1 組のファイルとソフトリンクによって決定されます。これには、必要なホストキーファイル、必要な証明書ファイルとオプションの署名キーファイル、閏秒ファイルと識別方式ファイルを含んでいます。ダイジェスト/署名方式は、適合する署名キーにともに X.509 証明書で指定されます。 RSA 暗号化方式で MD5 メッセージダイジェストを表す md5WithRSAEncryption のような特定の文字列によってそれぞれ識別される、 OpenSSL ソフトウェアライブラリで利用可能ないくつかの方式があります。現在の NTP 配布は、RSA と DSA デジタル署名に基づくものを含んで、 OpenSSL ライブラリですべての方式をサポートします。
暗号化コンパートメント (区画) とセキュリティ階層を定義するために NTP の安全なグループを使用することができます。グループ内のすべてのホストが同じグループで 1 つ以上の信頼されたホストに証明トレイルを構築することができることは重要です。各グループのホストは、1 つ以上の信頼されたホストへのトレイルにしたがったすべてのホストへの証明書を取得するために Autokey プロトコルを実行します。これは、NTP サブネットが、予期される失敗条件さえのもとでさえ、すべてのグループのホストが少なくとも 1 つの信頼されたホストへのトレイルを見つけることができるようなものを形成することができるように、設計するためにすべてのホストの設定ファイルを必要とします。
名前付けとアドレス付け
DNS は、ネームサーバがクロックを同期させるまで完全に信頼することができないので、 Autokey がアドレスを解決するために DNS を使用しないことに注意することは重要です。ホスト識別資格証明書と暗号化の値をバインドするために Autokey によって使用される暗号の名前は、インタフェース、ネットワーク、といかなる他の命名規則から独立していなければなりません。名前は、サブジェクトと発行人フィールドのいずれかまたは両方のホスト証明書に現れるので、DNS 汚染に対する保護は不可欠です。慣例により、Autokey ホストの名前は、Unix の gethostname(2) システムコールか、または他のシステムの同等な関数によって返された名前です。システム設計モデルでは、代替の名前または別名を許可する規定はありません。しかしながら、これは、DNS 別名、各インタフェースのための異なった名前、その他、が何らかの方法で抑制されると言っているわけではありません。
また、Autokey は、特になり済まし攻撃をそらすために、プロトコルによってともにバインドされた、ホスト名、ネットワークアドレス、と公開キーを使用して信頼性を検証することに注意することも重要です。こういう訳で、Autokey が、メッセージダイジェスト計算で送信元と宛先の IP アドレスを含んでいるので、同じアドレスはサーバとクライアントの両方で利用可能でなければなりません。このために、ネットワークアドレス変換方式がある操作は不可能です。これは政府と企業の NTP サーバがファイアウォール境界の外で運用されるところで意図された堅固なセキュリティモデルに反映しています。
操作
認証方式 (なし、共通キー、公開キー) と識別方式の特定の組み合わせは暗号タイプ (cryptotype) と呼ばれますが、すべての組み合わせは互換性があるというわけではありません。クライアント、サーバ、と通信相手が同じ暗号タイプをサポートするとは限らない管理設定があるかもしれません。原則が上記とこのセクションで説明したのを留意して、いくらでも安全な NTPv4 サブネットを設定することができます。しかしながら、いくつかの暗号タイプの組み合わせは、互いにうまく相互運用できますが、優れたセキュリティの実行例を表していないことに注意してください。アソシエーションの暗号タイプは、設定時、または適切な暗号タイプのメッセージが到達するときから少ししてか、いずれかの行使の時間で決定されます。 server または peer 設定コマンドによって行使され、 key または autokey サブコマンドが存在していないとき、アソシエーションは認証されません。 key サブコマンドが存在しているなら、アソシエーションは指定された共通キー ID を使用して認証されます。 autokey サブコマンドが存在しているなら、アソシエーションは、Autokey を使用して認証されます。
複数の識別方式が Autokey プロトコルでサポートされるとき、最初のメッセージ交換は、どれが使用されているかを決定します。クライアント要求メッセージは、どの方式が利用可能であるかに対応するビットを含んでいます。サーバ応答メッセージは、どの方式が利用可能であるかに対応するビットを含んでいます。サーバとクライアントの両方は、受信ビットとそれら自身と突き合わせて、共通の方式を選択します。
時間は公開値であるという原則に従って、サーバは、その暗号タイプのケーパビリティに適合する任意のクライアントパケットに応答します。したがって、認証されていないパケットを受信するサーバは、認証されていないパケットで応答しますが、さらにそれをサポートする暗号タイプのパケットを受信する同じサーバは、その暗号タイプのパケットで応答します。しかしながら、設定されていないブロードキャストまたはメニーキャスト (manycast) クライアントアソシエーションまたは共通パッシブアソシエーションは、サーバが、受信された最初のパケットと互換性のある暗号タイプをサポートしないなら、行使されません。デフォルトでは、明らかに危険な方法で上書きされないなら、認証されないアソシエーションは行使されません。
いくつかの例が、混乱を減らすために助けとなります。クライアント Alice には、選択された特定の暗号タイプはありません。サーバ Bob には、共通キーファイルと最小限の Autokey ファイルの両方があります。 Alice の認証されないメッセージは、Bob に到着し、Bob は認証されないメッセージで返答します。 Cathy は、Bob の共通キーファイルのコピーを持っており、Bob へのメッセージのキー ID 4 を選択しました。 Bob は彼のキー ID 4 でメッセージを検証します。それのキー同じであり、メッセージが検証されるなら、Bob は、そのキーで認証された応答を Cathy に送信します。検証が失敗するなら、Bob は、何かが壊れていることを伝える暗号-NAK (crypto-NAK) と呼ばれるものを送信します。 Cathy は、 ntpq プログラムを使用して証拠を見ることができます。
Denise は彼女自身のホストキーと証明書を始動 (roll) させました。また、彼女は Bob として識別方式の 1 つを使用します。彼女 (Denise) は最初の Autokey メッセージを Bob に送信し、それらの両方は、プロトコル認証と識別ステップを踏みます。すべてが OK という結果になるなら、Denise と Bob は上で説明されるように継続します。
彼には互換性のある認証と識別資格証明書がある限り、 Bob が同時にすべての彼女達をサポートすることができることは、上記から明確であるはずです。今、Bob はまるで彼自身のサーバの選択において彼女達のように動作することができます。彼 (Bob) は、複数の異なったサーバ (または同じサーバですが、それは役に立たないかもしれません) で複数の設定されたアソシエーションを実行することができます。しかし、賢明なセキュリティポリシでは、いくつかの暗号タイプの組み合わせを排除するかもしれません。例えば、1 つのサーバでの識別方式を実行すること、とほかの認証なしで実行することは、賢明でないかもしれません。
キーの管理
Autokey プロトコルによって使用される暗号化の値は、署名キー、識別パラメータ、と閏秒のファイルと同様に、共通キー、ホストキーと公開証明書ファイルを含む ntp-keygen(8) ユーティリティプログラムによって生成される 1 組のファイルに組み込まれています。代わりに、ホストと署名キーと、証明書ファイルは、 OpenSSL ユーティリティによって生成することができ、証明書は公開認証局からインポート (取り込む) することができます。共通キーは、 ntpq(8) と ntpdc(8) ユーティリティプログラムのために必要であることに注意してください。残りのファイルは、Autokey プロトコルだけに必要です。OpenSSL からインポートされた証明書または公開認証局には、特定の制限があります。証明書は、ASN.1 構文、X.509 バージョン 3 形式、と OpenSSL によって使用される同じ形式の PEM でエンコードされるべきです。 ASN.1 でエンコードされた証明書の全長は、1024 バイトを超えてはなりません。サブジェクトの分類名前フィールド (CN) は、それが使用されているホストの完全な形の名前です。残りのサブジェクトフィールドは、無視されます。証明書の拡張フィールドは、サブジェクトキー識別子または発行人キー識別子フィールドのどちらも含んではなりません。しかしながら、信頼されたホストのための拡張キー使用法フィールドは、値 trustRoot を含まなければなりません。他の拡張フィールドは、無視されます。
認証コマンド
- autokey [ logsec]
- Autokey プロトコルで使用するセッションキーのリストを再生成する時間間隔を指定します。各アソシエーション用のキーリストのサイズは、この時間間隔と現在のポーリング間隔に依るということに注意してください。デフォルト値は 12 です (4096 秒、つまり、約 1.1 時間です)。指定した時間間隔以上のポーリング間隔に対しては、セッションキーのリストは単一エントリを持ち、メッセージを送るごとに再生成されます。
- controlkey key
- ntpq(8) ユーティリティプログラムで使用するキーの識別子を指定します。このプログラムは、RFC-1305 で定義された標準プロトコルを使用します。 key 引数は、キーのキャッシュ中の信頼されたキーに対するキー識別子です。値の範囲は、1 から 65,534 で両端を含みます。
- crypto [ cert file][ leap file][ randfile file][ host file][ sign file][ gq file][ gqpar file][ iffpar file][ mvpar file][ pw password]
-
このコマンドは OpenSSL ライブラリを必要とします。公開キー暗号化を活性化して、メッセージダイジェストと署名暗号化方式を選択して、上に説明された必要な秘密値と公開値をロードします。ファイルが指定されなかったなら、デフォルトの名前は上記に説明するように使われます。ファイルの完全なパスと名前が指定されないなら、ファイルの位置は
keysdir コマンドで指定されたキーディレクトリか、またはデフォルトの
/usr/local/etc からの相対です。次に示すのはサブコマンドです。
- cert file
- 必要なホスト公開証明書ファイルの位置を指定します。これはキーディレクトリでリンク ntpkey_cert_ hostname を上書きします。
- gqpar file
- オプションの GQ パラメータファイルの位置を指定します。これはキーディレクトリでリンク ntpkey_gq_ hostname を上書きします。
- host file
- 必要なホストキーファイルの位置を指定します。これはキーディレクトリでリンク ntpkey_key_ hostname を上書きします。
- iffpar file
- オプションの IFF パラメータファイルの位置を指定します。これはキーディレクトリでリンク ntpkey_iff_ hostname を上書きします。
- leap file
- オプションの閏秒ファイルの位置を指定します。これはキーディレクトリでリンク ntpkey_leap を上書きします。
- mvpar file
- オプションの MV パラメータファイルの位置を指定します。これはキーディレクトリでリンク ntpkey_mv_ hostname を上書きします。
- pw password
- 秘密キーと識別パラメータを含む暗号解読のファイルのためのパスワードを指定します。これは、これらのファイルが暗号化されている場合にのみ必要です。
- randfile file
- OpenSSL ライブラリによって使用される乱数シード (種) ファイルの位置を指定します。デフォルトは上記の主要なテキストで説明されています。
- sign file
- オプションの署名キーファイルの位置を指定します。これはキーディレクトリでリンク ntpkey_sign_ hostname を上書きします。また、このファイルが見つけられないなら、ホストキーが署名キーとなります。
- keys keyfile
- 共通キー暗号化で動作するとき、 ntpd(8), ntpq(8) と ntpdc によって使用されるキーとキー識別子を含む MD5 キーファイルと完全なパスと位置を指定します。これは -k コマンドラインオプションと同じ動作です。
- keysdir path
- このコマンドは、暗号化のキー、パラメータと証明書のためのデフォルトのディレクトリパスを指定します。デフォルトは /usr/local/etc/ です。
- requestkey key
- ntpdc(8) ユーティリティプログラムで使用するキーの識別子を指定します。このプログラムでは、 ntpd(8) の現在の実装に特有の専用プロトコルを使用します。 key 引数は、信頼されたキーに対するキーの識別子です。その値は 1 から 65,534 の範囲です (両端を含む)。
- revoke logsec
- Autokey 方式で使用するある暗号化値の再計算の間隔を、秒数を 2 の指数で指定します。この方式のアルゴリズムによる総当たり攻撃をそらすために、これらの値を頻繁に更新する必要があります。しかし、いくつかの値の更新は比較的高価な処理です。デフォルトの時間間隔は 16 です (65,536 秒、つまり約 18 時間です)。指定した間隔以上のポーリング間隔に対して、メッセージを送るごとに新しい値が再計算されます。
- trustedkey key ...
- 通信相手を共通キー暗号化を使い認証する目的で、信頼する暗号化キーの識別子を指定します。また ntpq(8) および ntpdc(8) プログラムで使用されるキーも指定します。認証手続きが要求することは、この目的のために、ローカルとリモートのサーバとが同じキーおよびキーの識別子を共有していることですが、異なったサーバには、異なったキーを使用可能です。 key 引数は 32 ビット符号なし整数で、1 から 65,534 までの範囲の値です。
エラーコード
次のエラーコードは NTP 制御とモニタプロトコルのトラップメカニズムによって報告されます。- 101
- (bad field format or length) パケットには、無効のバージョン、長さ、または形式があります。
- 102
- (bad timestamp) パケットのタイムスタンプは、つい最近受信したものと同じかまたは古いものです。これは再送またはサーバクロック時刻ステップのためであるかもしれません。
- 103
- (bad filestamp) パケットのファイルスタンプは、つい最近受信したものと同じかまたは古いものです。これは再送またはキーファイル生成エラーのためであるかもしれません。
- 104
- (bad or missing public key) 公開キーが不足しているか、不正な形式があるか、またはサポートされていないタイプです。
- 105
- (unsupported digest type) サーバはサポートされないダイジェスト/署名方式を要求しています。
- 106
- (mismatched digest types) 使用されていません。
- 107
- (bad signature length) 署名の長さは現在の公開キーに適合していません。
- 108
- (signature not verified) メッセージは署名チェックに失敗しました。偽物か、または異なった秘密キーによって署名されたのかもしれません。
- 109
- (certificate not verified) 証明書が、無効であるか、または間違ったキーで署名されています。
- 110
- (certificate not verified) 証明書は、まだ有効でないか、または期限が切れているか、または署名が検証できませんでした。
- 111
- (bad or missing cookie) クッキーが、不足しているか、壊れているか、または偽物です。
- 112
- (bad or missing leapseconds table) 閏秒のテーブルが、不足しているか、壊れているか、または偽物です。
- 113
- (bad or missing certificate) 証明書が、不足しているか、壊れているか、または偽物です。
- 114
- (bad or missing identity) 識別キーが、不足しているか、壊れているか、または偽物です。
モニタ機能のサポート
ntpd(8) には、サーバおよびクライアントの時間計測のパフォーマンスを長時間連続して記録するのに適した、包括的なモニタ機能が含まれています。現在サポートされている統計の種類のリストと実行例については、後で述べる statistics コマンドを参照してください。統計ファイルは、ファイル世代集合と、配布物の中の ./scripts ディレクトリにあるスクリプトを使用して管理されています。これらの機能と、 UNIX の cron(8) ジョブを使用して、データが自動的に要約され、時間を遡った分析を行うときのために保存されます。モニタ機能のコマンド
- statistics name ...
-
統計レコードの書き込みを有効にします。現在のところ、4 種類の
name の統計がサポートされています。
- clockstats
-
時計ドライバの統計情報の記録を有効にします。時計ドライバからの更新を受ける度に、
clockstats という名前のファイル世代集合に、次の形式の行を追加出力します:
49213 525.624 127.127.4.1 93 226 00:08:29.606 D
最初の 2 つのフィールドは、日付 (修正されたユリウス日) および時刻 (UTC の午前 0 時からの小数点を含む秒数) を示します。次のフィールドは、ドットで 4 つの部分に区切られた形式の記法で書かれた時計のアドレスを示しています。最後のフィールドは、時計から受け取った最後のタイムコードを意味のある ASCII フォーマットにデコードしたものです。時計ドライバによっては、これ以外に追加でそこそこの情報を集め、あわせて表示するものがあります。さらなる情報については、各時計特有の情報を参照してください。
- cryptostats
-
このオプションは OpenSSL 暗号化ソフトウェアライブラリを必要とします。 It 暗号化公開キープロトコル情報の記録を有効にします。プロトコルモジュールによって受信された各メッセージは、次の形式の行を
cryptostats と名前が付けられたファイル生成セットに追加します:
49213 525.624 127.127.4.1 message
最初の 2 つのフィールドは、日付 (修正されたユリウス日) と時刻 (UTC の午前 0 時からの小数点を含む秒数) を示します。次のフィールドは、ドット付き 4 つ組記法の通信相手のアドレスを示します。最終のメッセージフィールドは、メッセージタイプと特定の補助的情報を含んでいます。詳細については、 認証コマンド セクションを参照してください。
- loopstats
-
ループフィルタの統計情報の記録を有効にします。ローカル時計の更新を行うたびに、
loopstats という名前のファイル世代集合に次の形式の行を出力します:
50935 75440.031 0.000006019 13.778190 0.000351733 0.0133806
最初の 2 つのフィールドは、日付 (修正されたユリウス日) と時刻 (UTC の午前 0 時からの小数点を含む秒数) を示します。次の 5 つのフィールドは、秒単位の時間オフセット、100 万分の 1 (PPM) 単位の周波数オフセット、秒単位の RMS ジッタ、 100 万分の 1 (PPM) 単位の Allan 偏差、時計学習アルゴリズムの時定数です。
- peerstats
-
通信相手に関する統計情報の記録を有効にします。これには、設定されたものと現在有効なものとの両方について、 NTP サーバの通信相手の全て、特別な時刻信号の通信相手の全てに対する統計レコードが含まれます。有効な更新が行われる度に、
peerstats という名前のファイル世代集合の現在の要素に次の形式の行を追加します:
48773 10847.650 127.127.4.1 9714 -0.001605376 0.000000000 0.001424877 0.000958674
最初の 2 つのフィールドは、日付 (修正されたユリウス日) と時刻 (UTC の午前 0 時からの小数点を含む秒数) を示します。次の 2 つのフィールドは、それぞれドットで 4 つの部分に区切られた形式の記法で書かれた通信相手のアドレスおよびステータスです。ステータスフィールドは、RFC 1305 の NTP 仕様の追記 A で述べているフォーマットを用いて、16 進数で符号化されています。最終の 4 つのフィールドは、すべて秒単位で、オフセット、遅延、分散と RMS ジッタ (jitter) を示します。
- rawstats
-
そのままのタイムスタンプ (raw-timestamp) の統計情報を記録できるようにします。これには、設定されたものと現在有効なものとの両方について、 NTP サーバの通信相手の全て、特別な時刻信号の通信相手の全てに対する統計レコードが含まれます。通信相手または時計ドライバから受け取った NTP メッセージはそれぞれ、
rawstats という名前のファイル世代集合に次のような形式で 1 行付け足します:
50928 2132.543 128.4.1.1 128.4.1.20 3102453281.584327000 3102453281.58622800031 02453332.540806000 3102453332.541458000
最初の 2 つのフィールドは、日付 (修正されたユリウス日) および時刻 (UTC の午前 0 時からの小数点を含む秒数) を示します。次の 2 つのフィールドは、通信相手あるいは時計のアドレスと、ローカルアドレスを示しています。これらはドットで 4 つの部分に区切られた記法で書かれています。最後の 4 つのフィールドは、生起、受信、送信、最終の 4 種類の NTP タイムスタンプを順に示したものです。タイムスタンプの値は受け取ったままのものであり、さまざまなデータ平滑化や緩和アルゴリズムが処理する前のものです。
- sysstats
-
周期的に ntpd 統計カウンタの記録を有効にします。次の形式のそれぞれの時間の行は、
sysstats と名前が付けられたファイル生成セットに追加されます:
50928 2132.543 36000 81965 0 9546 56 71793 512 540 10 147
最初の 2 つのフィールトは、日付 (修正されたユリウス日) と時刻 (UTC の午前 0 時からの小数点を含む秒数) を示します。残りの 10 個のフィールドは、最後に生成された行からの累積された統計カウンタの値を示します。
- Time since restart 36000
- システムが最後にリブートされてからの 1 時間単位の時間。
- Packets received 81965
- 受信されたパケットの総数。
- Packets processed 0
- 前に送信されたパケットの応答として受信されたパケットの数。
- Current version 9546
- 現在の NTP バージョンに適合するパケットの数。
- Previous version 56
- 前の NTP バージョンに適合するパケットの数。
- Bad version 71793
- どちらの NTP バージョンにも適合しないパケットの数。
- Access denied 512
- なんらかの理由でアクセスを拒否されたパケットの数。
- Bad length or format 540
- 無効の長さ、形式、またはポート番号があるパケットの数。
- Bad authentication 10
- 本物であると確認されなかったパケットの数。
- Rate exceeded 147
- レート (速度) 制限のために破棄されたパケットの数。
- statsdir directory_path
- 統計ファイルを作るディレクトリのフルパスを指定します (下記参照)。このキーワードにより、ファイル世代集合のための filegen ファイル名のプレフィックスの変更 (これがなければ固定のままです) が可能となります。これは、統計ログを扱うのに便利です。
- filegen name [ file filename][ type typename][ link | nolink][ enable | disable]
-
ファイル世代集合名を設定します。ファイル世代集合は、サーバの活動期間を通じて継続的に大きくなっていくファイルを扱う手段を提供します。サーバの統計はこのようなファイルの典型例です。ファイル世代集合は、実際のデータを格納するのに用いられるファイル集合へのアクセスを提供します。どんな時点でも、ファイル集合の高々 1 つの要素に対してだけ書き込みが行われます。指定した type は、ファイル集合の新しい要素に、データがいつ、どのように出力されるのかを指定します。この方法で、 ntpd の動作を妨げる危険を冒すことなく、現在使用されていないファイル集合の要素に格納されている情報を、管理操作のために使用できます (最も重要な操作: 新たな出力データ用の空きを作るために、これら要素を削除できます)。
このコマンドは、リモートで動作している ntpdc(8) プログラムから送信可能であることに注意してください。
- name
- これは、統計レコードのタイプです。 statistics コマンドの項で示すものと同じです。
- file filename
-
これは、統計レコード用のファイル名です。集合のメンバのファイル名は、次の 3 つの要素の結合、すなわち
file ...
prefix,
file ...
filename と
file ...
suffix からできています。
- prefix
- ファイル名のパスであり、定数です。これは、 filegen オプションを使っても変更されることはありません。パスは、サーバが定義します。通常は、コンパイル時に定数として指定します。しかし、別のコマンドを使って、個々のファイル世代集合に対し設定することも可能です。例えば、 loopstats と peerstats 生成時に使われるプレフィックスは、前に説明した statsdir オプションを使用して設定可能です。
- filename
-
この文字列は、そのまま先に述べたプレフィックスの後ろに結びつきます (間に‘
/
’は入りません)。これは、 filegen ステートメントの file 引数を使用することで変更できます。この中身には、 .. という要素を使用することはできません。それは、 prefix で示されたファイルシステムの階層外を filename が参照してしまうのを防ぐためです。 - suffix
- この部分は、ファイル集合の要素ひとつひとつを反映しています。これは、ファイル集合の種類に依存して生成されます。
- type typename
-
ファイル世代集合は、タイプによって特徴づけされます。次のような種類がサポートされています:
- none
- このファイル集合はごく普通のファイル 1 つです。
- pid
-
ntpd サーバが生成されるごとに、ファイル集合の要素が 1 つ使用されます。このタイプは、動作中にファイル集合のメンバに何の変更も施すことはありませんが、異なる
ntpd(8) サーバの生成に属しているファイルを分けるのに簡単な方法を提供します。ファイル集合のメンバのファイル名は、
prefix と
filename 文字列をつないだものに‘
.
’を付け加え、 ntpd(8) サーバのプロセスのプロセス ID を 10 進数で表現したものを付け加えたものです。 - day
-
1 日ごとにファイル世代集合の要素が 1 つ生成されます。 1 日とは、UTC 時刻で 0:00 から 24:00 までの期間と定義されています。ファイル集合メンバのサフィックスには、‘
.
’と日付を YYYYMMdd 形式で表したものが含まれています。ここで、 YYYY は、4 桁で表した西暦年です (例えば、1992)。 MM は、2 桁の月です。 dd は、2 桁の日です。つまり、1992 年 12 月 10 日に書かれた情報は全て、 prefix filename.19921210 という名前のファイルに書かれることになります。 - week
- どの要素も 1 年のうちのある週に関連するデータを含みます。ここで、週という用語は、年の始まりからの日数の 7 の商により定義されます。このようなファイル世代集合の要素は、ファイル集合の filename のベースに、次のようなサフィックスをつけることで区別されます: ドット、4 桁の西暦年、文字 W と 2 桁の週番号です。例えば、1992 年 1 月 10 日からの情報は、サフィックス . 1992W1 を持つファイルに出力されます。
- month
- 1 月に 1 つのファイル世代集合の要素が作成されます。ファイル名のサフィックスは、ドット、4 桁の西暦年、2 桁の月からなります。
- year
- 1 年に 1 つのファイル世代集合の要素が作成されます。ファイル名のサフィックスは、ドットと 4 桁の西暦年からなります。
- age
- この型のファイル世代集合は、サーバが 24 時間活動するごとに新たな要素に変わります。ファイル名のサフィックスは、ドット、文字 a と 8 桁の数からなります。この数は、対応する 24 時間の始めからサーバが実行されている秒数であるようになります。情報は、ファイル世代集合が enable に設定されているときのみ、その集合に書き込まれます。出力は、 disable に指定することで抑制されます。
- link | nolink
- ファイル世代集合の現在の要素に、決まった名前でアクセスできると便利です。この機能は、 link を指定することで有効になり、 nolink を使用すると無効になります。 link が指定されると、現在のファイル集合の要素から、サフィックスを持たないファイルへのハードリンクが作成されます。すでにその名前を持つファイルが存在し、そのファイルへのリンク数が 1 であるとき、そのファイル名を、ドット、文字 C そして ntpd サーバプロセスのプロセス ID を後ろに付け加えたものに変更します。ファイルへのリンク数が 1 よりも大きい場合は、ファイルはアンリンクされます。これによって、現在のファイルは、一定の名前でアクセスできます。
- enable | disable
- 情報記録機能を有効または無効にします。
アクセス制御機能のサポート
ntpd(8) デーモンは汎用のアドレス/マスクベースの制限リストを実装しています。このリストは、最初にアドレス値で昇順にソートされたアドレス/マッチエントリを含み、それからマスク値で昇順にソートされたアドレス/マッチエントリを含んでします。マスクとパケットの発信元アドレスのビット単位の論理積 (AND) がリスト中のマスクとアドレスのビット単位の論理積 (AND) と等しいときに、一致 (マッチ) が生じます。このリストは、エントリに関連している制限フラグを定義している最後の一致が見つけられた順序で検索されます。さらなる情報や例については、 ( /usr/share/doc/ntp で提供された HTML 文書の一部として利用可能な) “Notes on Configuring NTP and Setting up a NTP Subnet” (NTP の設定と NTP サブネットの設定に関する注意) のページにあります。アクセス制限機能は、オリジナルの NSFnet バックボーンタイムサーバに対するアクセスポリシと一致するように実装されました。その後にこの機能は、暗号化とクロッギング (渋滞, clogging) 攻撃をそらすために拡張されました。この機能は、望まない、壊れているか悪意あるクライアントが無実のサーバを混雑することを避けるために役に立つかもしれませんが、 NTP 認証機能への代替手段であると考えるべきではありません。送り元アドレスに基づいた制限というのは、やる気十分のクラッカーには簡単に回避されてしまいます。
クライアントが restrict コマンドによって作成された制限リストに明白に含まれるか、または暗号化またはレート制限違反の結果として暗黙に含まれるので、サービスがクライアントを拒否することができます。訳注: 制限リストに含まれるのはサービスかクライアントかよくわからない。暗号化の違反は、証明書または識別の検証の失敗を含んでいます。一般的に、レート制限違反は、不正なレートでパケットを送信する、欠陥がある NTP 実装から生じます。何らかの違反は、有害なパケットのためだけにサービスの拒否を引き起こし、他のものは、指定された期間にサービスの拒否を引き起こし、他のものは、無期限にサービスの拒否を引き起こします。クライアントまたはネットワークが無期限にアクセスを拒否されるとき、制限を取り除くために現在のところの唯一の方法は、サーバを再起動することです。
死の接吻パケット
もともと、サービスを拒否されたパケットは、単純に捨てられるだけで、統計カウンタを増やす以外に一切の動作を生じさせることはありません。クライアントに明示的に送信停止を要求し、またシステムオペレータにメッセージを残すサーバメッセージなどの、より前向きな応答が必要となることがときどきあります。この目的のために、特にパケット形式が作られました。それを称して、"死の接吻" (kiss-of-death) (KoD) パケットと言います。 KoD パケットは、リープ (leap) ビットを非同期に設定し、階層を 0 に設定し、参照識別子フィールドを 4 バイトの ASCII コードに設定したものです。適合する制限リストエントリの noserve または notrust フラグが設定されているなら、コードは "DENY"です。 limited フラグが設定され、レート制限が超えられているなら、コードは "RATE"です。最終的に、暗号化の違反が起こるなら、コードは "CRYP"です。KoD を受信するクライアントは、セキュリティ露出 (exposure) を最小にするために一連の健全性 (sanity) チェックを実行し、次に、階層と参照識別子通信相手変数を更新し、通信相手フラッシュ変数のアクセス拒否 (TEST4) ビットを設定し、メッセージをログに送ります。 TEST4 ビットが設定されている限り、クライアントはこれ以上パケットをサーバに送信しません。この状態から回復する現在のところの唯一の方法は、クライアントとサーバの両方でプロトコルを再開することです。これは、アソシエーションがタイムアウトするときに、クライアントで自動的に起こります。これは、サーバオペレータが協力する場合にだけ、サーバで起こります。
アクセス制御コマンド
- discard [ average avg][ minimum min][ monitor prob]
- 不正利用されたクライアントからサーバを保護する limited 機能のパラメータを設定します。 average サブコマンドは、最小の平均したパケット間隔を指定しますが、 minimum サブコマンドは、最小のパケット間隔を指定します。これらの最小値に違反するパケットは、破棄され、利用可能であるなら、死の接吻パケットを返します。デフォルトの最小値の平均と最小値は、それぞれ 5 と 2 です。 monitor サブコマンドは、レート (速度) 制御ウィンドウからオーバフローしたパケットのための破棄の確率を指定します。
- restrict address [ mask mask][ flag ...]
-
ドット付き 4 つ組形式で表現される
address 引数は、ホストまたはネットワークのアドレスです。代わりに、
address 引数は、有効なホスト DNS 名で指定できます。
255.255.255.255 をデフォルトとする、ドット付き 4 つ組形式で表現される
mask 引数は、
address がアドレスが個別のホストのアドレスとして取り扱われることを意味します。デフォルトエントリ (アドレス
0.0.0.0、マスク
0.0.0.0) は、常に含まれていて、常にリストの最初のエントリです。マスクオプションがない、テキスト文字列
default は、デフォルトエントリを示すために使用できることに注意してください。現在の実装では、
flag は常にアクセスを制限します、すなわち、フラグのないエントリは、サーバへの自由なアクセスが与えられていることを示します。より制限しているフラグが、しばしばより少ない制限しているフラグを冗長にする点において、フラグは直交的ではありません。一般的に、フラグは、2 つのカテゴリに分類することができます、時間サービスを制限するものと、情報問い合わせと実行時にサーバの再設定を行う試みを制限するものです。 1 つ以上の次のフラグを指定することができます:
- ignore
- ntpq(8) と ntpdc(8) 問い合わせを含む、すべての種類のパケットを拒否します。
- kod
- アクセス違反が起こるとき、このフラグが設定されているなら、死の接吻 (KoD) パケットが送信されます。 KoD パケットは、1 秒ごとに 1 秒未満に制限されたレート (速度) です。別の KoD パケットが最後のもの後で 1 秒以内に生じるなら、そのパケットは落とされます。
- limited
- パケット間隔が discard コマンドで指定された下限値に違反するなら、サービスを拒否します。クライアントの履歴は、 ntpd(8) のモニタリングケーパビリティ (機能) を使用して保持されます。したがって、モニタリングは、 limited フラグがついた制限エントリがある限り常にアクティブです。
- lowpriotrap
- マッチしたホストによるトラップセットを低い優先度として宣言します。 1 つのサーバが保持し得るトラップの数は制限されています (現在の制限値は 3 です)。トラップは通常、先入れ先出しベースで割り当てられ、後から来たトラップ要求はサービスを拒否されます。このフラグは、後から到着する要求のための通常優先度のトラップが低い優先度のトラップを上書きできるようにすることで、割り当てアルゴリズムを変更します。
- nomodify
- 対してサーバの状態を変更することを試みる ntpq(8) と ntpdc(8) 問い合わせ (すなわち、実行時再設定) を拒否します。情報を返す問い合わせは許可されます。
- noquery
- ntpq(8) と ntpdc(8) 問い合わせを拒否します。時間サービスは影響を受けません。
- nopeer
- 新しいアソシエーションを結集した結果となるパケットを拒否します。これは、設定されたアソシエーションが存在しないとき、ブロードキャストと共通のアクティブパケットを含んでいます。
- noserve
- ntpq(8) と ntpdc(8) 問い合わせ以外のすべてのパケットを拒否します。
- notrap
- 適合するホストに対してモード 6 の制御メッセージのトラップサービスを提供することを辞退します。トラップサービスは、リモートイベントロギングプログラムによって使用されることを対象とした、ntpdq 規制メッセージプロトコルのサブシステムです。
- notrust
- パケットが暗号化認証されていないなら、サービスを拒否します。
- ntpport
- これは実際のところ制限フラグよりむしろ適合アルゴリズム変更修飾子です。その存在は、パケットの発信元ポートが標準の NTP UDP ポート (123) である場合にだけ制限エントリに適合します。 ntpport と non-ntpport の両方を指定できます。 ntpport は、より特有であると考えられて、リストの後ろにソートされます。
- version
- 現在の NTP バージョンでなければ、これらのホストを無視します。
デフォルトの制限リストエントリは、フラグ ignore , interface , ntpport を持ち、ローカルホストのインタフェースアドレスそれぞれに対応するもので、サーバが自分自身の時間に同期しないようにするために、スタートアップ時にテーブルに挿入されます。デフォルトエントリは常に存在しています。さもなくば無設定になってしまう場合であってもです。他で設定されていない場合は、どのフラグもデフォルトエントリに関連づけられません (すなわち、あなた自身の NTP サーバ以外のすべてが無制限になります)。
自動 NTP 設定オプション
メニーキャスト (manycasting)
メニーキャストは、NTPv4 の新しい自動発見と設定パラダイム (理論的枠組み) です。マルチキャストクライアントが、協力するメニーキャストサーバを見つけ、暗号化の手段を使用してそれらを認証し、付近に潜んでいるかもしれない他のサーバに関してそれらの時刻値を評価するために、すぐ近くのネットワーク近隣をトロール (メッセージを投稿) するための手段として意図されています。意図された結果は、それぞれのメニーキャストクライアントが、すぐ近くのメニーキャストサーバの "最良"の何らかの数でクライアントアソシエーションを行使し、さらに、1 つまたは別のものが失敗するなら、この数のサーバを維持するために自動的に再設定します。メニーキャストパラダイムは、同じサービスを提供するサーバの小集団から単一のサーバを見つけるように設計された RFC-1546 に記述されたエニーキャスト (anycast) パラダイムと一致しないことに注意してください。メニーキャストパラダイムは、定義された最適な判断基準を満足させる複数の冗長なサーバを見つけるように設計されています。
共通キーまたは公開キー暗号化のいずれかでメニーキャストを使用することができます。公開キーのインフラストラクチャ (PKI) は、信用できないキーに対する最良の保護を提供し、少なくとも比較的大きなキーサイズで、一般的により強固と考えられています。それは、Autokey プロトコルと、 http://www.openssl.org/
から入手できる OpenSSL 暗号化ライブラリを使用して実装されています。また、他の NTPv4 モードでもこのライブラリを使用することができ、特にブロードキャストモードでの使用は特にお勧めです。
永続的なメニーキャストクライアントアソシエーションは、 server コマンドと同様ですが、マルチキャスト (IPv4 クラス D または IPv6 接頭辞 FF) グループアドレスで manycastclient コマンドを使用して設定されます。 IANA は NTP のために IPv4 アドレス 224.1.1.1 と IPv6 アドレス FF05::101 (サイトローカル) を指定しました。より多くのサーバが必要であるときに、いくつのサーバが既に見つけられたかによって、最小の実行可能なレート (速度) と最小の実行可能な生存時間 (TTL) 中継点 (hop) でメニーキャストクライアントメッセージをこのアドレスにブロードキャストします。将来の短命のユニキャストクライアント/サーバアソシエーションのためのテンプレートとして、それぞれ役に立つ、異なるグループアドレスと同じ数だけのメニーキャストクライアントアソシエーションが存在することができます。
manycastserver コマンドによって設定されたメニーキャストサーバは、メニーキャストクライアントメッセージのための指定されたグループアドレスで listen (接続を受け付け) します。アクティブにメッセージをブロードキャストするメニーキャストクライアントと受動的にそれらに応答するメニーキャストサーバの区別に注意してください。メニーキャストサーバが、現在の TTL の範囲内にあり、それ自体が有効な発信元と同期していて、階層レベルがメニーキャストクライアント以下で動作しているなら、普通のユニキャストサーバメッセージでメニーキャストクライアントメッセージに応答します。
このメッセージを受信するメニーキャストクライアントは、適合するメニーキャストクライアントテンプレートに従って、短命のクライアント/サーバアソシエーションを行使しますが、暗号化の認証とサーバ階層がクライアント階層以下の場合のみ行使されます。認証は、明白に要求され、共通キーまたは公開キー (Autokey) のどちらかを使用することができます。次に、クライアントは、確実にホストクロックを設定し、発信元を確認するためにバーストモードでそのユニキャストアドレスにおいてサーバをポーリングします。通常、これは、同期と暗号化プロトコルの両方が同時に実行される間に、 2 秒間隔で 8 つのクライアント/サーバに一斉に投げられることとなります。一斉に投げられることに続いて、クライアントは NTP インタセクション (交差) とクラスタリングアルゴリズムを実行します。それは、階層と同期距離に従って "最良"のアソシエーション以外のすべてを破棄するように振る舞います。そして、生き残っているアソシエーションは、普通のクライアント/サーバモードで継続します。
メニーキャストクライアントポーリング戦略は、ほとんど同時に到着するメニーキャストサーバメッセージのメニーキャストクライアントメッセージのボリュームと内部破裂の効果をできるだけ減らすように設計されます。戦略は manycastclient, tos と ttl 設定コマンドによって決定されます。通常、メニーキャストポーリング間隔は、 manycastclient コマンドで指定された minpoll 値から始まり、通常の状況の下で、このコマンドで指定された maxpolll 値まで増加された、システムポーリング間隔の 8 倍です。最初に、TTL は ttl コマンドで指定された最小の中継点 (hop) に設定されます。各再転送では、TTL は、このコマンドによって指定された最大の中継点に到達するか、または十分な数のクライアントアソシエーションが見つけられるまで、増加されます。それ以降の再転送は、同じ TTL を使用します。
メニーキャストクライアントによって発見された一組のアソシエーションの品質と信頼性は、NTP 軽減 (mitigation) アルゴリズム、と tos 設定コマンドで指定された minclock と minsane 値によって決定されます。少なくとも minsane の候補サーバは、利用可能でなければなりません、そして軽減アルゴリズムは、クロックを同期するために少なくとも minclock の生き残りを作り出します。複雑な合意原則は、単一の偽時計を正しく破棄するるために少なくとも 4 つの候補を必要とします。古い用途のために、 minsane のデフォルトは 1 で、 minclock のデフォルトは 3 です。少なくとも、サーバの数が利用可能であると仮定して、メニーキャストサービスのために、 minsane は、明示的に 4 に設定されるべきです。
少なくとも minclock サーバが見つけられるなら、メニーキャストポーリング間隔は、直ちに maxpoll の 8 倍にに設定されます。 minclock 以下のサーバが見つけられるなら、TTL は、最大は中継点に到達したとき、メニーキャストポーリング間隔は 2 倍にされます。その後の各転送において、ポーリング間隔は、8 倍の maxpoll の最大に到達するまで、再び 2 倍にされます。それ以降の転送は、同じポーリング間隔と TTL 値を使用します。このすべてが起こっている間に、見つけられた各クライアント/サーバアソシエーションが、通常システムポーリング間隔で動作することに注意してください。
管理上の詳しく調べられたマルチキャスト境界は、通常ネットワークルータの設定と IPv6 の場合に、リンク/サイト (link/site) 範囲 (scope) 接頭辞によって指定されます。デフォルトで、TTL 中継点のための増分は、32 で、31 から始まります。しかしながら、範囲 (scope) 規則を適合するために値を変更するために ttl 設定コマンドを使用することができます。
メニーキャストクライアントアソシエーションによって見つけることができる受け付け可能なサーバの範囲を狭くするためにしばしば役に立ちます。クライアント階層がサーバ階層と等しいか大きいときにだけ、メニーキャストサーバが応答するので、プライマリ (階層 1) のサーバは、たぶん最も一般的なの目標である TTL 範囲でプライマリサーバだけを見つけます。しかしながら、別の設定がされていないなら、TTL 範囲のすべてのメニーキャストクライアントは、結局のところ、たぶん大きなネットワークで最も一般的な目標でない、 TTL 範囲でのすべてのプライマリサーバを見つけます。この振る舞いを変更するために tos コマンドを使用することができます。 tos コマンドで指定された floor 以下、または ceiling 以上の階層があるサーバは、選択プロセスの間に強く抑制されます。しかしながら、これらのサーバは、TTL 範囲内のサーバの数が minclock より少ないなら、一時的に受け付けられます。
上記の動作は、指定されたポーリング間隔で繰り返される、各メニーキャストクライアントメッセージのために起こります。しかしながら、いったん短命のクライアントアソシエーションが行使されると、その後のメニーキャストサーバの応答は、重複したアソシエーションをもたらすので、破棄されます。ポーリング間隔の間に、クライアントアソシエーションの数が minclock 以下となるなら、すべてのメニーキャストクライアントのプロトタイプアソシエーションは、初期のポーリング間隔と TTL 中継点にリセットされ、操作は始めから再開します。それぞれのメニーキャストクライアントメッセージが、応答するために TTL 範囲内のすべてのメニーキャストサーバを必要とするので、頻繁なメニーキャストクライアントメッセージを避けることは重要です。結果は、範囲内のサーバの数によって、小かそれとも大の内部破裂となるでしょう。 maxpoll のための推奨値は 12 (4,096 秒) です。
メニーキャストクライアントとメニーキャストサーバの両方のようにホストを設定することは、可能であり、しばしば役に立ちます。このように設定され、一般的なグループアドレスを共有している多くのホストは、改造と同期距離に基づく最適な設定で自動的に自分たちを組織化します。例えば、2 台のプライマリサーバと 100 台以上の従属するクライアントの NTP サブネットであると考えます。 2 台を例外として、すべてのサーバとクライアントには、例えばマルチキャストグループアドレス 239.1.1.1 を使用して multicastclient と multicastserver コマンドの両方を含む同じ設定ファイルがあります。唯一の例外は、それぞれのプライマリサーバ設定ファイルが、GPS 受信機のようなプライマリ参照ソースのためのコマンドを含まなければならないということです。
すべてのセカンダリサーバとクライアントのための残りの設定ファイルには、それぞれの階層レベルに特有の tos コマンドを除いて、同じ内容があります。階層 1 と階層 2 のサーバには、そのコマンドは必要ではありません。階層 3 と上記のサーバのために、 floor 値は意図される階層番号に設定されます。したがって、すべての階層 3 の設定ファイルは同じで、すべての階層 4 のファイルは同じです、等々。
いったん動作がこのシナリオで安定していると、プライマリサーバは、それらの両方は同じ階層 (1) で動作するので、プライマリ参照ソースと互いを見つけます。しかし、任意のセカンダリサーバまたはクライアントがより高い階層で動作するので、それらと共に動作しません。セカンダリサーバは同じ階層のレベルでサーバを見つけます。プライマリサーバの 1 つが GPS 受信機を失うなら、クライアントとして動作し続けます、そして他のクライアントは、対応するるアソシエーションをタイムアウトし、それに応じて再アソシエーションとします。
管理者の中には、連続して ntpd(8) を実行することを避けて、cron ジョブとして ntpdate(8) または ntpd(8) -q のどちらか実行することを好みます。どちらの場合にも、前もってサーバを設定していければなりません、そして、 cron ジョブを実行するとき、なにも利用可能でないなら、プログラムは失敗します。メニーキャストの本当に素晴らしいアプリケーションは、 ntpd(8) -q です。プログラムは、起動し、普通の容疑者 (suspects) を探すのにローカルの風景 (landscape) をスキャンし、悪党 (rascal) からベストを選択し、時計を設定して、次に、立ち去ります。サーバは前もって設定される必要はありません、そして、ネットワーク中のすべてのクライアントは、同じ設定ファイルを持つことができます。
メニーキャスト (Manycast) と Autokey との相互作用
メニーキャストクライアントがクライアントモードパケットをマルチキャストグループアドレスに送信するたびに、範囲内のすべてのメニーキャストサーバは、ホスト名と状態ワードを含む応答を生成します。メニーキャストクライアントは、関係するすべての証明書を収集して検証する、 Autokey プロトコルを実行します。バースト (burst) 間隔に続いて、3 台の生き残りのほかは皆は、放棄されますが、証明書はローカルキャッシュに残ります。クライアントからプライマリサーバまでのいくつかの完全な署名トレイルは、このような方法で収集されることがしばしば起こります。ポーリング間隔がこれを超えるなら、1 時間かそれ以下にほぼ一度の頻度で、クライアントは Autokey キーリストを再生成します。一般的に、これはクライアント/サーバモードで透過的です。しかしながら、1 日にほぼ一度、クッキーを生成するために使用されるサーバの秘密 (private) 値は、すべてのメニーキャストクライアントアソシエーションと共にリフレッシュされます。もしそうなら、証明書を含むすべての暗号化の値もリフレッシュされます。最終にリフレッシュした時点以後に新しい証明書が生成されたなら、証明書キャッシュに偶然あるすべての以前の証明書を自動的に取り消します。同時に、メニーキャスト方式は、始めからくまなく開始し、拡張リング (expanding ring) は最小限に縮小し、範囲内のすべてのサーバを収集している間に、そこから増分します。
メニーキャスト (Manycast) オプション
- tos [ ceiling ceiling | cohort { 0 | 1 } | floor floor | minclock minclock | minsane minsane]
-
このコマンドはクロックの選択とクラスタリングアルゴリズムに影響します。システムクロックを同期するために使用する通信相手の品質と数量の選択するためにそれを使用でき、メニーキャストモードで最も役に立ちます。変数は次の通り動作します:
- ceiling ceiling
- ceiling より上の階層がある通信相手は、少なくとも minclock の通信相手が残っているなら、破棄されます。この値は、15 をデフォルトとしますが、1 から 15 までのどんな数値にも変更することができます。
- cohort {0 | 1}
- これは、同じ階層のレベルでメニーキャスクライアントに応答するメニーキャスサーバを有効 (0) にする、または無効 (1) にする 2 進数のフラグです。これは、同じ階層のレベルがある多数のクライアントが存在しているところで内部破裂を減少させるために役に立ちます。デフォルトは、これらの応答を有効にすることです。
- floor floor
- floor より下の階層がある通信相手は、少なくとも minclock の通信相手が残っているなら、破棄されます。この値は、1 をデフォルトとしますが、1 から 15 までのどんな数値にも変更することができます。
- minclock minclock
- クラスタリングアルゴリズムは、わずか minclock のアソシエーションが残るまで、繰り返し outlyer (外の階層の ?) アソシエーションを追い出します。訳注: outlyer は outer または outerlayer の誤りか?この値は、3 をデフォルトとしますが、1 から設定されたソースの数までのどんな数値にも変更することができます。
- minsane minsane
- これは、クラスタリングアルゴリズムのために 1 つ以上の真のチャイマ (時計をならすもの) を作り出すためのクロック選択アルゴリズムで利用可能な候補の最小の数です。この数が利用可能な数よりも少ないなら、クロックは統制されず、自由に実行することができます。デフォルトは古いもののために 1 です。しかしながら、ビザンチン合意 (Byzantine agreement) の原則にしたがって、 minsane は、単一の偽時計を検出して破棄するために少なくとも 4 であるべきです。
- ttl hop ...
- このコマンドは昇順で TTL 値のリストを指定し、最大 8 つの値を指定することができます。メニーキャストモードでは、これらの値は拡張リング (expanding-ring) 検索で順番に使用されます。デフォルトは 31 から始まる 32 の 8 の倍数です。
参照クロックのサポート
NTP バージョン 4 デーモンは、およそ 3 ダース (32 個) のさまざまな、ラジオと、衛星とモデム参照クロック、およびまたは他のクロックソースが利用可能でないとき、バックアップのために使用される特別な疑似時計をサポートします。個々のデバイスドライバとオプションの詳細な説明は、 ( /usr/share/doc/ntp で提供された HTML 文書の一部として利用可能な) “Reference Clock Drivers” (参照クロックドライバ) のページにあります。追加情報は、 ( /usr/share/doc/ntp で提供された HTML 文書の一部として利用可能な) “Debugging Hints for Reference Clock Drivers” (参照クロックドライバのためのデバッグのヒント) と“How To Write a Reference Clock Driver” (参照クロックドライバに書き方) のページを含んで、そこからリンクされたページにあります。さらに、PPS シグナルのサポートは、 ( /usr/share/doc/ntp で提供された HTML 文書の一部として利用可能な) “Pulse-per-second (PPS) Signal Interfacing” (パルス/秒 (PPS) シグナルインタフェース) のページに記述されているように利用できます。多くのドライバは、ドライバを使用して精度を著しく改良することができる特別な回線制御規則/ストリームモジュールをサポートします。これらは、 ( /usr/share/doc/ntp で提供された HTML 文書の一部として利用可能な) “Line Disciplines and Streams Drivers” (回線制御規則とストリームドライバ) のページに説明されています。一般的に、参照クロックは、カナダの NRC とアメリカ合衆国の NIST と USNO によって提供されたサービスのような標準時刻の発信元と同期している、ラジオ時刻コード (timecode) 受信機です。コンピュータと時刻コード受信機との間のインタフェースは、デバイスに依存していますが、通常シリアルポートです。それぞれの参照クロックに特有のデバイスドライバは、配布で選択されコンパイルされなければなりません。しかしながら、最も一般的なラジオ、衛星、とモデムクロックは、デフォルトで含まれています。ドライバがコンパイルされていないか、またはハードウェアポートが適切に設定されていないとき、参照クロックを設定する試みは、システムログファイルに痛烈な警告がでることになりますが、そうでなければ、危険ではないことに注意してください。
設定のために、 ntpd(8) は、できるだけ通常の NTP 交信相手と類似した方法で参照クロックを取り扱います。参照クロックは、通常の NTP 通信相手と区別するために、構文的には正しいが、無効の IP アドレスによって認識されます。参照クロックアドレスは、形式 127.127.
t. u です、ここで t は、クロックタイプを示す整数であり、 u は範囲 0 から 3 のユニット番号を表します。やり過ぎに見えるかもしれませんが、実際には、同じタイプの複数の参照クロックを設定するためにしばしば役に立ちます、その場合、ユニット番号はユニークでなければなりません。
server コマンドは、参照クロックを設定するために使用されます。ここで、そのコマンドの address 引数はクロックアドレスです。 key, version と ttl オプションは、参照クロックのサポートには使用されません。 mode オプションは、以下で説明されているように参照クロックのサポートのために追加されています。 prefer オプションは、他の参照クロックまたは通信相手よりいくらかより多くの熱意をもって参照クロックを大切にするようにサーバを説得するために役に立つかもしれません。このオプションに関する詳細は、 ( /usr/share/doc/ntp で提供された HTML 文書の一部として利用可能な) “Mitigation Rules and the prefer Keyword” (緩和ルールと prefer キーワード) ページにあります。 minpoll と maxpoll オプションには、選択されたクロックドライバのためのみ意味があります。追加情報に関しては、個々のクロックドライバの文書を参照してください。
fudge コマンドは、個々のクロックドライバのための追加情報を提供するために使用され、通常、 server コマンド直後に継続します。 address 引数は、クロックアドレスを指定します。デバイスのためにデフォルトを上書きするために refid と stratum オプションを使用することができます。 2 つのオプションのデバイスに依存する時刻オフセットと同様に fudge コマンドに含まれる 4 つのフラグがあります。
参照クロックの階層の番号はデフォルトで 0 です。 ntpd(8) デーモンは、それぞれの通信相手の階層に 1 を加えるので、通常、プライマリサーバは 1 つの外部階層を表示します。巧みに処理されるバックアップを提供するために、0 より大きい参照クロック階層を指定するためにしばしば役に立ちます。 stratum オプションはこのために使用されます。また、参照クロックと 1 秒ごとのパルス (PPS) の制御規則シグナルの両方必要とする場合には、ドライバによって参照クロック識別子をデフォルト以外に指定するために役に立ちます。 refid オプションはこのために使用されます。言及されているところを除いて、これらのオプションは、すべてのクロックドライバに適用されます。
参照クロックのコマンド
-
server
127.127.
t. u [ prefer][ mode int][ minpoll int][ maxpoll int] -
このコマンドは、参照クロックを特殊な方法で設定するのに使用できます。オプションは次のように解釈されます:
- prefer
- その参照クロックを優先的なものとして印をつけます。その他の点では対等であれば、正しく動作しているホストの中からこの参照クロックが同期をとる対象として選ばれます。さらなる情報については、 ( /usr/share/doc/ntp で提供された HTML 文書の一部として利用可能な) “Mitigation Rules and the prefer Keyword” (緩和ルールと prefer キーワード) のページを参照してください。
- mode int
- モード番号を指定します。この番号は、デバイス特有のやり方で解釈されます。例えば、モード番号は、ACTS ドライバではダイヤル用のプロトコルを選択しますが、parse ドライバではデバイスのサブタイプを指定します。
- minpoll int
- maxpoll int
- これらのオプションは、参照クロックのメッセージに対するポーリングの最小間隔および最大間隔を秒単位の 2 の冪乗で指定します。直接接続されている参照クロックの大部分では、 minpoll および maxpoll はデフォルトで 6 (64 秒) です。モデムの参照クロックでは、 minpoll はデフォルトで 10 (17.1 秒) で、 maxpoll はデフォルトで 14 (4.5 時間) です。とりうる範囲は、4 (16 秒) から 17 (36.4 時間) までです。
-
fudge
127.127.
t. u [ time1 sec][ time2 sec][ stratum int][ refid string][ mode int][ flag1 0 | 1][ flag2 0 | 1][ flag3 0 | 1][ flag4 0 | 1] -
このコマンドは、参照クロックを特殊な方法で設定するのに使用できます。このコマンドは、ドライバを設定するコマンドである
server コマンドの直後に置かれる必要があります。実行中に
ntpdc(8) プログラムを使用して、これと同じことができるということに注意してください。オプションは、次のように解釈されます:
- time1 sec
- ドライバが生成する時間のオフセットに追加される、秒単位で、固定小数点の 10 進数の定数を指定します。この定数は、例えば正確な PPS 信号のような外部の標準時間に合わせるために、特定の時計のわずかの時間オフセットを調節する補正用定数として使われます。また、この定数は、シリアルポートの遅延、オペレーティングシステムの遅延や、ケーブルの長さの違い、受信機内部の遅延に起因する、システム的な誤差やバイアスを補正する方法も提供します。指定されたオフセット値は、伝播遅延に加えて、他の手段、例えば内部ディップスイッチで提供されるものです。個別のシステムやドライバに対する補正は使用できますが、大まかな補正に関しては、ドライバのドキュメントページに記載されています。注意: 2個以上のラジオ時計や PPS 信号がサポートされているときの校正を円滑に行なうために、特別の校正機能が提供されています。 その他のオプション のページで説明している enable コマンドの引数の形式を取り、 ( /usr/share/doc/ntp で提供された HTML 文書の一部として利用可能な) “Reference Clock Drivers” (参照クロックドライバ) のページに記載されるように動作します。
- time2 secs
- 秒単位の、固定小数点 10 進数を指定します。これは、ドライバ依存の方法で解釈されます。 ( /usr/share/doc/ntp で提供された HTML 文書の一部として利用可能な) “Reference Clock Drivers” (参照クロック用ドライバ) ページの各ドライバの説明を参照してください。
- stratum int
- ドライバに割り当てられた階層番号を指定します。この番号は、0 から 15 までの整数値です。この番号は、最初にドライバ自身が割り当てていた階層番号 (通常は 0) を上書きします。
- refid string
- 1 文字から 4 文字までの ASCII 文字列を指定します。この文字列は、ドライバが使用する参照識別子を定義しています。この文字列は、最初にドライバ自身が割り当てていた、デフォルトの識別子を上書きします。
- mode int
- モード番号を指定します。この番号は、デバイスごとに固有のやり方で解釈されます。例えば、ACTS ドライバではダイヤル用プロトコルを選択しますが、 parse ドライバではデバイスのサブタイプを選択します。
- flag1 0 | 1
- flag2 0 | 1
- flag3 0 | 1
- flag4 0 | 1
- これら 4 つのフラグは時計ドライバをカスタマイズするのに使用されます。これらの値の解釈や、すべてが使用されるか否かについては、個々の時計ドライバに依存した機能です。しかし慣習としては、 flag4 は、モニタ対象データを、 filegen コマンドで設定した clockstats ファイルへ記録する機能を有効にするために使用します。 filegen コマンドに関するさらなる情報については、 モニタ機能のオプション セクションを参照してください。
その他のオプション
- broadcastdelay seconds
- ブロードキャストおよびマルチキャストモードでは、ローカルサーバとリモートサーバとの間の遅延を決定するための特殊な補正が必要です。通常、これは、クライアントサーバ間の最初のプロトコルのやりとりで自動的に行われています。場合によっては、例えばネットワークやサーバのアクセス制御によって、この補正の手続きが失敗してしまうこともあります。このコマンドは、こうした状況の時に使用されるデフォルトの遅延を指定します。典型的には (イーサネットでは)、 0.003 から 0.007 秒までが適切です。このコマンドを使用しない場合のデフォルト値は、0.004 秒です。
- calldelay delay
- このオプションは、モデムまたは ISDN 呼び出しが終了するのために追加時間を許可する burst または iburst モードで送信された 1 番目と 2 番目のパケットの間の秒単位の遅延を制御します。
- driftfile driftfile
-
このコマンドは、ローカルクロック発振器の周波数を記録するのに使用されるファイルの完全なパスと名前を指定します。これは
-f コマンドラインオプションと同じ動作です。ファイルが存在しているなら、初期の周波数を設定するために起動時に読み込まれ、デーモンによって計算された現在の周波数で 1 時間ごとに 1 度更新します。ファイル名が指定されているが、ファイル自体が存在していないなら、 0 の初期周波数で開始され、最初にそれを書き込むときファイルを作成します。このコマンドが与えられないなら、デーモンは、常に 0 の初期周波数で開始します。
ファイルのフォーマットは、浮動小数点数 1 個だけを含む 1 行からなります。この浮動小数点数は、100 万分の 1 (PPM) 単位での周波数オフセット値を記録しています。このファイルの更新は、最初に現在の変動値を一時ファイルに書き込み、それからファイルの名前を変更して古いファイルと置換えることにより行ないます。このことは、 ntpd(8) が、ドリフトファイルのあるディレクトリに対し書き込み権を持っている必要があることと、シンボリックであろうとなかろうと、ファイルシステムリンクは避けるべきことを意味しています。
- enable [ auth | bclient | calibrate | kernel | monitor | ntp | pps | stats]
- disable [ auth | bclient | calibrate | kernel | monitor | ntp | pps | stats]
-
さまざまなサーバオプションを有効にしたり無効にしたりする手段を提供します。指定されていないフラグには影響がありません。これらのフラグは全て
ntpdc(8) ユーティリティプログラムを使用してリモートに制御できるということに注意してください。フラグの説明は次の通りです。
- auth
- 通信相手が公開キーまたは秘密キー暗号化のどちらかを使用して正しく認証されている場合にだけ、サーバが設定されていない通信相手と同期することを有効にします。このフラグのデフォルトは、 enable です。
- bclient
- デフォルトアドレスによる multicastclient コマンドのように、サーバがブロードキャストまたはマルチキャストサーバからのメッセージを listen (接続を受け付け) することをを有効にします。このフラグのデフォルトは、 disable です。
- calibrate
- 参照クロックのための調整機能を有効にします。このフラグのデフォルトは disable です。
- kernel
- 利用可能であるなら、カーネル時刻制御規則を有効にします。このフラグのデフォルトは、サポートが利用可能であるなら、 enable で、そうでなければ、 disable です。
- monitor
- モニタ用機能を有効にします。さらなる情報が必要なら、 ntpdc(8) プログラムの monlist コマンドの項を参照してください。このフラグのデフォルトは、 enable です。
- ntp
- 時刻と周波数制御規則を有効にします。実質的に、このスイッチは、テストに役に立つフィードバックループをオープンしてクローズします。このフラグのデフォルトは、 enable です。
- pps
- 周波数と時刻が正確な時刻カーネル変更によって調整されるとき、 1 秒ごとのパルス (PPS) シグナルを有効にします。さらなる詳細については、 ( /usr/share/doc/ntp にて提供される HTML 文書の一部として利用可能な) “A Kernel Model for Precision Timekeeping” (正確な時刻保持のためのカーネルモデル) ページを参照してください。このフラグのデフォルトは、 disable です。
- stats
- 統計機能を有効にします。さらなる情報が必要なら、“モニタ用オプション”のセクションを参照してください。このフラグのデフォルトは、 disable です。
- includefile includefile
- このコマンドによって、追加設定コマンドを、個別のファイルからインクルードすることができます。インクルードファイルは、5 段階の深さまで入れ子にすることができます。任意のインクルードファイルの終りに到達すると、コマンド処理は前の設定ファイルのところから再開します。このオプションは (ほとんど) 共通のオプション (例えば、制限リスト) をつけて、複数のホストで ntpd(8) を実行するサイトの役に立ちます。
- logconfig configkeyword
-
このコマンドは、システムの
syslog(3) 機能や、その代用の
logfile ログファイルに書かれる出力の量と種類を制御します。デフォルトでは、すべての出力がオンです。
configkeyword キーワードはすべて、‘
=
’, ‘+
’, ‘-
’を先頭につけることができます。ここで、‘=
’は、 syslog(3) の優先度マスクを設定し、‘+
’はメッセージを追加し、‘-
’はメッセージを削除します。 syslog(3) メッセージは、4 つのクラス ( clock, peer, sys, sync) で制御できます。これらのクラスの中では、 4 つのタイプのメッセージを制御することができます: 情報メッセージ ( info)、イベントメッセージ ( events)、統計メッセージ ( statistics) とステータスメッセージ ( status) です。設定キーワードはメッセージクラスとイベントクラスとをそのまま結びつけた形をしています。プレフィックス all は、メッセージクラスの代わりに使用できます。メッセージクラスの後ろに、キーワード all を続けることができ、それによって、それぞれのメッセージクラスのメッセージをすべて有効 / 無効にできます。このため、最低限のログの設定は次のようになるでしょう:
logconfig =syncstatus +sysevents
この設定では、単に ntpd(8) の同期のステータスと重要なシステムイベントをリストします。単純な参照サーバに対しては、次のような最低限のメッセージの設定を行うと有益でしょう:
logconfig =syncall +clockall
この設定では、時計の情報すべてと同期情報をリストします。他のイベントや通信相手に関するメッセージ、そしてシステムのイベントなどは抑止されます。
- logfile logfile
- このコマンドは、デフォルトのシステムの syslog(3) 機能の代わりに使用される、代用のログファイルの在処を指定します。これは -l コマンドラインオプションと同じ動作です。
- setvar variable [ default]
- このコマンドは、システム変数を追加します。これらの変数は、アクセスポリシなどの情報を追加して配布するために使用できます。 name= value の形式の変数に default キーワードが続いている場合、その変数は、デフォルトのシステム変数の一部としてリストされるようになります ( ntpq(8) rv コマンドを参照。) こうした変数の追加は、情報を与える目的だけを果たします。リストされるということ以外に、プロトコルに関係しません。既知のプロトコル変数は常に、 setvar の機構により定義されたいかなる変数よりも優先されます。同じグループのすべての変数名を含んだ 3 つの特別な変数があります。 sys_var_list は、すべてのシステム変数名を保持しています。 peer_var_list は、すべての通信相手の変数名を保持しています。そして、 clock_var_list は、参照クロックの変数名を保持しています。
- tinker [ allan allan | dispersion dispersion | freq freq | huffpuff huffpuff | panic panic | step srep | stepout stepout]
-
このコマンドは、極めて例外的な状況下で、いくつかのシステム変数を変更するために使用します。設定ファイル中で、このコマンドは、他の設定オプションのどれよりも前に置く必要があります。これらの変数のデフォルト値は、ネットワーク速度と信頼性の予測値について、幅広い範囲で、注意深く最適化させてあります。一般に、これら変数は簡単に予測できない込み入った方法で相互作用を及ぼし合います。また、変数の組合せによっては、とんでもない動作になってしまう可能性があります。ごくまれにですが、デフォルトの値を変更する必要がある場合がありますが、いずれにしても、つまみを回したいという誘惑に抵抗できない輩はいるもので、このコマンドはそういう人達のためのものです。特に強調しておきますが、このつまみを回すのは各自の勝手でやることで、サポートグループに一切の助けを求めることはできません。
この変数は次のように動作します。
- allan allan
- この引数は、最小 Allan 遮断値の新しい値になります。この値は PLL/FLL 時刻学習アルゴリズムのパラメータの 1 つです。底を 2 とする秒数の値で、7 (1024 秒) をデフォルトとし、それはまた、下限でもあります。
- dispersion dispersion
- 引数は、分散増加レート、通常 .000015 s/s、のための新しい新しい値になります。
- freq freq
- 引数は、100 万分の 1 単位の周波数オフセットの初期値になります。これは、周波数ファイルが存在しているなら、その値を上書きし、初期トレーニング状態でなければ、それを回避します。
- huffpuff huffpuff
- この引数は現在実験的に提供されるスーハーフィルタ (huff-n'-puff filter) のスパンの新しい値になります。この値は、このアルゴリズムが最小遅延を求める時間間隔のうち最も新しいものを決定します。下限は 900 秒 (15分) ですが、よりまともな値は 7200 (2時間) です。このコマンドが与えられるまでこのフィルタは有効になっていませんので、デフォルトはありません。
- panic panic
- 引数はパニック閾値で、通常 1000 秒です。 0 に設定されるなら、パニック判断が正しいかどうかの (sanity) チェックは、無効にされ、任意の値のクロックオフセットが、受け付けられます。
- step step
- 引数は、ステップ閾値で、そのデフォルトは 0.128 秒です。秒単位で任意の正の数値を設定することができます。 0 に設定されると、ステップ調整は決して生じません。注: ステップ閾値が 0 またはデフォルトより大きく設定されるなら、カーネル時刻制規則は無効にされます。
- stepout stepout
- 引数は、ステップアウトタイムアウトで、そのデフォルトは 900 秒です。秒単位で任意の正の数値を設定することができます。 0 に設定されると、ステップアウトパルスは抑制されません。
- trap host_address [ port port_number][ interface interface_address]
-
このコマンドは、指定したホストアドレス、ポート番号にトラップ受信器を設定します。このトラップ受信器は、指定したローカルインタフェースアドレスを持つメッセージを送信します。ポート番号を指定しない場合、値 18447 が使用されます。インタフェースアドレスを指定しない場合、そのメッセージが送信されたローカルインタフェースをソースアドレスに持つメッセージが送信されます。マルチホームを持つホストでは、経路情報の変更にともない、時により使用するインタフェースが変わることに注意してください。
トラップ受信器はイベントメッセージや、サーバからのその他の情報を、ログファイルにログを取ります。このような監視プログラムは、自分自身のトラップを動的に要求することもありますが、トラップ受信器の設定により、サーバの起動後に失われるメッセージはないことは保証されます。
- hop ...
- このコマンドは、昇順で TTL 値のリストを指定し、最大 8 つの値を指定することができます。メニーキャスト (manycast) モードでは、これらの値は拡張リング (expanding-ring) 検索で順番に使用されます。デフォルトは、31 から始まる 32 の 8 の倍数です。
関連ファイル
- /etc/ntp.conf
- デフォルトの設定ファイル名
- ntp.keys
- MD5 秘密キー
- ntpkey
- RSA 秘密キー
- ntpkey_ host
- RSA 公開キー
- ntp_dh
- Diffie-Hellman 共有パラメータ
関連項目
rc.conf(5), ntpd(8), ntpdc(8), ntpq(8) 提供されているマニュアルページに加えて、理解しやすいドキュメントが world wide web 上で入手可能です。 http://www.ntp.org/
から入手できます。このドキュメントのスナップショットが HTML フォーマットで /usr/share/doc/ntp ディレクトリ内にあります。 David L. Mills, Network Time Protocol (Version 3), RFC1305.
バグ
構文チェックに好き嫌いはありません。なんでも喜んで食べます。オプションやモードの、ばかげた組合せやお笑いの組合せさえ検出しないこともあります。ntpkey_host は、実際にはデジタル認証です。セキュリティディレクトリサービスが幅広く利用可能になった際には、そこから取得すべきです。
December 21, 2006 | FreeBSD |