スポンサーリンク

NTP.CONF(5) FreeBSD ファイルフォーマットマニュアル NTP.CONF(5)

名称

ntp.conf − ネットワークタイムプロトコル (NTP) デーモンの設定ファイル

書式

/etc/ntp.conf

解説

ntp.conf 設定ファイルは、 ntpd(8) デーモンの初期始動時に、同期用時刻供給 源、モード、その他関連情報を指定するために読み込みます。通常は、この設定 ファイルは /etc ディレクトリにインストールされますが、どのディレクトリに もインストール可能です (デーモンの −c コマンドラインオプションを参照)。

ファイルのフォーマットは、他の UNIX 設定ファイルと似ています。コメント は、文字 ‘#’ からはじまり、行末まで続きます。また、空行は無視されます。設 定コマンドは、先頭のキーワードと、その後に続く引数のリストからなります。 引数にはオプションのものもあります。各引数は空白で区切られています。コマ ンドは、複数の行にまたがることはできません。引数として、ホスト名、ドット で 4 つの部分に区切られた形式の数値で書かれたホストアドレス、整数、浮動小 数点で表現された数値 (秒で時間を指定した場合)、テキスト文字列があります。

このマニュアルページの残りでは、設定と制御オプションについて述べます。 "NTP の設定と NTP サブネットの設定に関する注意" のページ ( /usr/share/doc/ntp にある HTML 文書の一部として入手可能です) では、これら オプションについて更に進んだ議論があります。一般的な 設定オプションの議論 に加えて、サポートされている機能と、その機能を制御するためのオプションに ついて述べた、次のようなセクションがあります:

 認証機能のサポート

モニタ機能のサポート

アクセス制御機能のサポート

参照クロック機能のサポート

これらのセクションの後に その他のオプションについて述べたセクションもあり ます。利用可能なオプションは豊富にありますが、必要なオプションは、 server, peer, broadcast, manycastclient コマンドだけです。

設定オプション

次に述べるのは、NTPv4 の設定コマンドについてです。これらのコマンドは、基 本的な機能は NTPv3 のときと同じですが、場合によっては、新たな機能や引数を 持ったものがあります。コマンドには、2種類のクラスがあります。設定コマンド は、リモートサーバまたは通信相手または参照時計との永続的なアソシエーショ ンの設定を行ないます。補助コマンドは、さまざまな関連操作を制御する環境変 数を設定します。

設定コマンド

コマンドのキーワードおよび必要とされる IP アドレスの種類によって、さまざ まなモードが決定されます。アドレスは次のような種類にクラス分けされます。 (s) リモートサーバあるいは通信相手 (IP クラス A, B, C のいずれか)、 (b) ローカルインタフェースのブロードキャストアドレス、 (m) マルチキャストアド レス (IP クラス D)、あるいは、 (r) 参照時間アドレス (127.127.x.x) です。 以下では、各コマンドに適用可能なオプションだけを記載していることに注意し てください。記載していないオプションを使用してもエラーにならないかもしれ ませんが、その結果、妙なことをしたり、破壊的なことをしでかしたりすること があります。

         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 アドレスでも良いです。アソシエーションの振る舞いに関 するさらなる情報は、 "アソシエーション管理" のページにあります。

server
タイプ s および r のアドレス用です。このコマンドは、リモートサー バまたはローカルのラジオ時計との永続的クライアントモードのアソシ エーションを行使します。このモードでは、ローカル時計がリモート サーバに同期することはありますが、リモートサーバがローカル時計に 同期することは決してありません。このコマンドは、タイプ b または m のアドレスに対して使用すべきでは ありません。

peer
タイプ s のアドレス専用です。このコマンドは、指定したリモートの通 信相手との間で永続的対称アクティブ (symmetric-active) モードのア ソシエーションを行使します。このモードでは、ローカル時計がリモー トの通信相手に同期することがあります。また、リモートの通信相手が ローカル時計に同期することもあります。この性質は、さまざまな故障 の生じ方によっては、ローカル側とリモート側のどちらもがより良い時 刻源になりえるような、サーバのネットワークで有益です。このコマン ドは、タイプ b, m あるいは r のアドレスに対して使用すべきでは あ りません。

broadcast
タイプ b および m のアドレス専用です。このコマンドは、永続的ブ ロードキャストモードのアソシエーションを行使します。複数のローカ ルブロードキャストインタフェース (サブネット) および / あるいは、 複数のマルチキャストグループを指定するため、複数のコマンドを使用 できます。ローカルのブロードキャストメッセージは、指定されたサブ ネットに関連づけられたインタフェースだけに到達するということに注 意してください。ただし、マルチキャストメッセージは全てのインタ フェースに到達します。ブロードキャストモードでは、ローカルサーバ は、指定したアドレスに待機しているクライアント群に対して定期的に ブロードキャストメッセージを送信します。このときのアドレスは、通 常は、ローカルネットワーク (の 1 つ) のブロードキャストアドレス、 もしくは NTP に割り当てられたマルチキャストアドレスです。 IANA は、マルチキャストグループのアドレス 224.0.1.1 をNTP 専用に割り当 てています。しかし、メッセージを収容するために、その他の競合しな いアドレスも管理境界内で使用できます。もともと、この仕様は、ロー カルサーバが送信側として動作する時のみ適用されるものです。ブロー ドキャストクライアントとして動作させたい場合は、後に説明する broadcastclient もしくは multicastclient コマンドの項を参照してく ださい。

manycastclient
タイプ m のアドレス専用です。このコマンドは、指定されたマルチキャ ストアドレスに対してメニーキャストクライアントモードのアソシエー ションを行使します。この場合、使用するメニーキャストサーバで manycastserver コマンドで指定したアドレスと一致するアドレスを指定 することが必要です。 IANA が割り当てた 224.0.1.1 というマルチキャ ストアドレスは、使用すべきではありません。ただし、これらのメッ セージがインターネット上の広大な領域に撒き散らされ、それによって 膨大な量のリプライが送り手に集中しないように、何か特別な手段を講 じている場合は別です。 manycastserver コマンドは、ローカルサーバ がクライアントモードで動作することを指定します。ローカルサーバ は、ブロードキャスト / マルチキャストメッセージを送った結果発見し たリモートサーバとともに、クライアントモードで動作します。クライ アントは、指定した address に関連するグループアドレスへ、要求メッ セージを送ります。そして、特に有効にされたサーバがこの要求メッ セージに応答します。クライアントは、最も正確な時間を提供するサー バを選択し、以後は、 server コマンドを使用した場合と同様の動作を 継続します。それ以外のサーバは、まるで応答を受信しなかったかのよ うに無視します。

オプション:

autokey
サーバもしくは通信相手との間で送受信したパケットの全てが、 認証オ プションの項で説明する autokey 方式を使用して暗号化された認証 フィールドを含むようになります。

burst
サーバが到達可能な場合、ポーリング間隔ごとに、通常のパケット 1 個 の代わりに、パケット 8 個をバースト的に送信します。最初のパケット と2 個目のパケットの間隔は約 16 秒としてあります。これはモデムに よる電話接続が完了するまでの時間を取るためです。それ以後のパケッ トの間隔は約 2 秒です。この動作は、 server コマンドと s アドレス を使った時刻管理を質的に改善するために設計されました。

iburst
サーバに到達できない場合、ポーリング間隔ごとに、通常のパケット 1 個の代わりに、パケット 8 個をバースト的に送信します。サーバに到達 できない限り、モデムの電話接続が完了するように、パケットの間隔は 約 16 秒としてあります。サーバが到達可能になると、パケットの間隔 は約 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 秒) まで減らすことができ ます。

prefer
サーバに望ましいものとしての印をつけます。他の条件で差がなけれ ば、この印のついたサーバは、正しく動作しているホストの中から同期 用に選択されます。さらなる情報が必要なら、 "緩和のルールと 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 を使うことで、鍵配布/管 理機能が含むものは全て公開値のみです。値が公開されているので、鍵配布と保 管が単純化されます。

認証機能はアソシエーションそれぞれに対して個別に設定されます。 設定オプ ションの項で説明されるように、認証機能は、 peer, server, broadcast, manycastclient コマンドの key サブコマンドまたは autokey サブコマンドを利 用して設定されます。以下で説明する認証機能オプションは、1 組の鍵を指定 し、設定するアソシエーションそれぞれに対する鍵を選択し、設定操作を管理し ます。

auth フラグは、新しいアソシエーションまたはリモート設定コマンドが暗号化認 証を必要とするかどうかを制御します。このフラグの有効/無効の設定は、 enable および disable 設定コマンドを使用して行なうことができます。また、 他のマシンで ntpdc(8) プログラムを動かして、リモートから設定コマンドを送 り行なうこともできます。このフラグが有効に設定されていれば (デフォルトは 有効に設定されています)、新規のブロードキャストクライアントアソシエーショ ン、新規の対称パッシブアソシエーション、リモート設定コマンドは対称鍵方式 または、公開鍵方式のいずれかを用いて暗号的に認証されなければなりません。 このフラグが無効に設定されていれば、暗号的に認証されていなくてもこれらの 操作は有効です。後者のモードで操作を行うと、悪者ハッカー (訳注: クラッ カー) がクライアントの時刻管理処理に重大な混乱をもたらすことが可能である という、重大な脆弱性を招くことは理解しておいてください。

ファイアウォールと多数のブロードキャストクライアントが存在するネットワー クでは、認証機能を無効にしておくことも許容できるかもしれません。というの は、無効にすることで鍵の配布を行なわずにすみますし、ネットワークの管理が 単純になるからです。しかし、設定ファイルがホスト名を含む場合、または、 サーバかクライアントがリモートから設定される場合、 DNS と、それとは別の名 前解決プロセスを用いてホスト名を解決します。偽物のネームサーバメッセージ から守るために、内部で生成された鍵を使用して名前解決メッセージを認証して います。この鍵は、通常、ユーザからは見えません。しかし、暗号化機能のサ ポートが無効にされている場合、この名前解決プロセスが失敗してしまいます。 この問題の解決策は、ホスト名の代わりに IP アドレスを指定する (こちらはあ まりお勧めしません) か、または、 auth フラグを有効にして名前解決プロセス を行ない、名前解決プロセスが完了してから auth フラグを無効にするかのどち らかです。

マルチキャストサポートが利用可能な場所での代替案として魅力的なものは、メ ニーキャストモードです。このモードでは、クライアントは定期的にサーバを流 し釣りします。このモードでの暗号化認証は、公開鍵方式を以下に説明するよう に使用します。このメニーキャストモードの主な利点は、クライアントはサーバ を通常の動作の間に発見するので、サーバになり得るマシンに事前に設定する必 要がないことと、クライアント全てで同じ設定ファイルを利用できることです。

NTP 配布ソフトウェアの構築前に rsaref20 ソフトウェアをインストールしてお いた場合、デフォルトの対称鍵暗号化サポートに加えて、公開鍵暗号化のサポー トも利用可能です。公開鍵暗号化は、正確性と安定性を犠牲にせずに、安全な サーバ認証を提供します。対称鍵暗号化、公開鍵暗号化両方に対するセキュリ ティモデルとプロトコル方式は、以下に説明します。

対称鍵方式

RFC-1305 仕様では、本来、65,534 個の鍵の中の任意の 1 個を使い、アソシエー ションを認証することが可能です。鍵それぞれは 32 ビットの鍵識別子により区 別されます。ここで使われるサーバとクライアントは、メッセージを認証するた めの鍵および鍵識別子を合意しておく必要があります。鍵およびそれに関連する 情報は、鍵ファイル中で指定します。通常、このファイルは、 ntp.keys と呼ば れます。このファイルは安全な手続きを用いて交換/格納する必要がありますが、 この手続きは、NTP プロトコル自体の範疇を超えています。本来の NTP アソシ エーションに使用される鍵に加えて、追加の鍵を ntpq(8) および ntpdc(8) ユー ティリティプログラム用のパスワードとして使用できます。

ntpd(8) が初めて起動すると、 ntpd は、 keys コマンドで指定した鍵ファイル を読み込み、鍵キャッシュに鍵を設置します。一方、鍵は使用する前に trusted コマンドでアクティブにしておくことが必要です。これにより、例えば、いくつ かの鍵の束をインストールし、 ntpdc(8) を使用して鍵の束をリモートからアク ティブにしたり、非アクティブにしたりできます。また、これにより、鍵の安全 性が損なわれてしまった場合に使用できる鍵の取消機能も提供されます。 requestkey コマンドは、 ntpdc(8) ユーティリティ用にパスワードとして使用さ れる鍵を選択します。それに対して、 controlkey コマンドは、 ntpq(8) ユー ティリティ用にパスワードとして使用される鍵を選択します。

公開鍵方式

RFC-1305 に記載されている、もとからある NTPv3 の認証方式は継続してサポー トされています。しかしながら、NTPv4 では、 Autokey と呼ばれる認証方式が追 加され、それを利用できます。この認証機構は、MD5 メッセージダイジェス ト、RSA 公開鍵署名、 Diffie-Hellman 鍵合意アルゴリズムを使用します。これ らは NTPv4 配布ソフトウェアには含まれていませんが、いくつかのソースコード が存在します。この機能を有効にするためには、 README.rsa ファイルに説明し てあるように、 rsaref20 パッケージをインストールしておかねばなりません。 一度インストールすると、configure と構築プロセスがそれを自動的に検出し、 必要なルーチンをコンパイルします。 Autokey 方式は、サポートするさまざまな NTP モードに対応していくつかの動作モードを持っています。すべてのモードで タイムスタンプ付き RSA 署名を使用し、暗号化の値の送信元を検証します。すべ てのモードで、クライアント、サーバそれぞれで独立に計算できる特殊なクッ キーを 1 個使用します。対称モードでは、このクッキーは Diffie-Hellman 鍵合 意アルゴリズムを用いて組み立てられます。それ以外のモードでは、このクッ キーは IP アドレスとサーバのみが知っている秘密の値とで組み立てられます。 それに加えて、すべてのモードで S-KEY 方式と良く似た方式を使用します。その 方式では、疑似乱数鍵のリストを生成し、逆順で使用します。これらの方式は、 幹部向け要約、現状、要約スライド、文献リストともども、 "自主認 証(Autonomos Authentication)" のページで説明します。

Autokey 方式で使用する暗号化の値は、 ntp-genkeys(8) プログラムで生成する ファイルの中に組み込まれています。それらは、対称秘密鍵、公開鍵/秘密鍵の 組、合意パラメータです。これらファイルの形式の説明は、 ntp.keys(5) マニュ アルページを参照してください。これらのファイルには、 rsaref20 パッケージ のアルゴリズムにより生成された暗号化の値が印字可能な ASCII 文字の形式で含 まれています。すべてのファイル名には NTP 秒のタイムスタンプと、その後ろに デフォルトの名前とが含まれます。これらのデフォルトの名前は以下で与えま す。ファイルデータはシステムクロックを種とする乱数値に由来しており、ファ イル名にタイムスタンプが含まれているため、これらのファイルを生成するごと に、異なるファイル内容とファイル名で生成されます。

ntp.keys ファイルは DES/MD5 秘密鍵を含みます。このファイルを同じセキュリ ティ区画に属する他のサーバやクライアントに配布する際には、安全な手段で配 布せねばなりません。また、このファイルは root のみが見られるようにしなけ ればなりません。このファイルは Autokey 方式では使用しませんが、 ntpdc(8), ntpq(8) ユーティリティが使用するいくつかのリモート設定コマンドを認証する 際に必要です。 ntpkey ファイルは RSA 秘密鍵を保持します。このファイルを生 成したマシンでのみ利用できます。他のデーモンやアプリケーションプログラム と共用することは決してありません。ですから、root のみが見られるようにしな ければなりません。

ntp_dh ファイルは、合意パラメータを保持します。このパラメータは対称 (アク ティブ、パッシブ) モードでのみ使用します。対称モードアソシエーションを開 始する通信相手同士で同じパラメータを共有することが必要ですが、どちらの ntp_dh ファイルから得られたパラメータかは問題になりません。通信相手の一方 がパラメータを保持する場合、他方は Autokey プロトコルを用いてそのパラメー タを取得します。通信相手が双方ともパラメータを保持している場合、双方は最 も新しいコピーを使用します。通信相手がパラメータを持っていない場合、設定 されたアソシエーションまたは未設定のアソシエーションのいずれかについて、 全てのアソシエーションがパラメータを要求します。しかし、どちらかの通信相 手がパラメータを受信するまでは、アソシエーションの処理を進めることはでき ません。一度ロードされると、パラメータは要求に応じて他のクライアントや サーバに提供することができます。 ntp_dh ファイルのデータは公開値なので、 このファイルは安全でない手段を用いて配布することもできます。

ntpkey_host ファイルは RSA 公開鍵を含みます。ここで、 host はホストの名前 です。ホストはそれぞれ自分自身の ntpkey_host ファイルを持っています。通 常、このファイルは、Autokey プロトコルを用い他のホストに提供されます。 server アソシエーション、または、 peer アソシエーションは、特定のサーバま たは通信相手に関連した公開鍵を要求します。この公開鍵は、ローカルファイル から直接ロードされるか、 Autokey プロトコルを用いてサーバから間接的にロー ドされます。これらのファイルのデータは公開値であるため、これらのファイル は安全でない手段を用いて幅広く配布/保管することができます。

ntpkey_certif_host ファイルはオプションで、そのホストに対する PKI 証明 データを含みます。これはホスト名と RSA 公開鍵の結び付きを提供します。現在 の実装では、この証明データが存在すれば、クライアントはそれを取得します が、その内容は無視されます。

インタフェースごとの名前付けが幅広く使用されているため、設定され行使中の アソシエーションで使用されるホスト名は、 UNIX の gethostname(3) ライブラ リ関数を使って決定されます。 ntp-genkeys(8) プログラムと Autokey プロトコ ルは、ともにこのルーチンが返す名前を用いて公開鍵ファイルの名前を派生させ ます。どのサーバもクライアントも固有の公開鍵と秘密鍵をロードする必要があ りますが、それぞれのクライアントアソシエーションまたは通信相手アソシエー ションに対する公開鍵は、Autokey プロトコルを用いてサーバまたは通信相手か ら取得することができます。しかし、現在の開発段階では、 サーバまたは通信相 手の認証の確実性とサーバ名、アドレス、公開鍵の暗号との結合は、認証局 (certificate authority) や信用の輪 (web of trust) により確立されたところ にまで達していません。

閏秒表

NIST は、1972 年以後、歴史的に全ての閏秒の挿入の発生を示す表を提供してい ます。この閏秒表は、挿入発生それぞれだけでなく、協定世界時 (Coordinated Universal Time:UTC) に関する国際原子時 (International Atomic time:TAI) の オフセットもあわせて記載しています。ちなみに、協定世界時は NTP により伝播 されているものです。この表は、NIST 国家時刻サーバから FTP を使い ASCII ファイル pub/leap-seconds として直接取得することができます。

厳密にはセキュリティ機能ではありませんが、Autokey 方式はサーバまたは通信 相手から安全に閏秒表を取り出す手段を提供しています。サーバは、 crypto コ マンドで指定したファイルから、閏秒表を直接ロードします。クライアントは、 サーバから Autokey プロトコルを使い間接的に取得します。一度ロードされる と、閏秒表は要求に応じ他のクライアントやサーバに提供できます。

鍵の管理

デフォルトで、全ての鍵ファイルは、 /usr/local/etc に置かれます。このディ レクトリは通常、ネットワークで NFS マウントされた共有ファイルシステムの中 にあり、個々のマシンに別々にインストールする手間を省くことができます。こ のデフォルトは、 keysdir 設定コマンドを用いて上書きすることができます。し かし、ここは秘密鍵ファイルを置く場所としては良いとはいえません。マシンそ れぞれが自分のファイルを必要とするからです。このファイルをインストールす るのに適当な場所は /etc です。ここは、通常、共用ファイルシステムに存在し ません。

推奨するやり方は、ファイルをインストールした時のタイムスタンプ拡張子を保 持し、 (タイムスタンプ拡張子のない) デフォルト名から実ファイルへのリンク を作ることです。これにより、新規ファイルの生成をリンクを張り変えることで 有効にできます。しかし、 ntpd(8) は、拡張値を取り出す瞬間にリンク名を解釈 し、要求された時点で公開鍵とホスト名とともにリンク名を送付します。これに より、クライアントはファイルと生成時刻が常に現在であると検証することがで きます。しかし、各ファイルの実際の場所は crypto 設定コマンドにより上書き される可能性があります。

暗号化鍵と関連パラメータ全ては、例えば、1ヶ月に1回ぐらいの頻度で定期的か つ自動的に再生成する必要があります。 ntp-genkeys(8) プログラムは、一度に 生成するファイル全てに対し同じタイムスタンプ拡張子を使います。ですから、 ファイル生成のそれぞれは区別され、データ監視の際にファイル生成を認識でき ます。公開鍵/秘密鍵の組は全てのサーバとクライアントにより生成されねばなり ませんが、公開鍵と合意パラメータを、同じセキュリティ区画内の全てのマシン に対しわざわざコピーする必要はありません。これらは、Autokey プロトコルを 使い自動的に取得できるからです。しかし、プライマリサーバの全ては同じ合意 パラメータファイルを持つ必要があります。これを達成するために推奨する方法 は、プライマリサーバの 1 つにそのファイルを生成させ、その後で、同じセキュ リティ区画内の他のプライマリサーバに対し UNIX rdist(1) コマンドを用いてコ ピーすることです。 Autokey プロトコルの将来のバージョンでは、合意プロトコ ルがこの処理を自動的に行なう機能の提供を含むことになります。

サーバとクライアントは新規のファイル世代の生成を次のように行なうことがで きます。全てのマシンは起動時に古いファイル世代をロードしており、正常に動 作しています。指定した間隔で、各マシンは新規の公開鍵/秘密鍵の組を生成し、 デフォルトファイル名から新規ファイル名へのリンクを作成します。その後で、 ntpd(8) は再起動され、新規の生成をロードします。その結果、クライアントは もはや認証を正しく行なうことができなくなります。 Autokey プロトコルがそう 設計されているので、数分後にクライアントはタイムアウトし、プロトコルを最 初から開始します。その結果新規の世代をロードし、以前通り動作を続けること ができるようになっています。同様の手続きが合意パラメータファイルに対して も使用できます。しかし、この場合、このファイルを持つすべてのマシンが同じ コピーを持つように十分用心しておく必要があります。

認証コマンド

       autokey [logsec]

Autokey プロトコルで使用するセッション鍵のリストを再生成する時間 間隔を指定します。各アソシエーション用の鍵リストのサイズは、この 時間間隔と現在のポーリング間隔に依るということに注意してくださ い。デフォルト値は 12 です (4096 秒、つまり、約 1.1 時間です)。指 定した時間間隔以上のポーリング間隔に対しては、セッション鍵のリス トは単一エントリを持ち、メッセージを送るごとに再生成されます。

controlkey key
ntpq(8) ユーティリティプログラムで使用する鍵の識別子を指定しま す。このプログラムは、RFC-1305 で定義された標準プロトコルを使用し ます。 key 引数は、鍵のキャッシュ中の信頼された鍵に対する鍵識別子 です。値の範囲は、1 から 65534 で両端を含みます。

crypto [flags flags] [privatekey file] [publickey file] [dhparms file] [leap file]
このコマンドは NTP デーモンを構築する際に RSA ライブラリを含め設 定することが必要です。このコマンドは公開鍵暗号化を有効にし、必要 な RSA 秘密鍵ファイルと公開鍵ファイルをロードし、存在するなら Diffie-Hellman 合意パラメータファイルもロードします。ファイルを指 定しないでいた場合、デフォルトの名前は以下に説明するように使われ ます。次に示すのはサブコマンドです。

privatekey file
RSA 秘密鍵ファイルの場所を指定します。指定がない場合のデ フォルトは、 /usr/local/etc/ntpkey です。

publickey file
RSA 公開鍵ファイルの場所を指定します。指定がない場合のデ フォルトは、 /usr/local/etc/ntpkey_host です。ここで、 host は鍵を生成したマシンの名前です。

dhparms file
Diffie-Hellman パラメータファイルの場所を指定します。指定 がない場合のデフォルトは、 /usr/local/etc/ntpkey_dh で す。

leap file
閏秒表ファイルの場所を指定します。指定がない場合のデフォ ルトは、 /usr/local/etc/ntpkey_leap です。

keys keyfile
DES/MD5 秘密鍵ファイルの場所を指定します。このファイルは、対称鍵 モードで動作しているときに ntpd(8), ntpq(8), ntpdc(8) が使用する 鍵と鍵識別子を含みます。

keysdir path
このコマンドは NTP デーモンを構築する際に RSA ライブラリを含め設 定することが必要です。秘密鍵ファイル、合意パラメータファイル、公 開鍵ファイルに対するデフォルトのディレクトリパスを指定します。設 定ファイルにこのコマンドが出てこなかったとき、このデフォルトは /usr/local/etc です。

requestkey key
ntpdc(8) ユーティリティプログラムで使用する鍵の識別子を指定しま す。このプログラムでは、 ntpd(8) の現在の実装に特有の専用プロトコ ルを使用します。 key 引数は、信頼された鍵に対する鍵の識別子です。 その値は 1 から 65534 の範囲です (両端を含む)。

revoke logsec
Autokey 方式で使用するある暗号化値の再計算の間隔を、秒数を 2 の指 数で指定します。この方式のアルゴリズムによる総当たり攻撃をそらす ために、これらの値を頻繁に更新する必要があります。しかし、いくつ かの値の更新は比較的高価な処理です。デフォルトの時間間隔は 16 で す (65,536 秒、つまり約 18 時間です)。指定した間隔以上のポーリン グ間隔に対して、メッセージを送るごとに新しい値が再計算されます。

trustedkey key ...
通信相手を対称鍵暗号化を使い認証する目的で、信頼する暗号化鍵の識 別子を指定します。また ntpq(8) および ntpdc(8) プログラムで使用さ れる鍵も指定します。認証手続きが要求することは、この目的のため に、ローカルとリモートのサーバとが同じ鍵および鍵の識別子を共有し ていることですが、異なったサーバには、異なった鍵を使用可能です。 key 引数は 32 ビット符号なし整数で、1から65,534までの範囲の値で す。

モニタ機能のサポート

ntpd(8) には、サーバおよびクライアントの時間計測のパフォーマンスを長時間 連続して記録するのに適した、包括的なモニタ機能が含まれています。現在サ ポートされている統計の種類のリストと実行例については、後で述べる statistics コマンドを参照してください。統計ファイルは、ファイル世代集合 と、配布物の中の ./scripts ディレクトリにあるスクリプトを使用して管理され ています。これらの機能と、 UNIX の cron(8) ジョブを使用して、データが自動 的に要約され、時間を遡った分析を行うときのために保存されます。

モニタ機能のコマンド

       statistics name ...

統計レコードの書き込みを有効にします。現在のところ、4 種類の name の統計がサポートされています。

loopstats
ループフィルタの統計情報の記録を有効にします。ローカル時 計の更新を行うたびに、 loopstats という名前のファイル世代 集合に次の形式の行を出力します:

50935 75440.031 0.000006019 13.778190 0.000351733 0.013380 6

最初の 2 つのフィールドは、日付 (ユリウス暦に修正済) と時 刻 (UTC 午前 0 時からの秒数) です。次の 5 つのフィールド は、秒単位の時間オフセット、 100 万分の 1 (PPM) 単位の周 波数オフセット、秒単位の RMS ジッタ、100 万分の 1 (PPM) 単位の Allan 偏差、時計学習アルゴリズムの時定数です。

               peerstats

通信相手に関する統計情報の記録を有効にします。これには、 設定されたものと現在有効なものとの両方について、 NTP サー バの通信相手の全て、特別な時刻信号の通信相手の全てに対す る統計レコードが含まれます。有効な更新が行われる度 に、peerstats という名前のファイル世代集合の現在の要素に 次の形式の行を追加します:

48773 10847.650 127.127.4.1 9714 -0.001605 0.00000 0.00142
最初の 2 つのフィールドは、日付 (ユリウス暦に修正済)、時 刻 (UTC で午前 0 時からの秒数) です。次の 2 つのフィール ドは、それぞれドットで 4 つの部分に区切られた形式の記法で 書かれた通信相手のアドレスおよびステータスです。ステータ スフィールドは、RFC 1305 の NTP 仕様の追記 A で述べている フォーマットを用いて、16 進数で符号化されています。最後の 3 つのフィールドは、オフセット、遅延、RMS ジッタで、すべ て秒単位です。

               clockstats

時計ドライバの統計情報の記録を有効にします。時計ドライバ からの更新を受ける度に、clockstats という名前のファイル世 代集合に、次の形式の行を追加出力します:

49213 525.624 127.127.4.1 93 226 00:08:29.606 D
最初の 2 つのフィールドは、日付 (ユリウス暦に修正済) およ び時刻 (UTC で午前 0 時からの秒数) です。次のフィールド は、ドットで 4 つの部分に区切られた形式の記法で書かれた時 計のアドレスを示しています。最後のフィールドは、時計から 受け取った最後のタイムコードを意味のある ASCII フォーマッ トにデコードしたものです。時計ドライバによっては、これ以 外に追加でそこそこの情報を集め、あわせて表示するものがあ ります。さらなる情報については、各時計特有の情報を参照し てください。

               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 タイムスタンプを順に 示したものです。タイムスタンプの値は受け取ったままのもの であり、さまざまなデータ平滑化や緩和アルゴリズムが処理す る前のものです。

       statsdir directory_path

統計ファイルを作るディレクトリのフルパスを指定します (下記参照)。 このキーワードにより、ファイル世代集合のための filegen ファイル名 のプレフィックスの変更 (これがなければ固定のままです) が可能とな ります。これは、統計ログを扱うのに便利です。

filegen name [file filename] [type typename] [link | nolink] [enable | disable]
ファイル世代集合 name の設定を変更します。ファイル世代集合は、 サーバの活動期間を通じて継続的に大きくなっていくファイルを扱う手 段を提供します。サーバの統計はこのようなファイルの典型例です。 ファイル世代集合は、実際のデータを格納するのに用いられるファイル 集合へのアクセスを提供します。どんな時点でも、ファイル集合の高々 1 つの要素に対してだけ書き込みが行われます。指定した type は、 ファイル集合の新しい要素に、データがいつ、どのように出力されるの かを指定します。この方法で、 ntpd(8) の動作を妨げる危険を冒すこと なく、現在使用されていないファイル集合の要素に格納されている情報 を、管理操作のために使用できます (最も重要な操作: 新たな出力デー タ用の空きを作るために、これら要素を削除できます)。このコマンド は、リモートで動作している ntpdc(8) プログラムから送信可能である ことに注意してください。

name
これは、統計レコードのタイプです。 statistics コマンドの 項で示すものと同じです。

file filename
これは、統計レコード用のファイル名です。集合のメンバの ファイル名は、次の 3 つの要素の結合、すなわちプレフィック ス、ファイル名、サフィックスからできています。

prefix
ファイル名のパスであり、定数です。これは、 filegen オプションを使っても変更されることはあり ません。パスは、サーバが定義します。通常は、コン パイル時に定数として指定します。しかし、別のコマ ンドを使って、個々のファイル世代集合に対し設定す ることも可能です。例えば、 loopstats および peerstats 生成時に使われるプレフィックスは、前に 説明した statsdir オプションを使用して設定可能で す。

filename
この文字列は、そのまま先に述べたプレフィックスの 後ろに結びつきます (間に ‘/’ (スラッシュ) は入り ません)。これは、 filegen ステートメントの file 引数を使用することで変更できます。この中身には、 ‘..’ という要素を使用することはできません。それ は、プレフィックスで示されたファイルシステムの階 層外を filename が参照してしまうのを防ぐためで す。

suffix
この部分は、ファイル集合の要素ひとつひとつを反映 しています。これは、ファイル集合の種類に依存して 生成されます。

type typename
ファイル世代集合は、タイプによって特徴づけされます。次の ような種類がサポートされています:

none
このファイル集合はごく普通のファイル 1 つです。

pid
ntpd(8) サーバが生成されるごとに、ファイル集合の 要素が 1 つ使用されます。このタイプは、動作中に ファイル集合のメンバに何の変更も施すことはありま せんが、異なる ntpd(8) サーバの生成に属している ファイルを分けるのに簡単な方法を提供します。ファ イル集合のメンバのファイル名は、プレフィックスと 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(8) サーバプロセスのプロセス ID を後ろに付け加えたも のに変更します。ファイルへのリンク数が 1 よりも大きい場合 は、ファイルはアンリンクされます。これによって、現在の ファイルは、一定の名前でアクセスできます。

enable | disable
情報記録機能を有効または無効にします。

アクセス制御機能のサポート

ntpd(8) は、一般的な用途のアドレスおよびマスクベースの制限リストを実装し ています。この制限リストは、アドレスおよびマスクでソートされており、マッ チするか否かをみるのに、この順序で探索が行われます。この結果、最後にマッ チしたものが、入力パケットと関連付けられた制限フラグを定義します。入力パ ケットの送り主のアドレスがマッチに使われます。 32 ビットのアドレスと、制 限用のエントリに関連付けられたマスクとの AND をとり、それからエントリのア ドレスと比較をしてマッチが行われます (エントリのアドレスもマスクと AND が 取られています)。さらなる情報や例については、 "NTP の設定と NTP サブネッ トの設定に関する注意" のページにあります。

アクセス制限機能は、オリジナルの NSFnet バックボーンタイムサーバに対する アクセスポリシと一致するように実装されました。この機能は、望まないものや 落ちてしまったリモートのタイムサーバが自分のタイムサーバに影響を与えない ようにするには有効かもしれませんが、この機能を、標準の NTP 認証機能の代用 になると考えるべきではありません。送り元アドレスに基づいた制限というの は、やる気十分のクラッカーには簡単に回避されてしまいます。

死の接吻パケット

もともと、サービスを拒否されたパケットは、単純に捨てられるだけで、統計カ ウンタを増やす以外に一切の動作を生じさせることはありません。クライアント に明示的に送信停止を要求し、またシステムオペレータにメッセージを残すサー バメッセージなどの、より前向きな応答が必要となることがときどきあります。 この目的のために、特にパケット形式が作られました。それを称して、死の接吻 (kiss-of-death) パケットと言います。 kod フラグが設定されており、サービス が拒否されるか、クライアントが限界値を越えたとき、サーバはパケットを返 し、leap ビットを非同期に設定し、階層を 0 に設定し、ASCII 文字列 "DENY" を参照ソース識別子フィールドに設定します。 kod フラグが設定されていない場 合、サーバは単にパケットを捨てるだけです。

死の接吻パケットを受信したクライアントまたは通信相手は、一連の健全性 チェックを行ない、セキュリティの露出 (exposure) を最小限に押えます。この パケットが、そのサーバから受信した最初のパケットである場合、クライアント は、そのサーバの条件ではアクセスは拒否されたと想定します。そのクライアン トは階層と参照識別子の通信相手変数とを更新し、通信相手フラッシュ変数のア クセス拒否 (テスト 4) ビットを設定します。このビットが設定されている場 合、クライアントはそのサーバに対しパケットを送信しません。そのサーバから 受信した最初のパケットでなかった場合、クライアントはサーバ側で限界値を越 えたと想定します。しかし、通信相手変数は更新しません。いずれの場合でも、 メッセージをシステムログに送出します。

アクセス制御コマンド

         restrict numeric_address [mask numeric_mask] [flag ...]

numeric_address 引数は、ホストあるいはネットワークのアドレスで す。これは、ドットで 4 つの部分に区切られた形式で表現されます。 mask 引数も、ドットで 4 つの部分に区切られた形式で表現されます。 デフォルトは 255.255.255.255 です。これは、 numeric_address が個 別のホストのアドレスとして扱われるものであることを意味していま す。デフォルトエントリ (アドレス 0.0.0.0, マスク 0.0.0.0) は常に 含まれており、既定のソートアルゴリズムでは、常にリストの先頭のエ ントリとなります。 numeric_address は、通常ドットで 4 つの部分に 区切られた形式で与えられますが、 mask オプションを伴わないテキス ト文字列 ‘default’ は、デフォルトエントリを示すために使用できるこ とに注意して下さい。現在の実装では、 flag は常にアクセスを制限し ます。すなわち、フラグを持たないエントリは、サーバへの自由なアク セスが与えられることを示すことになります。フラグは直交的ではな く、より制限の強いフラグは、より制限の弱いフラグを冗長にすること もしばしばです。フラグは、一般に 2 つのカテゴリに分類されます。時 間サービスを制限するものと、情報問い合わせやサーバを実行時に再設 定しようとするのを制限するものです。次のフラグのうち、1 つ以上を 指定できます:

kod
アクセスが拒否された場合、死の接吻パケットを送信します。

ignore
このエントリにマッチするホストからのすべてのパケットを無 視します。このフラグが指定されると、問い合わせも時間サー バへのポーリングも応答されなくなります。

noquery
NTP のモード 6 と 7 のすべてのパケット (つまり情報問い合 わせと設定要求) を無視します。時間サービスは影響を受けま せん。

nomodify
サーバの状態を変えようとするモード 6 と 7 のすべてのパ ケット (つまり実行時再設定) を無視します。情報を返す問い 合わせは許されます。

notrap
マッチしたホストにモード 6 の制御メッセージのトラップサー ビスを提供することを拒否します。トラップサービスは、モー ド 6 の制御メッセージプロトコルのサブシステムで、リモート のイベントロギングプログラムによる使用が意図されていま す。

lowpriotrap
マッチしたホストによるトラップセットを低い優先度として宣 言します。 1 つのサーバが保持し得るトラップの数は制限され ています (現在の制限値は 3 です)。トラップは通常、先入れ 先出しベースで割り当てられ、後から来たトラップ要求はサー ビスを拒否されます。このフラグは、後から到着する要求のた めの通常優先度のトラップが低い優先度のトラップを上書きで きるようにすることで、割り当てアルゴリズムを変更します。

noserve
モード 6 と 7 以外のすべての NTP パケットを無視します。基 本的には、時間サービスは拒否されますが、それでも問い合わ せは許されています。

nopeer
ポーリングしているホストに、状態を持たない (stateless) 時 間サービスを与えますが、通信相手用のメモリ資源を割り当て ません。割り当てておけば、将来、同期の相手として有用にな るかもしれないとしてもです。

notrust
これらのホストは同期源としては決して使用されませんが、そ の他の点では普通に扱われます。

limited
これらのホストは、同一のネットからのクライアント数の制限 の対象となります。ここで言うネットとは、 (class A, class B, class C 等の) ネットの IP 表記のことです。サーバに見え るホストで、過去 client_limit_period 秒の間アクティブで あった、最初の client_limit 個のホストのみが、受け付けら れます。同一のネットの他のクライアントからの要求は拒否さ れます。時間要求パケットのみが考慮されます。 ntpq(8) およ び ntpdc(8) プログラムが送信した問い合わせパケットは、こ の制限の影響は受けません。クライアントの履歴は、 ntpd(8) のモニタリング機能を用いて保持されます。そのため、 limited フラグのついたアクセス制限のエントリがあれば、モ ニタリング機能は常にアクティブです。

ntpport
実質的には、制限フラグと言うより、マッチのアルゴリズムを 変更するものです。このフラグが存在すると、パケットのソー スポートが標準の NTP の UDP ポート (123) である場合にの み、制限エントリにマッチします。 ntpportnon-ntpport のどちらも指定できます。 ntpport の方が限定的なものである と考えられ、リストの後ろの方にソートされます。

デフォルトの制限リストエントリは、フラグ ignore, interface, ntpport を持ち、ローカルホストのインタフェースアドレスそれぞれに 対応するもので、サーバが自分自身の時間に同期しないようにするため に、スタートアップ時にテーブルに挿入されます。デフォルトエントリ は常に存在しています。さもなくば無設定になってしまう場合であって もです。他で設定されていない場合は、どのフラグもデフォルトエント リに関連づけられません (すなわち、あなた自身の NTP サーバ以外のす べてが無制限になります)。

clientlimit limit
client_limit
変数を設定します。この変数は、同時にアクセス制御され るクライアント数を制限します。この変数のデフォルト値は 3 です。

clientperiod period
client_limit_period
変数を設定します。この変数は、クライアントが 非アクティブであるとみなされ、そのために、もはや制限されるクライ アント数に数えられなくなるまでの秒数を指定します。この変数のデ フォルト値は 3600 秒です。

参照クロック機能のサポート

NTP バージョン 4 デーモンは、40 種類ほどの、電波、衛星、モデムを参照する 時計をサポートします。さらに、バックアップ用およびクロック源が他に利用で きなくなったときのために、特殊な疑似時計をサポートしています。個別のデバ イスドライバやオプションに関する詳細な説明は、 "参照クロックドライバ" の ページ (これは、 /usr/share/doc/ntp にある HTML 文書の一部として利用可能 です) にあります。さらなる情報は、 "参照クロックドライバのデバッグのヒン ト" や、 "参照クロックドライバの書き方" など、そこからリンクされたページ にあります。それに加え、 PPS 信号のサポートについては、 "1 秒間隔のパルス (PPS) 信号のインタフェース" のページの説明が利用できます。ドライバの多く は、特殊な回線規約 / ストリームモジュールをサポートしています。このモ ジュールを用いると、時刻の正確性が飛躍的に向上します。これに関しては、 " 回線規約とストリームドライバ" のページに説明があります。

参照クロックは、一般に (常にではありませんが) 無線時刻コード受信機です。 この無線時刻コード受信機は、カナダの NRC や合州国の NIST や USNO が提供し ているサービスのような、標準時刻の供給源に同期します。コンピュータと時刻 コード受信機との間のインタフェースはデバイス依存ですが、シリアルポートを 使うのが普通です。それぞれの参照クロックに特有のデバイスドライバを選択 し、そのディストリビューションでコンパイルする必要がありますが、もっとも 標準の無線、衛星、そしてモデム時計はデフォルトで含まれています。その時計 用のドライバがコンパイルされていないか、ハードウェアのポートが適切に設定 されていないときに参照クロックを設定しようとすると、システムのログファイ ルに激しい警告がでますが、その他の障害が起こることはありません。

設定の観点から見ると、 ntpd(8) は、参照クロックを、普通の NTP の交信相手 にするのとできる限り同じような方法で扱います。参照クロックは、通常の NTP 通信相手と区別するため、文法的には正しいが、無効な IP アドレスを使って認 識されます。参照クロックのアドレスは、 127.127.t.u の形式です。ここで、 t は時計の種類を示した整数で、 u はユニット番号 (範囲は 0-3) を示していま す。これは、過剰に見えるかもしれませんが、実のところ、同種類の参照クロッ クを複数設定するのには時として便利です。この場合、ユニット番号は一意のも のであることが必要です。

server コマンドを使用して参照クロックを設定します。ここで、このコマンドの address 引数は参照クロックのアドレスです。 key, version, ttl オプション は、参照クロックのサポートでは使用しません。参照クロックをサポートするた めに、 mode オプションが追加されています。このオプションについては後で述 べます。 prefer オプションは、サーバに、他の参照クロックや通信相手よりも いくらか熱心に、ある参照クロックを大切に扱わせるように促すのに有効です。 このオプションに関してのさらなる情報については、 "緩和ルールと prefer キーワード" のページにあります。 minpollmaxpoll オプションは、選択さ れたクロックドライバに対してのみ意味があります。さらなる情報については、 別個のクロックドライバのドキュメントページを参照してください。

fudge コマンドは、クロックドライバ固有の追加情報を提供するのに使用しま す。通常は、 server コマンドの直後に使用されます。 address 引数はクロック のアドレスを指定します。 refidstratum は、そのデバイスのデフォルト値 を上書きするために使用することができます。 2 個のオプションのデバイス依存 の時刻オフセットと 4 個のフラグがあり、それらも同様に fudge コマンドに含 めることが可能です。

参照クロックの階層 (stratum) 番号は、デフォルトで 0 です。 ntpd(8) デーモ ンは各通信相手の階層に 1 を足すので、プライマリサーバは、通常、外部階層 1 を示します。バックアップを巧みに運用するため、参照クロックの階層を 0 より 大きい数に指定するのが有益なことが多いです。この目的のために、 stratum オ プションを使用します。参照クロックと、1 秒間隔パルス (PPS) 調整信号の両方 を含む場合、参照クロック識別子をデフォルト値以外の、ドライバに依存したも のに指定するのが有効です。この目的のために、 refid オプションを使用しま す。記述がない限り、これらのオプションは、すべての時計ドライバに適用され ます。

参照クロックのコマンド

         server 127.127.t.u [prefer] [mode int] [minpoll int] [maxpoll int]

このコマンドは、参照クロックを特殊な方法で設定するのに使用できま す。オプションは次のように解釈されます:

prefer
その参照クロックを優先的なものとして印をつけます。その他 の点では対等であれば、正しく動作しているホストの中からこ の参照クロックが同期をとる対象として選ばれます。さらなる 情報については、 "緩和ルールと 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 コマンドの引数の形式 を取り、 "参照クロックドライバ" のページに記載されるよう に動作します。

time2 secs
秒単位の、固定小数点 10 進数を指定します。これは、ドライ バ依存の方法で解釈されます。 "
参照クロック用ドライバ" ページの各ドライバの説明を参照してください。

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 秒です。

driftfile driftfile
このコマンドは、ローカルの時計発振子の周波数オフセットを記録する ためのファイル名を指定します。このファイルが存在すると、起動時に 読み込まれ、初期周波数オフセットを指定するのに使用されます。その 後 1 時間に 1 度、デーモンはその時点での周波数オフセットを計算 し、その値でファイルを更新します。ファイルが存在しないか、このコ マンドが与えられていない場合、初期周波数オフセットは 0 と仮定され ます。この場合、周波数が安定し、残留時間誤差が収まるのに数時間か かる場合があります。

ファイルのフォーマットは、浮動小数点数 1 個だけを含む 1 行からな ります。この浮動小数点数は、100 万分の 1 (PPM) 単位での周波数オフ セット値を記録しています。このファイルの更新は、最初に現在の変動 値を一時ファイルに書き込み、それからファイルの名前を変更して古い ファイルと置換えることにより行ないます。このことは、 ntpd(8) が、 ドリフトファイルのあるディレクトリに対し書き込み権を持っている必 要があることと、シンボリックであろうとなかろうと、ファイルシステ ムリンクは避けるべきことを意味しています。

enable [
auth
| bclient | calibrate | kernel | monitor | ntp | stats]

disable [
auth
| bclient | calibrate | kernel | monitor | ntp | stats]
さまざまなサーバオプションを有効にしたり無効にしたりする手段を提 供します。指定されていないフラグには影響がありません。これらのフ ラグは全て ntpdc(8) ユーティリティプログラムを使用してリモートに 制御できるということに注意してください。フラグの説明は次の通りで す。

bclient
有効の場合、 broadcastclient コマンドと同一の効果がありま す。デフォルトでは、このフラグは disable です。

calibrate
校正機能を有効にします。この機能は、クロックドライバそれ ぞれの time1 の値を補正し、現在選択している時刻源または、 カーネル学習信号と同じオフセットを示すようにします。さら なる情報については、 "参照クロックドライバ" のページを参 照してください。このフラグのデフォルトは disable です。

kernel
adjtime(2) システムコールに対し、正確に計時できるカーネル サポートが実装されていれば、これを有効にします。もとも と、NTP デーモンがコンパイルされるときに、このルーチンが サポートされるかどうかは自動的に検出されるので、ユーザが このフラグのことを気にする必要はありません。このフラグは 本来、カーネルの開発中にこのサポートを無効にできるように するために提供されていました。このフラグのデフォルトは、 enable です。

monitor
モニタ用機能を有効にします。さらなる情報が必要なら、 ntpdc(8) プログラムの monlist コマンドの項を参照してくだ さい。このフラグのデフォルトは、 enable です。

ntp
サーバが、NTP を用いてローカル時計を調整できるようにしま す。無効になっている場合は、ローカル時計は、内蔵の時刻と 周波数オフセットで自分勝手に動きます。このフラグが有用な のは、ローカル時計が別のデバイスやプロトコルで制御され、 他のクライアント用に同期を提供するためだけに NTP を使う場 合です。この場合、ローカル時計のドライバをこの機能や、さ らに、誤差予測や閏秒表示子 (leap-indicators) を提供するた めに使用できます。さらなる情報が必要なら、 "参照時間ドラ イバ" のページを参照してください。このフラグのデフォルト は、 enable です。

stats
統計機能を有効にします。さらなる情報が必要なら、 "モニタ 用オプション" のセクションを参照してください。このフラグ のデフォルトは、 enable です。

logconfig configkeyword
このコマンドは、システムの syslog(3) 機能や、その代用の logfile ログファイルに書かれる出力の量と種類を制御します。デフォルトで は、すべての出力がオンです。 configkeyword キーワードはすべて、 ‘=’, ‘+’, ‘-’ を先頭につけることができます。ここで、 ‘=’ は、 syslog(3) の優先度マスクを設定し、 ‘+’ はメッセージを追加し、 ‘-’ はメッセージを削除します。 syslog(3) メッセージは、4 つのクラス (
clock
, peer, sys, sync) で制御できます。これらのクラスの内部で、 4 種のメッセージが制御できます。情報メッセージ (info) は設定情報 を制御します。イベントメッセージ (events) はイベントのロギング ( 到達可能性、同期、アラーム状況) を制御します。統計情報の出力は、 statistics キーワードを使用して制御されます。最後のメッセージグ ループは、ステータスメッセージです。これは主に、同期のステータス を表します。設定キーワードはメッセージクラスとイベントクラスとを そのまま結びつけた形をしています。プレフィックス all は、メッセー ジクラスの代わりに使用できます。メッセージクラスの後ろに、キー ワード all を続けることができ、それによって、それぞれのメッセージ クラスのメッセージをすべて有効 / 無効にできます。このため、最低限 のログの設定は次のようになるでしょう:

logconfig =syncstatus +sysevents

この設定では、単に ntpd(8) の同期のステータスと重要なシステムイベ ントをリストします。単純な参照サーバに対しては、次のような最低限 のメッセージの設定を行うと有益でしょう:

logconfig =syncall +clockall

この設定では、時計の情報すべてと同期情報をリストします。他のイベ ントや通信相手に関するメッセージ、そしてシステムのイベントなどは 抑止されます。

       logfile logfile

このコマンドは、デフォルトのシステムの syslog(3) 機能の代わりに使 用される、代用のログファイルの在処を指定します。

setvar variable [default]
このコマンドは、システム変数を追加します。これらの変数は、アクセ スポリシなどの情報を追加して配布するために使用できます。 name=value の形式の変数に default キーワードが続いている場合、そ の変数は、デフォルトのシステム変数の一部としてリストされるように なります (
ntpq(8) rv コマンドを参照。) こうした変数の追加は、情 報を与える目的だけを果たします。リストされるということ以外に、プ ロトコルに関係しません。既知のプロトコル変数は常に、 setvar の機 構により定義されたいかなる変数よりも優先されます。同じグループの すべての変数名を含んだ 3 つの特別な変数があります。 sys_var_list は、すべてのシステム変数名を保持しています。 peer_var_list は、す べての通信相手の変数名を保持しています。そして、 clock_var_list は、参照クロックの変数名を保持しています。

tinker [
step
step | panic panic | dispersion dispersion | stepout stepout | minpoll minpoll | allan allan | huffpuff huffpuff]
このコマンドは、極めて例外的な状況下で、いくつかのシステム変数を 変更するために使用します。設定ファイル中で、このコマンドは、他の 設定オプションのどれよりも前に置く必要があります。これらの変数の デフォルト値は、ネットワーク速度と信頼性の予測値について、幅広い 範囲で、注意深く最適化させてあります。一般に、これら変数は簡単に 予測できない込み入った方法で相互作用を及ぼし合います。また、変数 の組合せによっては、とんでもない動作になってしまう可能性がありま す。ごくまれにですが、デフォルトの値を変更する必要がある場合があ りますが、いずれにしても、つまみを回したいという誘惑に抵抗できな い輩はいるもので、このコマンドはそういう人達のためのものです。特 に強調しておきますが、このつまみを回すのは各自の勝手でやること で、サポートグループに一切の助けを求めることはできません。

全ての引数は、浮動小数点数の秒、または秒分の秒です。 minpoll 引数 は、秒を2のベキ整数で表したものです。この変数は次のように動作しま す。

step step
この引数は、時刻設定の閾値 (通常 0.128秒) の新しい値にな ります。 0 に設定した場合、時刻設定 (step) による補正は生 じません。一般には、時刻設定を避ける目的のためには、時刻 設定閾値は触らずに、 −x コマンド行オプションを使うのが普 通です。

panic panic
この引数は、パニック閾値 (通常 1000 秒) の新しい値になり ます。 0 に設定した場合、パニック健全性チェックは無効にさ れ、時刻オフセットとして全ての値が受理されます。

dispersion dispersion
この引数は、分散値増加率 (通常、.000015) の新しい値になり ます。

stepout stepout
この引数は、ワッチドッグタイムアウト (通常 900 秒) の新し い値になります。

minpoll minpoll
この引数は、マルチキャストクライアントアソシエーション、 メニーキャストクライアントアソシエーション、対称パッシブ モードアソシエーションを設定するときに用いる最小ポーリン グ間隔の新しい値になります。デフォルトの値は 6 (64秒) で、下限は 4 (16秒) です。

allan allan
この引数は、最小 Allan 遮断値の新しい値になります。この値 は PLL/FLL 時刻学習アルゴリズムのパラメータの 1 つです。 デフォルトは 1024 秒で、この値が下限でもあります。

huffpuff huffpuff
この引数は現在実験的に提供されるスーハーフィルタ (huff-n’-puff filter) のスパンの新しい値になります。この 値は、このアルゴリズムが最小遅延を求める時間間隔のうち最 も新しいものを決定します。下限は 900 秒 (15分) ですが、よ りまともな値は 7200 (2時間) です。このコマンドが与えられ るまでこのフィルタは有効になっていませんので、デフォルト はありません。

trap host_address [port port_number] [interface interface_address]
このコマンドは、指定したホストアドレス、ポート番号にトラップ受信 器を設定します。このトラップ受信器は、指定したローカルインタ フェースアドレスを持つメッセージを送信します。ポート番号を指定し ない場合、値 18447 が使用されます。インタフェースアドレスを指定し ない場合、そのメッセージが送信されたローカルインタフェースをソー スアドレスに持つメッセージが送信されます。マルチホームを持つホス トでは、経路情報の変更にともない、時により使用するインタフェース が変わることに注意してください。

トラップ受信器はイベントメッセージや、サーバからのその他の情報 を、ログファイルにログを取ります。このような監視プログラムは、自 分自身のトラップを動的に要求することもありますが、トラップ受信器 の設定により、サーバの起動後に失われるメッセージはないことは保証 されます。

関連ファイル

       /etc/ntp.conf

デフォルトの設定ファイル名
ntp.keys
MD5 秘密鍵
ntpkey
RSA 秘密鍵
ntpkey_host
RSA 公開鍵
ntp_dh
Diffie-Hellman 合意パラメータ

関連項目

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 は実際にはデジタル認証です。セキュリティディレクトリサービス が幅広く利用可能になった際には、そこから取得すべきです。

FreeBSD 10.0 January 13, 2000 FreeBSD 10.0

スポンサーリンク