XNTPD(8)

名称
xntpd - Network Time Protocol デーモン

書式
xntpd [-abdm] [-c conffile] [-e authdelay] [-f driftfile] [-k keyfile] [-p pidfile] [-r broadcastdelay] [-s statsdir] [-t trustedkey] [-v variable] [-V variable]

解説
xntpd は、インターネットの標準時間サーバに合わせて、 Unix のシステム時刻 (time-of-day) を設定し維持するデーモンです。 xntpd は、RFC 1305 で定義されている Network Time Protocol (NTP) バージョン 3 標準の完全な実装となっていますが、各々 RFC 1059 と RFC 1119 で定義 されているバージョン 1 とバージョン 2 に対する互換性も保っています。 xntpd は全ての計算を固定小数点演算により行うので、浮動小数点を扱うコードは 必要としません。プロトコルおよび時間調整のコードで行われる計算は、 高精度で実行されます。また、最も正確な外部時計の供給源に対しても同期 できるだけの精度の維持を計るべく、計算に規則だった補正値を導入すると いったように、細部まで注意が払われています。

通常、 xntpd は、起動時に設定ファイルから設定を読込みます。 デフォルトの設定ファイル名は、 /etc/ntp.conf ですが、コマンドラインの指定の方が優先します。また、もっぱらコマンド ラインだけで、その局面に役立つ xntpd の設定を与え、設定ファイルを不要にすることもできます。これは、 xntpd が、実行時にブロードキャストを待受ける (listen) ことで決定される全て の通信相手 (peer) に対して、ブロードキャストもしくはマルチキャスト クライアントとして設定されるべき時には、特に適しています。 xntpd デーモンの実行中は、 ntpq(8) および xntpdc(8) を使用することで、デーモンのさまざまな内部変数を表示したり 設定オプションを変更できます。

デーモンは対称アクティブ/パッシブ、クライアント/サーバ、ブロードキャスト /マルチキャスト等の対称的なモードを含むいずれかのモードで働くことが できます。ブロードキャストもしくはマルチキャストクライアントは、 自動的にリモートサーバを探し出し、片道の遅延補正因子を計算して、自動的 に自身に対する設定を行います。これにより、その環境に固有の詳細な設定 や設定ファイルなしに、一群のワークステーションを 配置することが可能になります。

以下にあげるコマンドライン引数が xntpd により理解されます。(より完全な機能の説明については、 設定ファイルの説明を参照のこと):

-a  "認証 (authenticate)" モードで実行します。

-b  NTP のブロードキャストを待受けて、可能ならそれに同期します。

-c  デフォルトの代わりの設定ファイルを指定します。

-d  デバッグモードを指定します。このフラグは何回指定してもかまいませんが、 回数が多いほど表示がより詳細になります。

-e  このコンピュータ上で、NTP の暗号化 (encryption) フィールドを計算する のに必要な時間を (秒で) 指定します。

-f driftfile
    driftfile のある場所を指定します。

-k  NTP の認証キーを含むファイルのある場所を指定します。

-m  マルチキャストメッセージを待受けて、可能ならそれらに同期します ( マルチキャストカーネルが必要になります)。

-p  デーモンのプロセス ID を記録するためのファイル名を指定します。

-r  通常、デーモンは、ブロードキャストもしくはマルチキャストのサーバと クライアントとの間のネットワーク遅延を自動的に補正します。 遅延の測定作業が失敗した場合には、ここで指定した (秒の) デフォルトの 遅延を使用するようになります。

-s  統計ファイルを作成するためのディレクトリを指定します。

-t trustedkey
    キー番号を信頼できるキー (trusted key) のリストに付け加えます。

-v  システム変数を追加します。

-V  デフォルトでリストされるシステム変数を追加します。

コンフィギュレーションオプション
xntpd の設定ファイルのフォーマットは、 他の Unix 設定ファイルのものに似ています。 コメントは文字 "#" で始まり、行末まで続きます。空行は無視されます。 設定コマンドは、行頭のキーワードとそれに続く引数のリストからなります。 引数の内いくつかは、省略可能な場合があります。 また、引数は空白で区切ります。 これらのコマンドは複数行にわたってはなりません。 引数は、ホスト名、ドットで区切られた 4 つ組の数からなる (dotted-quad) 形式の ホストアドレス、整数、浮動小数点数 (秒で時間を指定する際用います)、 テキスト文字列などです。 以下の説明では、省略可能な引数は、 "[]" で囲み、複数択一の引数は、互いに "|" 区切って表します。

peer
    host_address [key #] [version #] [prefer]

server
    host_address [key #] [version #] [prefer]

broadcast
    host_address [key #] [version #] [ttl #]

    これらの 3 つのコマンドは、利用されるべき時間サーバや与えられるべき 時間サービスを指定します。 peer コマンドは、ローカルサーバが、コマンド中の host_address で示されるリモートサーバに対し、 "対称的アクティブ (symmetric active)" モードで動作するよう指示します。このモードでは、 ローカルサーバをリモートサーバに同期させるのと同時に、リモートサーバ をローカルサーバに同期させることができます。これは、サーバの ネットワークにおいて、さまざまな悪い状況により、 ローカルサーバとリモートサーバのどちらかがより良い時刻供給源と なり得るような場合に役立ちます。 server コマンドは、ローカルサーバが、指定したリモートサーバに対して "クライアント" モードで動作するよう指示します。 このモードでは、ローカルサーバはリモートサーバに同期しますが、 リモートサーバがローカルサーバに同期することは決してありません。 broadcast コマンドは、ローカルサーバが、 "ブロードキャスト" モードで動作するよう指示します。ローカルサーバは、コマンド中で指定される ブロードキャスト/マルチキャストアドレスを持つクライアント集団に、 定期的にブロードキャストメッセージを送ります。通常、この指示は、 送信側 (transmitter) として動作しているローカルサーバにのみ適用されます。 ブロードキャストクライアントに対する動作については、以下に説明する broadcastclient もしくは multicastclient コマンドの項を参照して下さい。このモードでは、 host_address は、通常、そのローカルネットワーク (もしくは複数の ローカルネットワークの内のひとつ)の上でのブロードキャストアドレスであるか、 NTP に割り当てられたマルチキャストアドレスです。NTPには、アドレス 224.0.1.1 が 割り当てられてきました。現在のところは、このアドレスのみを使用すべきです。 マルチキャスト機能はマルチキャストカーネルを必要としますが、これは、 まだ、どのベンダの製品にでも存在するものではないということに注意し て下さい。

    key オプションが含まれていると、そのアドレスに送られる全てのパケットが、 指定したキー番号 (32 ビット符号無し整数の範囲の数) を用いて暗号化された 認証フィールドを含むようになります。 version オプションにより、送出される NTP パケットに使用されるべきバージョン 番号を指定することができます。バージョン 1, 2, 3 のいずれかが選択で きますが、バージョン 3 がデフォルトになっています。 prefer オプションは、そのホストを優先的ホストとします。このホストは、その他 全ての点では同等ですが、正常に動作している一群のホストの中から同期を 取る対象として選ばれます。 ttl オプションは、ブロードキャストモードでのみ使用され、マルチキャスト パケットで用いられる生存時間 (TTL) を指定します。デフォルトは 127 ですが、 適切な値を選択することは、黒魔術の一種であり、ネットワーク管理者 との調整を必要とします。

broadcastclient
    ローカルサーバに対し、同じサブネット上の他のサーバを見付けるために、 ローカルネットワーク上のブロードキャストメッセージを待受けるよう指示 します。ローカルサーバは、最初のブロードキャストメッセージを受取る際、 リモートサーバとクライアント/サーバ間の短いやりとりを用いて、名目上 の (nominal) ネットワーク遅延を測定してから、後続のブロードキャスト メッセージを待ち受けて、それに同期する "ブロードキャストクライアント" モードに入ります。このモードでの偶然もしくは故意の分裂状態 を避けるため、ローカルとリモートのサーバの両方は認証に同一の信頼でき るキーとキー識別子を使用して動作しなくてはならないことに注意して下さい。

multicastclient [IP address ...]
    このコマンドは、 broadcastclient コマンドと同じように用いられますが、IP マルチキャストを使用して動作 します。この機能をサポートするには、マルチキャストカーネルと認証の使用が 必要です。1 つ以上の IP アドレスが与えられると、サーバはそれぞれ のマルチキャストグループに加わります。1 つも与えられなければ、NTP に 割り当てられている IP アドレス (224.0.1.1) が想定されます。

driftfile filename
    このコマンドは、ローカルの時計発振子の周波数オフセットを記録するため のファイル名を指定します。このファイルが存在すると、起動時に初期周波数 オフセットを指定するのに使用され、その後 1 時間に 1 度 その時点での周波数オフセットがデーモンにより計算されて更新されます。 ファイルが存在 しないか、このコマンドが与えられていない場合、初期周波数オフセットは 0 と仮定されます。この場合、周波数が安定し、残った時間誤差が収まる のに数時間かかります。 ファイルには、 100 万分の 1 (ppm) 単位でのオフセット値を表す浮動小数点数が 1 つ含まれます。 このファイルが、最初にカレント変動値を一時ファイルに書込み、 rename(3) により古いファイルと置換えることで更新されることに注意して下さい。これは、 xntpd が、ドリフトファイルのあるディレクトリに対し書き込み権を持っている必要があり、 ファイルは、シンボリックであろうとなかろうと、 ファイルシステムリンクであるべきではないだろうことを意味しています。

enable auth|bclient|pll|monitor|stats [...]
    さまざまなサーバオプションを有効にします。指定されていないフラグは 影響を受けません。 auth フラグは、その通信相手 (peer) が信頼 できるキーとキー識別子を使用して正しく認証されている場合に限って、サーバが 未設定の相手に同期するようにします。このフラグのデフォルトは 無効 (オフ) です。 bclient フラグは、サーバがブロードキャストもしくはマルチキャストサーバからの メッセージを待ち受けるようにします。これにより、 そのサーバに対する連携 (association) が自動的に成立します。 このフラグのデフォルトは無効 (オフ) です。 pll フラグは、サーバのローカル時計を調整するようにします。デフォルトでは 有効 (オン) です。無効にした場合、ローカル時計は固有の時間と周波数オプセットの まま動きます。このフラグは、ローカル時計が他の何らかのデバイスや プロトコルにより制御されており、NTPは他のクライアントと同期をとるためだ けに使用されている場合に、役立ちます。 monitor フラグは、モニタファシリティ (facility) を有効にします(下記参照のこと)。 デフォルトでは有効 (オン) です。 stats フラグは、統計のファシリティ の filegen (下記説明を参照のこと) を有効にします。デフォルトでは有効 (オン) です。

disable auth|bclient|pll|monitor|stats [...]
    さまざまなサーバオプションを無効にします。指定されていないフラグは影響を 受けません。現在使用可能なオプションは、enable コマンドの項で説明 しています。

認証オプション

keys filename
    このコマンドは、認証モードでの操作の際、 xntpd により使用される暗号化キーとキー識別子を含むファイルの名前を指定します。 このファイルのフォーマットは以降で説明します。

trustedkey # [# ...]
    このコマンドは、同期するのにふさわしい通信相手を認証する目的において、 信用できる暗号化キー識別子を指定するのに使用されます。 この目的で、ローカルとリモート両方の サーバが同一のキーとキー識別子を共有することを、認証手続きは求めます。 異なるサーバ間では異なるキーを使用できます。 引数は、32 ビット符合なし整数ですが、 NTP キー 0 は固定されており周知の ものであることに注意してください。意味のある認証が行われるべきならば、 キー 0 は信用すべきではありません。

requestkey #
    このコマンドは、 xntpd の動作に影響を与える問題の診断と修復に役立つ xntpdc(8) プログラムにより使用されるキー識別子を指定します。 xntpdc プログラムの動作は、 xntpd のこの固有の実装に特定されており、このバージョン および以前のバージョンのデーモンとのみ動作すると見込まれます。ローカル サーバの状態に影響を与えるリモートの xntpdc プログラムからの要求は、 認証されねばなりません。そのためには、リモートプログラムとローカル サーバが共通のキーとキー識別子を共有することが必要です。このコマンドの引数は、 32 ビット符合なし整数です。設定ファイルに controlkey コマンドが含まれていないか、キーがマッチしないと、この要求は無視され ます。

controlkey #
    このコマンドは、 xntpd の動作に影響を与える問題の診断と修復に役立つ ntpq(8) プログラムにより使用されるキー識別子を指定します。 xntpq プログラムと xntpd の動作は RFC 1305 の定義を満たしています。ローカルサーバの状態に影響 を与えるリモートの ntpq プログラムからの要求は、認証されねばなりません。そのためには、リモート プログラムとローカルサーバが共通のキーとキー識別子を共有することが 必要です。このコマンドの引数は、32 ビット符合なし整数です。 設定ファイルに requestkey コマンドが含まれていないか、キーがマッチしないと、この要求は無視され ます。

authdelay seconds
    ローカル計算機上で NTP 認証フィールドを暗号化するのに要する時間の 総計を示します。この値は、送出パケットに認証が用いられる際、送信タイム スタンプを修正するのに使用されます。通常、この値は 0.0001 秒から 0.003 秒あたりになりますが、これはまさにホスト計算機の CPU 速度に依存して います。通常、この値は、ディストリビューションに含まれている authspeed プログラムを用いて計算されます。

アクセス制御オプション

restrict
    address [mask numeric_mask] [flag] [...] xntpd は、汎用のアドレスとマスクに基づく制限リストを実装しています。リスト はアドレスにより、そしてマスクによりソートされ、その順番でマッチして いるかどうか調べられます。ここで、最後にマッチしたものが受信パケット に関する制限フラグを定義します。受信パケットのソースアドレスは、制限 リストエントリのマスクでアンドをとられた 32 ビットアドレスと マッチするか調べられ、それからエントリアドレス (これもまたマスクと アンドをとられます) と比較され、マッチするものを探します。引数 mask のデフォルトは 255.255.255.255 で、 address が個別のホストのアドレスとして扱われることを意味します。デフォルト エントリ (address 0.0.0.0, mask 0.0.0.0) は常にリストに含まれ、既定の ソートアルゴリズムでは、リストの先頭のエントリとなります。 address は、通常ドット付き 4 つ組形式で与えられますが、mask オプションを伴わないテキスト文字列 default は、デフォルトエントリを示すために使用できることに、注意して下さい。

    現在の実装では、フラグは常にアクセスを制限します。すなわち、フラグを 持たないエントリは、サーバへの自由なアクセスが与えられることを示す ことになります。フラグは直交的ではなく、より制限の強いフラグは、より 制限の弱いフラグを冗長にします。フラグは、一般に 2 つのカテゴリに分類 されます。時間サービスを制限するものと、情報問い合わせやサーバの 実行時再設定の試みを制限するものです。次のフラグの内、1 つ以上を指定する ことができます:

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

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

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

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

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

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

    nopeer
        ポーリングしているホストに、状態を持たない (stateless) 時間サービス を与えますが、そうしなければ将来的に同期の相手として有用であるかもし れない場合にさえ、それらに更新相手 (peer) 用のメモリ資源を割当てません。

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

    limited
        これらのホストは、同一のネットからのクライアント数の制限の対象となり ます。ここで言うネットとは、 (class A, class B, class C 等の) ネット の IP 表記のことです。 サーバに見えるホストで、過去 "client_limit_period" 秒の間アクティブであった、最初の "client_limit" 個のホストのみが、受け付けられます。同一の ネットの他のクライアントからの要求は拒否されます。時間要求パケットのみが、 考慮されます。 "プライベート" 、 "制御" 、 "ブロードキャスト" 等のパケットは、クライアント制限の対象にはならず、 クライアントの数の内には入れられません。クライアントの履歴は、 xntpd のモニタリング機能を使用して維持されます。それゆえ、モニタリングは、 "limited" フラグに制限エントリがある限り、アクティブです。 "client_limit" のデフォルト値は 3 です。 "client_limit_period" のデフォルト値は 3600 秒です。

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

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

    制限機能は、NSFnet の幹線上で動いている時間サーバの現在のアクセスポリシが、 xntpd と同様に実装され得るように、付け加えられたものです。 望まないまたは故障したリモート時間サーバからのあなたのサーバへの影響を 避けるために、この機能がことのほか有用である一方、これが 標準の NTP 認証 機能の代わりになると考えるべきではありません。ソースアドレスに 基づく制限は、確信犯的クラッカーにたやすく裏をかかれます。

clientlimit limit
    "client_limit" を limit にセットし、クライアント制限ポリシの設定を可能にします。 この変数は、そのサーバの使用を許される 同一ネットワークからのクライアント数を定義します。

clientperiod period
    "client_limit_period" をセットし、クライアント制限ポリシの設定を可能にします。 この変数は、その時間後にクライアントがインアクティブであるとみなし、 従って制限されるクライアント数にもはや数えられなくなるような秒数を指定します。

モニタリングオプション

statsdir /directory path/
    統計ファイルが作られるべきディレクトリのフルパスを指定します(下記参照)。 このキーワードにより (そうでなければ定数である) filegen ファイル名の プレフィックスを統計ログ処理に対して用いられるファイル生成セットに対して 修正することが可能となります (下記 filegen 文を参照)。

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

    loopstats
        ループフィルタの統計情報の記録を有効にします。ローカル時計の更新を行う度に、 "loopstats" と名付けられたファイル生成セットに次の形式の行を出力します:
            48773 10847.650 0.0001307 17.3478 2
        最初の 2 つのフィールドは、日付 (ユリウス歴に修正済) と時刻 (UTC 午前 0 時からの秒数)です。次の 3 つのフィールドは、時計の更新時の、 秒での時間オフセット, 100 万分の 1 単位の周波数オフセット, clock-discipline アルゴリズムの時定数です。

    peerstats
        通信相手に関する統計情報の記録を有効にします。これには、存在し設定済みの NTP サーバと 1-pps シグナルのすべての通信相手に関する統計レコードが 含まれます。有効な更新が行われる度に、 "peerstats" と名付けられたファイル生成セットの現在の要素に次の形式の行を出力します:
            48773 10847.650 127.127.4.1 9714 -0.001605 0.00000 0.00142
        最初の 2 つのフィールドは、日付 (ユリウス歴に修正済) と時刻 (UTC 午前 0 時からの秒数)です。次の 2 つのフィールドは、それぞれ ドット付き 4 つ組記法で表された通信相手のアドレスとステータスです。 ステータスフィールドは、 NTP の仕様である RFC 1305 の Appendix A で記述さ れたフォーマットに従い 16 進数にエンコードされています。最後の 3 つ のフィールドは、オフセット, 遅延, ばらつきで、すべて秒単位です。

    clockstats
        時計ドライバの統計情報の記録を有効にします。時計ドライバからの更新を 受ける度に、 "clockstats" と名付けられたファイル生成セット次の形式の行を出力します:
            49213 525.624 127.127.4.1 93 226 00:08:29.606 D
        最初の 2 つのフィールドは、日付 (ユリウス歴に修正済) と時刻 (UTC 午前 0 時からの秒数)です。次のフィールドは、ドット付き 4 つ組記法で表された 時計のアドレスです。最後のフィールドは、時計から受け取った最後のタイム コードで、ここでは意味のある ASCII 形式にデコードされています。いくつかの 時計ドライバでは、たくさんの付加的情報が集められ、同様に表示されます。 より詳しくは、それぞれの時計の仕様情報を参照してください。

    統計ファイルは、ファイル生成セット(下記 filegen を参照)を用いて管理されます。統計を記録することで得られる情報は、 xntpd サーバの一時的なプロパティ (properties) の解析を可能にします。通常は 主要な (primary) サーバで役立つだけですが、あるいはキャンパスのメイン サーバでも役立つかもしれません。

filegen
    name [file filename] [type typename] [flag flagval] [link | nolink] [enable | disable] ファイル生成セット (file generation set) name の設定を行います。ファイル生成セットは、サーバの活動期間を通じて 継続的に大きくなっていくファイルを扱う手段を提供します。サーバ統計は このようなファイルの典型例です。ファイル生成セットにより、現状のデータ を格納するのに用いられるファイル集合にアクセスできます。任意の時点で、 集合の高々 1 つの要素への書き込みが行われます。 type は、その集合の新たな要素に、データが、いつ、どのように出力されるのか の仕様を与えます。この方法で、 xntpd の動作を妨げる危険なしに、管理的な操作 (administrational operations) から、現在使用されていないファイル集合の要素に格納されている情報が、 利用できるようになります。(最重要: それらは、新たな出力データのため 空きを作るのに削除される可能性があります。)要素のファイル名は 3 つの 部分から作られます。

    prefix
        不変なファイル名のパスです。 filegen 文による修正の対象にはなりません。サーバによって定義され、通常コンパイル時の 定数として指定されます。しかし、他のコマンドにより、個別のファイル生成 セットに対して設定は可能です。たとえば、 "loopstats" と "peerstats" という filegen で用いられるプレフィックスは、すでに説明した statsdir 文を使用して設定できます。

    filename
        この文字列は、上で述べた prefix に、( ‘/’ (スラッシュ) を入れずに ) 直接連結されます。 filegen 文の file 引数を使って修正できます。 prefix により示されるファイル名が、ファイルシステム階層の 外側を参照しないように、この部分は ".." を含んではいけないようになっています。

    suffix
        この部分はファイル集合の各要素を反映します。後述のように、ファイル集合の type に従って生成されます。

    ファイル生成セットは、その型 (type) により特徴づけられます。次の型が サポートされています:

    none
        ファイル集合は実際には、単一のプレーンファイルです。

    pid xntpd サーバの起動ごとに、ファイル集合の 1 つの要素が使われます。この型は、 実行中にファイル集合の要素への変更を一切行いませんが、異なる xntpd サーバの起動ごとに別々のファイルをつくる簡単な方法になります。要素の ファイル名は、 prefix と filename をドット (‘.’) でつなげた上、 xntpd サーバプロセスのプロセス ID の10進表現をつなげて作られます。

    day 1 日に 1 つのファイル生成セットの要素が作成されます。ここで、 日 という用語は、 に基づきます。1 日は、 UTC の 00:00 と 24:00 の間の期間として定義されます。 要素のサフィックスは、ドット (".") と << YYYYMMDD >> の形式の日付指定からなります。 YYYY は 4 桁の西暦年 (たとえば 1992)で、 MM は、2 桁の月です。 DD は、2 桁の日となります。したがって、1992 年 12 月 10 日に情報はすべて、 "<prefix><filename>.19921210" という名前のファイルに書かれます。

    week
        どの要素も 1 年の内のある週に関連するデータを含みます。ここで、 週 という用語は、 "年の始まりからの日数" の 7 の商により定義されます。この ようなファイル生成セットの要素は、ファイル集合のファイル名のベースに 次のようなサフィックスをつけることで区別されます。サフィックスは、 ドット、4 桁の西暦年、文字 "W" 、2 桁の週番号です。例えば、1992 年 1 月 10 日からの情報は、サフィックス ".1992W1" を持つファイルに出力されます。

    month
        1 月に 1 つのファイル生成セットの要素が作成されます。ファイル名の サフィックスは、ドット、4 桁の西暦年、2 桁の月からなります。

    year
        1 年に 1 つのファイル生成セットの要素が作成されます。ファイル名の サフィックスは、ドットと 4 桁の西暦年からなります。

    age この型のファイル生成セットは、サーバが 24 時間活動するごとに新たな要素に 変わります。ファイル名のサフィックスは、ドット、文字 "a" 、8 桁の数からなります。この数は、対応する 24 時間の始め からサーバが実行されている秒数であるようになります。

    情報は、ファイル生成セットが "enabled" のときのみ、そのセットに書込まれます。出力は "disabled" を指定することで抑止されます。

    ファイル生成セットの 現在の 要素に決まった名前でアクセスできると便利です。この機能は、 "link" を指定することで有効になり、 "nolink" を使って無効になります。 "link" が指定されると、 現在の要素から サフィックスを持たないファイルへのハードリンクが作成されます。その名前 を持つファイルが既に存在し、そのファイルのリンク数が 1 の場合、その ファイル名に、ドット、文字 "C" 、 xntpd サーバプロセスの pid をつなげて、名前変更を行います。リンク数が 1 以上の場合、ファイルはアンリンクされます。これにより現在のファイルを 定数名でアクセスすることができます。

その他のオプション

precision #
    このコマンドは、ローカル時計の名目上の (nominal) 精度を指定します。 この値は、秒単位のローカルの時間管理精度の底を 2 とする対数に近似的 に等しい整数です。通常、デーモンは起動時に自動的に精度を決定するの で、このコマンドは、精度を自動的に決定できない特殊な場合にのみ必要に なります。

broadcastdelay seconds
    ブロードキャストおよびマルチキャストモードは、ローカルとリモートサーバ間の ネットワーク遅延を決定するため、特別の修正を必要とします。通常、 この修正は、ローカルとリモートサーバ間の最初のプロトコル交換により、 自動的に行われます。修正手続きは、例えば、ネットワークもしくはサーバ のアクセス制御のために失敗する可能性があります。このコマンドは、これ らの状況下で使用されるデフォルトの遅延を指定します。(イーサネットに 対する)典型としては、0.003 から 0.007 秒が適切です。このコマンドが使 用されない場合のデフォルトは、0.004 秒です。

trap
    host_address [port port_number] [interface interface_addess] このコマンドは、指定されたローカルインタフェースに送られる メッセージに対する、所与のホストアドレスとポート番号でのトラップレシーバを 設定します。ポート番号が指定されない場合、 18447 が使用されます。 インタフェースアドレスが指定されない場合、メッセージが送信時に通過する ローカルインタフェースのアドレスをソースアドレスとしてメッセージが 送られます。マルチホームのホストでは、使用されるインタフェースが、 ルーティングの変更にともない変化し得ることに注意してください。

    トラップレシーバは、一般には、イベントメッセージやサーバからのその他 の情報をログファイル中に記録するものです。このようなモニタプログラム はまた、それら自身のトラップをダイナミックに要求するかもしれませんが、 トラップレシーバの設定は、サーバのスタート時にメッセージが失われない ことを保証することになっています。

setvar
    variable [default] このコマンドは、付加的なシステム変数を追加します。これらの変数は、 アクセスポリシなどの付加的な情報を配布するために使用できます。 <name>=<value> の形式の変数に、キーワード default が続いた場合、変数はデフォルトのシステム変数の一部としてリストされる ようになります ( (ntpq コマンド) 。これら付加的な変数は、情報を与える目的だけを果たします。 リストされ得ると言うこと以外に、プロトコルに関係しません。 既知のプロトコル変数は常に、 setvar の機構により定義されたいかなる変数よりも優先されます。

    同一グループのすべての変数の名前を含む 3 つの特別な変数があります。 sys_var_list は、すべてのシステム変数の名前を保持しています。 peer_var_list は、すべての更新相手 (peer) 変数の名前を保持しています。 clock_var_list は、参照時計変数の名前を保持しています。

monitor yes|no

authenticate yes|no
    これらのコマンドは、 enable と disable コマンドに置き換えられました。ここにあげたのは歴史を述べるためです。

認証キーファイルのフォーマット
NTP 標準は、受信した NTP パケットの認証の確認を可能とし、送信パケット内の 認証の指示を与えるための拡張を定めています。これは、 xntpd においては、デジタル署名, あるいは message-digest を計算するため、 DES もしくは MD5 アルゴリズムを使用して実装されています。この仕様は、 32 ビットのキー識別子により、約 40 億個のうちの 1 つが、連携 (association) の認証に使用できるようにしています。連携に含まれるサーバは、各々独立 にキーとキー識別子を学習せねばならないにも関わらず、データを認証する のに使用されるキーとキー識別子に合意せねばなりません。 DES の場合、 キーは 56 ビット長で、型によっては各バイトにパリティがつきます。MD5 の場合、キーは 64 ビット (8 バイト) です。 xntpd は、 コマンドラインオプション -k もしくは設定ファイル中の keys 文を使用して指定されるファイルからキーを読み込みます。キー番号 0 は、 NTP 標準によって (56 ビットの 0 として) 決定されており、変更できませんが、 一方、1 から 15 のキー番号の内の 1 つ以上がキーファイル中で任意に セットできます。

キーファイルは、設定ファイルと同様のコメント記述法 を使用しています。キーエントリはの形式の固定されたフォーマットを 使用します:

    keyno type key

の形式の固定されたフォーマットを使用します。ここで、 keyno は正の数、 type はキーが与えられる形式を定義する単一文字、 key はキーそれ自身です。

キーは、 type 文字による制御で、3 つの異なるフォーマットの 内の 1つで与えられます。3 つのキーの型とそれに対応するフォーマットは、 次にあげるとおりです:

S   key は、 DES のドキュメントに定められたフォーマットの 64 ビットの 16進数で、各オクテットの上位 7 ビットが使用された 56 ビット キーです。各オクテットの下位 1 ビットは、オクテットを奇数パリティに 保つように与えられます。先頭の 0 は省略できません (すなわち、キーは 正確に 16 桁の 16 進数である必要があります) 。また、奇数パリティが保 たれねばなりません。それゆえ、ゼロキーは、標準フォーマットで、 0101010101010101 として与えられます。

N   key は、 NTP 標準で定められたフォーマットの 64 ビットの 16 進数です。これは、各オクテットを 1 ビット右 rotate して、パリティビットが オクテットの上位ビットになったことを除いては、DES フォーマット と同じです。先頭の 0 は省略できず、奇数パリティが保たれねばなりません。 0 キーは、 NTP フォーマットで、 8080808080808080 のように指定されます。

A   key は 1 文字から 8 文字の ASCII 文字列です。キーは、文字列中の各文字の ASCII 表現の下位 7 ビットを使用して構成されます。56 ビット幅のキーを作るために、 Unix パスワードから暗号化キーを作るのと 同じ方法で、必要なら 0 が右端に付加されます。

M   key は 1 文字から 8 文字の ASCII 文字列で、 MD5 の認証方式 を使用しています。キーと認証方式 (DES または MD5) の両方が、同じキー 番号を共有する一組の交信相手の間で一意であることが、必要であることに 注意してください。

設定ファイルの requestkey 文の方法で、 xntpdc(8) プログラムを用いてなされる実行時の設定要求を認証するために、キーの内 1 つが選択できます。後者のプログラムは、パスワードとして端末からキー を得ます。ですから、一般に、この目的のために使用されるキーを ASCII 表現で指定するのは、適切なことです。

主要な時計サポート (PRIMARY CLOCK SUPPORT)
xntpd は、オプションで、いくつかの型の参照時計に対するサポートを含むように コンパイルできます。参照時計は、一般に (常にではなく)、カナダの NRC やアメリカの NIST により提供されるサービスと同様の標準時刻の供給源に 同期している無線時刻コード受信機です。コンピュータと時刻コード受信機 の間のインタフェースはデバイス依存で多種にわたりますが、多くは シリアルポートです。

多種類の参照時計ドライバに対するサポートは、他の場所で記述された コンパイラ定義のコードを使用して、条件コンパイルされます。参照時計を設定 しようとする試みは、特定のサポートが得られないか、ハードウェアポート が適切に設定されていないとき、システムログファイルに警告を残しますが、 そのほかでは障害となりません。

設定のために、 xntpd は、参照時計を、できるかぎり普通の NTP の交信相手にするのと同じよう な方法で扱います。参照時計は、普通の交信相手と同様にアドレスで参照さ れますが、普通の交信相手と区別するため、無効なアドレスが使用されます。 参照時計のアドレスは、 127.127.t.u の形式となります。ここで、 t は、時計の型を示す整数で、 u は、型で特定されるユニット番号を示します。参照時計は、設定ファイル中の server 文を使用して設定されます。このときの host_address は、時計のアドレスです。 key, version, ttl オプションは、参照時計サポートのためには使用されませんが、 prefer オプションは、ある参照時計を、それが望ましい場合には、他の参照時計や 交信相手より少し熱心に大事に扱わせるよう、サーバに促すのにうまく使え ます。時計のアドレスは、一般に設定ファイル中で普通 の IP アドレスが使用できるところならどこでも使用できます。例えば、 restrict 文中などですが、このような使用法は普通は奇妙に思えるでしょう。

参照時計サポートは、特別の方法で参照時計を設定するのに使用できる fudge コマンドを与えます。 以下は、このコマンドに適用される一般的なフォーマットです。

fudge 127.127.t.u [time1 secs] [time2 secs] [stratum int] [refid int] [flag1 0|1] [flag2 0|1] [flag3 0|1] [flag4 0|1]

time1 と time2 オプションは、秒単位の固定小数点で指定され、いくつかの時計ドライバで は、補正定数として使用されます。慣習により、別のやり方で示されない限り、 time1 は、特定の時計の名目上の時間オフセットを、高精度の PPS 信号のような、 外部の標準に一致させるように調整するための補正定数として使用されます。 指定されたオフセットは、内部の DIP スイッチのような他の手段により与えられた 伝搬遅延に付加されます。 stratum オプションは 0 から 15 までの数で、時計に対し非標準の operating stratum を割当てるのに使用します。 refid オプションは、 1 から 4 文字までの ASCII 文字列で、時計に対し非標準 の参照識別子を割当てるのに使用します。最後に、4つの 2 値フラグ flag1, flag2, flag3, flag4 は、時計ドライバをカスタマイズするのに使用されます。これらの値の解釈 や、ともかくそれらが用いられるのかどうかは、特定の時計ドライバが必要 とするかに関わっています。しかし、慣習により、別のやり方で示されない 限り、 flag3 は、 ppsclock ストリームモジュールを設定されるドライバにアタッチする のに使用され、一方、 flag4 は、 filegen コマンドで設定される時計統計 (clockstats) ファイルへの詳細なモニタリング データの記録を有効にするために使用されます。 ppsclock ストリーム モジュールについてのさらなる情報は、現在の xntp3 プログラムの ディストリビューション中の ./kernel ディレクトリの README ファイル内にあります。この機能についてのさらなる情報は、 同じディストリビューション中の ./scripts/stats ディレクトリにあります。

通常、参照時計の stratum は、デフォルトで 0 です。 xntpd デーモンは、各交信相手の stratum に 1 を加算するので、主要 (primary) サーバは、通常 stratum 1 を示します。巧みに運用されたバックアップを 与えるために、参照時計の stratum を 0 以上に指定することは、役に立つ ことが多いです。 stratum オプションは、この目的のために使用されます。また、参照時計と 1-pps discipline 信号の両方を含む場合、ドライバによっては、参照時計識別子 をデフォルト以外に指定することは有用です。 refid オプションは、この目的のために使用されます。そう記されていない限り、 これらのオプションは、すべての時計ドライバに適用されます。

現在、Unix マシン上の xntpd は、バックアップとして用いられる、あるいは他の時計供給源が与えられな いとき使用される特殊な仮想時計に加えて、いくつかの異なる型の時計 ハードウェアをサポートしています。たいていの時計ドライバの場合、xntp3 プログラムのディストリビューション中の ./doc ディレクトリの README ファイル内で述べられているように 1-pps 精度のタイミング信号に対する サポートが利用可能です。時計ドライバ、およびそれらを設定するのに使用される アドレスは、現在の xntp3 プログラムのディストリビューション中の doc ディレクトリの README.refclocks で記述されています。

変数
NTP プロトコルにより用いられるたいていの変数は、 xntpdc (モード 7 メッセージ) と ntpq (モード 6 メッセージ) で、調べることができます。 現在は、ごくわずかの変数が、モード 6 メッセージを通して変更可能です。 これらの変数は、 setvar の指示で作られたか、リープ警告 (leap warning) 変数かのどちらかです。 リープ警告ビットは、 leapwarning 変数で (1 ヶ月前までに) セットされます。 leapwarning と leapindication 変数内の両方が通常の leap ビット解釈と少し違ったエンコーディングを持っています:

00  デーモンは、同期源のリープビットを渡します (通常モードの動作) 。

01/10
    うるう秒 (leap second) が、付加/削除されます (オペレータによるうるう秒の強制)。

11  同期源からのリープ情報は、無視されます (それゆえ LEAP_NOWARNING が 与えられます) 。

関連ファイル
/etc/ntp.conf
    デフォルトの設定ファイル名
/etc/ntp.drift
    ドリフトファイルの慣習上の名前
/etc/ntp.keys
    キーファイルの慣習上の名前

関連項目
ntpdate(8), ntpq(8), xntpdc(8)

歴史
コマンドは University of Toronto の Dennis Ferguson によって書かれました。 テキストは University of Delaware の David Mills により修正されました。

バグ
xntpd はかなり大きくなってしまいました。巨大とは言いませんが、ワークステーションで 実行される可変プライオリティのデーモンとして望ましい大きさを 超えてしまいました。それは特に、かさばる凝った特徴の多くが、高い stratum のワークステーションよりは、高負荷の主要 (primary) サーバに あわせて設計されているからです。