XNTPDC(8)

名称
xntpdc - Network Time Protocol デーモンのための問い合わせ、制御プログラム

書式
xntpdc [-ilnps] [-c command] [host ...]

解説
xntpdc は xntpd(8) デーモンの現在の状態についての問い合わせや、状態の変更を要求する際に使 われます。このプログラムは、対話的なモードでもコマンドライン引数を 使った制御でも動作させることができます。 広範囲にわたる状態や統計の情報が、 xntpdc のインタフェースを通じて提供されています。 それに加えて、 xntpd の設定ファイルを使って起動時に指定できるほとんどすべて のオプションが、 xntpdc を使って、実行時にも指定できます。

xntpdc が実行されたとき、1 つまたは複数のリクエストオプションが、 コマンドラインに含まれる場合は、それぞれのリクエストは、コマンドライン 引数で与えられるホスト、またはデフォルトである localhost の NTP サーバに送られます。 リクエストオプションが付けられなかったとき、 xntpdc はコマンドを標準入力から読み込もうとし、コマンドラインで与えられた 最初のホストで走っている NTP サーバに対してそのコマンドを実行します。 ホストが指定されなかったときは、 デフォルトである localhost のサーバに対して実行します。 xntpdc は、標準入力が端末である場合だけ、プロンプトを出します。

xntpdc は、 NTP サーバとの通信に NTP モード 7 パケットを使うため、 ネットワーク上でそれを許すような互換サーバへの問い合わせに使えます。 NTP は UDP プロトコルなので、特にネットワークトポロジー的に遠くに ある場合は、この通信はやや信頼性に欠けるということを覚えておいて下さい。 xntpdc は、リクエストを再送する試みを行ないません。適当なタイムアウト時間の 範囲内でリモートホストから返答がなかったときは、時間切れとなります。

コマンドラインオプションは以下の通りです。 -i または -n 以外のコマンドラインオプションを指定すると、指定したホスト (群) に、 指定した問い合わせ (または複数の問い合わせ) を直ちに送ることになります。 指定しなかった場合、 xntpdc は標準入力から対話的なフォーマットのコマンドを読み込もうとします。

-c  次の引数が対話的なフォーマットのコマンドとして解釈され、指定したホストで 実行されるようにコマンドのリストに加えられます。 複数の -c オプションを与えることができます。

-i  xntpdc を強制的に対話的モードで動作させます。標準出力にプロンプトが 表示され、標準入力からコマンドが読み込まれます。

-l  サーバに既知の peer のリストを取得します。このスイッチは、 "-c listpeers" と同等です。

-n  すべてのホストアドレスを、標準的なホスト名でなく、ドット区切りの 4 個 の数値で出力します。

-p  サーバに既知の peer のリストと、それらの状況の要約を出力します。 これは、 "-c peers" と同等です。

-s  サーバに既知の peer のリストと、それらの状況の要約を、 -p スイッチとは少し異なるフォーマットで出力します。 これは "-c dmpeers" と同等です。

内部コマンド
対話的なフォーマットのコマンドは、キーワードとそれに続く 0 から 4 個の 引数から構成されます。キーワード全長のうち、他と区別できる文字数が タイプされれば、有効になります。 コマンドの出力は通常標準出力に送られますが、コマンドライン上で ">" に続けてファイル名を指定することで、個々のコマンドの出力を ファイルに送ることができます。

いくつかの対話的フォーマットのコマンドは、 プログラム自身の中で全体が実行され、サーバへの NTP モード 7 リクエストは 送られません。この種類のコマンドには以下の物があります。

?   [command_keyword]? のみのコマンドは、 xntpdc が知っているすべてのコマンドキーワードのリストを出力します。? とそれに続くコマンドキーワードは、コマンドの機能と用法を 出力します。このコマンドは、 xntpdc に関して、このマニュアルよりも多分良い情報源となるでしょう。

help command_keyword
    ? コマンドと同義です。

timeout millseconds
    サーバ問い合わせに対する応答のタイムアウト時間を指定します。デフォルト は、約 8000 ミリ秒です。

delay milliseconds
    認証を求めるリクエストに含まれるタイムスタンプに加えられる時間を 指定します。これは、長い遅延のあるネットワーク経路や時刻の同期していない マシン間で (信頼できない) サーバの再設定ができるようにするために 使われます。

host hostname
    問い合わせを送るホストを指定します。 hostname は、ホスト名でも数値アドレス (ドット区切りの数値 4 つ) でもかまいません。

keyid #
    このコマンドで、認証設定リクエストに使われるキー番号を指定できます。 この番号は、この目的で使うためにサーバが設定したキー番号に一致して いなければなりません。

passwd
    このコマンドは、認証設定リクエストに使われるパスワードの入力 (エコーされません) を求めるプロンプトを出します。 このリクエストが成功するためには、 NTP サーバが認証のために使うよう 設定したキーに、パスワードが一致していなければなりません。

hostnames yes|no
    yes が指定されると、情報の表示の際、ホスト名が使用されます。 no が与えられると、代わりに数値アドレスが使用されます。 コマンドラインの -n スイッチが使われなければ、 デフォルトは yes になります。

quit
    xntpdc を終了します。

問い合わせコマンド
問い合わせコマンドは、情報を要求する NTP モード 7 パケットをサーバに送ります。 これらは、サーバの設定状態を変更できない "読み込み専用" コマンドです。

listpeers
    サーバが状態を管理する peer の簡略なリストを得て、出力します。 これには、サーバが同期する予定の候補であるとみなす階層の peer を含めた、 すべての設定された隣接 peer を含んでいるはずです。

peers
    サーバが状態を管理する peer と、その状態の要約を出力します。 状態の要約は、以下のものを含みます。すなわち、リモート peer のアドレス、 ローカルインタフェースアドレス (ローカルアドレスが決まっていないなら 0.0.0.0) 、リモート peer の階層 (階層 16 は、リモートの peer が同期していない 事を示します)、秒で表すポーリング間隔、8 進で表す到達可能性レジスタ、 peer の現在の遅れ、オフセット、バラツキの秒で表した推定値です。 更に、左端の文字は、この peer エントリが操作しているモードを 示します。 "+" は symmetric active を、 "-" は symmetric passive を表し、 "=" は、リモートサーバがクライアントモードでポーリングされていることを意味し、 "^" は、サーバがこのアドレスにブロードキャストブロードキャストしていることを示し、 "~" は、リモート peer がブロードキャストを送っていることを示し、 "*" は、サーバが現在同期している peer であることを示します。

    ホストフィールドの内容は、ホスト名、IP アドレス、パラメータと参照時刻実装名、 "REFCLK(<implementation number>, <parameter>)" の 4 つの形のうち 1 つです。 "hostnames no" の状態では、IP アドレスだけが表示されます。

dmpeers
    少々異なる peer 要約リストです。 行の左端の文字以外は peers と同じ出力になります。 文字は、時刻選択アルゴリズムの最後のステージに含まれる peer の隣にだけ 現れます。 "". は、誤りチェッカの検出でその peer が捨てられたことを、 "+" はチェッカにより同期対象として適切であると判断されたことを示します。 "*" は、サーバが現在同期している peer であることを示しています。

showpeer
    peer_address [addr2] [addr3] [addr4] 1 つ以上の peer の、現在の詳細な内容を表示します。 値については、 NTP バージョン 2 仕様に詳しく述べられています。

pstats
    peer_address [addr2] [addr3] [addr4] 指定した peer に関連する統計カウンタを peer 毎に表示します。

clockinfo
    clock_peer_address [addr2] [addr3] [addr4] peer クロックに関する情報を得て、それを表示します。得られた値は、 設定上のあいまいな要因の情報と他のクロックの性能の情報を 提供してくれます。

kerninfo
    カーネルのフェーズロックループ操作パラメータを得て、それを表示します。 この情報は、精度の高い時刻保持機能のために、カーネルが特に 修正されている場合にだけ得られます。

loopinfo [oneline|multiline]
    選択されたループフィルタ変数の値を表示します。ループフィルタとは、 ローカルシステムクロックの調節を行なう NTP の一部です。 "offset" は、パケット処理コードによってループフィルタに与えられる最後のオフセットです。 "frequency" は、 parts-per-million (ppm) で表わされるローカルクロックの周波数誤差です。 "time_const" は、フェーズロックループの "堅固さ" を制御し、その速度で発振器のゆらぎを調節します。 "watchdog timer" の値は、ループフィルタに最後のサンプルのオフセットが与えられてから経過した秒数です。 oneline と multiline オプションはこの情報が 出力されるフォーマットの指定で、 multiline がデフォルトです。

sysinfo
    システム状態変数、すなわち、ローカルサーバに関する状態の変化を表示します。 最後の 4 行以外は、皆 NTP バージョン 3 仕様である RFC 1305 で述べられています。 "system flags" は、いろいろなシステムフラグを表示し、一部は "enable" 及び "disable" 設定コマンドで、それぞれの設定やクリアができます。 "stability" は、システム周波数の修正がされた後に残る残留周波数誤差で、 保守やデバッグに使われます。 多くのアーキテクチャでは、この値は初期の 500 ppm 程度から、.01 から 0.1 ppm という低い範囲にまで減少します。 もしデーモンが起動されてからも、この値が高いままである場合は、 ローカルな時計がどこかおかしいか、カーネル変数 "tick" が間違っているかもしれません。 "broadcastdelay" は、 "broadcastdelay" 変更コマンドで設定されるデフォルトのブロードキャスト遅延時間を表示し、 "authdelay" は、 "authdelay" 変更コマンドで設定されるデフォルトの認証遅延時間を表示します。

sysstats
    プロトコルモジュールで管理される統計カウンタを表示します。

memstats
    メモリ割り当てコードに関する統計カウンタを表示します。

iostats
    入力-出力モジュールで管理される統計カウンタを表示します。

timerstats
    タイマ/イベントキューをサポートするコードで管理される統計カウンタを表示します。

reslist
    サーバの制限リストを得て、表示します。このリストは、 (通常) ソートされた順で出力され、制限がどのように適用されるかを 理解する助けになるかもしれません。

monlist [version]
    モニタ機能により収集、管理されるトラフィックカウントの値を得て、表示します。 通常、バージョン番号は指定する必要がありません。

clkbug
    clock_peer_address [addr2] [addr3] [addr4] 時刻参照ドライバのデバッグ情報を得ます。この情報は、 一部のクロックドライバでだけ提供され、 ドライバのソースのコピーが手元に無い場合、ほとんどデコードできません。

実行時設定リクエスト
サーバ内で状態を変更するようなリクエストは、すべてサーバが設定した NTP キーを使って認証されます (この機能はキーを設定しないことで、無効にもできます) 。 キー番号とそれに対応するキーも、 xntpdc が知っていなければなりません。 これは、 keyid と passwd コマンドを使えば可能で、後者では、暗号化されたキーを使うために パスワードを求めるプロンプトを端末に出します。 サーバへの認証リクエストを必要とするコマンドが最初に実行された場合でも、 自動的にキー番号とパスワードの入力を要求します。 認証は、そのような変更をする権限を持っているリクエストであるかを 検証するだけでなく、送信エラーに対するより一層の保護を行う事になります。

認証リクエストは、常にパケットデータの中に、認証コードの計算に 含まれているタイムスタンプを含んでいます。 このタイムスタンプは、サーバによって受信時刻と比較されます。この差がある小さな 値より大きければ、リクエストは拒否されます。これには二つの理由があります。 1 つは、あなたの LAN のトラフィックを盗み聞きできる誰かによるサーバへの 単純かつ繰り返しによる攻撃を困難にします。2 つ目は、ネットワーク的に 離れたホストから、あなたのサーバへ設定変更リクエストを行なうことを 困難にします。 再設定は、ローカルホストのサーバに対しては簡単で、時刻同期した 同じ LAN 上のホストでも普通に行なえますが、より離れたホストでは やりにくくなっています。 したがって、適当なパスワードを選択し、キーの配布と防護に注意を払い、 適切なソースアドレス制限が施されれば、実行時再設定の機能については 適切なセキュリティレベルにあることになります。

以下のコマンドは皆、認証リクエストです。

addpeer
    peer_address [keyid] [version#] [prefer] 与えられたアドレスを設定された隣接 peer として追加し、symmetric active モードで動作します。 既に隣接 peer として設定されている peer を指定した場合、その peer は このコマンドが実行されたときに削除 されるか、単に新しい設定に従うよう適当に変更されます。 オプションの keyid が 0 でない整数の場合、リモートサーバに 出ていくすべてのパケットは、このキーにより暗号化された 認証フィールドを持つことになります。値が 0 の場合 (または指定されなかった場合)、認証は行なわれません。 version# は、1, 2, 3 のどれかとなり、デフォルトは 3 です。 prefer キーワードは、優先する peer を示します (その結果、可能であれば時刻同期の主要元として使用されます)。 優先する peer は、 PPS 信号の信頼性も決めます。優先する peer が同期に 適している場合、PPS 信号も信頼できると判断されます。

addserver
    peer_address [keyid] [version#] [prefer] 操作モードがクライアントであること以外は、 addpeer コマンドと同等です。

broadcast
    peer_address [keyid] [version#] 操作モードがブロードキャストであること以外は、 addpeer コマンドと同等です。この場合、正当なキー識別子とキーが必要になります。 peer_address パラメータは、ローカルネットワークのブロードキャストアドレスか、または NTP に割り当てられたマルチキャストグループアドレスにできます。 マルチキャストアドレスの場合、マルチキャストに対応したカーネルが 必要になります。

unconfig
    peer_address [addr2] [addr3] [addr4] このコマンドは、指定した peer (群) から設定済みを表すビットを除去します。 多くの場合、これによって隣接 peer の設定が削除されることになります。 しかしながら、リモートの peer が未設定状態の継続を希望し、 それが適切である場合は、隣接関係は未設定モードのまま残る場合もあります。

fudge
    peer_address [time1] [time2] [stratum] [refid] このコマンドは、あるデータを参照時刻としてセットすることができます。 詳しい情報は、ソースリストを見て下さい。

enable
    auth|bclient|pll|monitor|stats [...] 各種サーバオプションを有効にします。言及されていないフラグは影響を受けません。 auth フラグは、 peer が信頼できるキーと キー識別子を使って正しく認証されたときだけ、未設定の peer にサーバを同期させます。デフォルトは無効 (オフ) です。 bclient フラグは、サーバが ブロードキャストサーバやマルチキャストサーバからのメッセージを 聞く (listen) ようにして、 自動的にそのサーバと隣接関係を設定します。 デフォルトは無効 (オフ) です。 pll フラグは、サーバがローカルクロックを修正するようにします。 デフォルトは有効 (オン) です。これが設定されていないと、ローカルクロック は内部の時間および周波数オフセットによって勝手に動作することになります。 このフラグは、ローカルクロックが他のデバイスやプロトコルにより制御されていて、 NTP は他のクライアントが同期するためだけに使われるような場合に便利です。 monitor フラグは、モニタ機能 (他を参照のこと) を可能にするもので、 デフォルトは無効 (オフ) です。 stats フラグは、統計機能ファイル出力 (他の説明を参照のこと) を可能にします。 デフォルトは有効 (オン) です。

disable
    auth|bclient|pll|monitor|stats [...] 各種サーバオプションを無効 (オフ) にします。言及されていない フラグは影響を受けません。現在有効なフラグは、 enable コマンドのところで 述べられています。

restrict
    address mask flag [flag] フラグ (群) を存在する制限リストエントリに加えるか、または指定した フラグ (群) で新しいエントリをリストにつけ加えます。 可能なフラグ引数の選択は、以下の通りとなります:

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

    noquery
        ソースからの NTP モード 7 のパケット (すなわち、情報問い合わせと設定リクエスト) をすべて無視します。 時刻サービスは影響されません。

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

    notrap
        一致するホストへの、モード 6 制御メッセージのトラップサービスを 提供しません。このトラップサービスはモード 6 制御メッセージプロトコルの サブシステムで、リモートイベントの記録を行うようなプログラムで使用される 事を意図しています。

    lowpriotrap
        一致するホストによるトラップの優先度を低くします。 サーバが管理できるトラップの数は制限されています (現在の制限は 3)。 トラップは、通常早い者勝ちベースで割り当てられ、制限に達すると以降の トラップ要求は拒否されます。このフラグは割り当てアルゴリズムを変更し、 優先度の低いトラップは後から発生した通常の優先度のトラップ要求により 無効にされるようになります。

    noserve
        モードが 7 以外の NTP パケットを無視します。要するに、問い合わせは受け 付けるが、時刻サービスは拒否することになります。

    nopeer
        問い合わせて来たホストに、状態を保存しない時刻サービスを行ないます。 しかし、たとえ将来同期先の相手として便利だとしても、 これらのホストには peer メモリのリソースを割り当てません。

    notrust
        これらのホストを同期する元としては決して使用しませんが、その他の 部分では通常に扱います。

    limited
        これらのホストは同一のネットからのクライアントの数の制限を受けます。 この文脈でいう ネットとは、ネットの IP の概念 (クラス A 、クラス B 、クラス C 等) を 指します。 サーバが認識している "client_limit" 以下のホスト数で、過去 "client_limit_period" 秒間アクティブ だったホストは受け入れられます。同じネットの他のクライアントからの リクエストは、拒否されます。時刻リクエストパケットだけが考慮されます。 "Private", "control", "broadcast" のパケットは、クライアントの制限を受けず、 したがってクライアント数にも数えられません。 クライアントの履歴は、 xntpd(8) のモニタ機能により保存されます。 したがって、モニタ機能は、 limited フラグで制限されたエントリがある限り機能します。 デフォルトの "client_limit" 値は 3 です。デフォルトの "client_limit_period" 値は 3600 秒です。現在、どちらの変数も実行時には変更できません。

    ntpport
        これは制限フラグというより、実際にはマッチアルゴリズム修飾子です。 これがあると、パケットのソースポートが標準 NTP UDP ポート (123) である場合だけ、制限エントリがマッチします。 ntpport と non-ntpport の両方が指定できます。 ntpport の方がより特別に扱われ、リスト中で後ろの方にソートされます。

unrestrict
    address mask flag [flag] address や mask の引数で指定された制限リストエントリから、指定されたフラグを除きます。

delrestrict
    address mask [ntpport] 制限リストから一致するエントリを削除します。

monitor yes|no
    モニタ機能を有効または無効にします。 monitor no に続けて monitor yes コマンドを送るのは、パケット数をリセットする良い方法です。

readkeys
    現在の認証キーのセットを一掃し、キーファイル (これは xntpd 設定ファイルの中で指定されていなければなりません) の 再読み込みを行なって新しいセットにします。 こうすることで、サーバを再スタートさせずに暗号化キーの変更ができます。

trustkey
    keyid [keyid] [keyid] [keyid] 1 つないしそれ以上のキーを、信頼キーリストに加えます。 認証が有効になっているとき、信頼性のある時刻を持つ peer は、 信頼キーを使って認証されなければなりません。

untrustkey
    keyid [keyid] [keyid] [keyid] 1 つないしそれ以上のキーを、信頼キーリストから削除します。

authinfo
    既知のキーや実行された暗号化、復号化の数を含む、認証モジュールに関する 情報を返します。

setprecision precision_value
    サーバが通知する精度を指定した値に設定します。 値は、 -4 から -20 の範囲の負の整数でなければなりません。

traps
    サーバに設定されているトラップを表示します。 詳しくはソースリストを参照して下さい。

addtrap
    address [port] [interface] 非同期メッセージのトラップをセットします。 詳しくはソースリストを参照して下さい。

clrtrap
    address [port] [interface] 非同期メッセージのトラップを解除します。 詳しくはソースリストを参照して下さい。

reset ...
    サーバのいろいろなモジュールのなかの統計カウンタをクリアします。 詳しくはソースリストを参照して下さい。

関連項目
xntpd(8)

歴史
University of Toronto の Dennis Ferguson が作成しました。

バグ
xntpdc は、未完成のハックです。表示される情報の多くは死ぬほど退屈で、実装した 人間だけに気に入られるものです。このプログラムは、新しい (一時的な) 仕様を追加し易いようデザインされており、使いやすくするには手間が かかります。それでも、このプログラムは、場合によっては有用です。