NTPDC(8)

名称
ntpdc - NTP の特別な問い合わせプログラム

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

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

以下のオプションが使用可能です:

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

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

-l  サーバ (群) が知っている通信相手 (peer) のリストを取得します。 このスイッチは、 ‘-c listpeers’ と同等です。

-n  すべてのホストアドレスを、ドットで 4 つの部分に区切られた数値の形式で出力し、 正規のホスト名に変換しません。

-p  サーバが知っている通信相手のリストと、それらの状態の概要を出力します。 これは、 ‘-c peers’ と同等です。

-s  サーバが知っている通信相手のリストと、それらの状態の概要を、 -p スイッチとは少し異なるフォーマットで出力します。 これは ‘-c dmpeers’ と同等です。

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

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

ntpdc の動作は ntpd(8) の特定の実装に特化しており、このデーモンまたは、古いバージョンのものの いくつかに対してしか動かないでしょう。 リモートの ntpdc プログラムからのリクエストがローカルサーバの状態を変更する場合は、 そのリクエストが認証される必要があります。その際に、 リモートプログラムとローカルサーバの両方が共通鍵と鍵の識別子を共有する ことが必要です。 -i または -n 以外のコマンドラインオプションを指定すると、指定したホスト (群) に、 指定した問い合わせ (または複数の問い合わせ) を直ちに送ることになります。 指定しなかった場合、 ntpdc は標準入力から対話的なフォーマットのコマンドを読み込もうとします。

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

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

? command_keyword

help command_keyword
    単独の? は、 ntpdc が知っているすべてのコマンドキーワードのリストを出力します。? の後にコマンドキーワードが続くときは、コマンドの機能と用法を出力します。この コマンドは、 ntpq(8) に関して、多分このマニュアルよりも良い情報源となるでしょう。

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

host hostname
    今後問い合わせを送るホストを指定します。 ホスト名 は、ホストの名前でも数値アドレスでもかまいません。

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

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

quit
    ntpdc を終了します。

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

timeout milliseconds
    サーバへの問い合わせに対する応答の制限時間を指定します。デフォルト は、約 8000 ミリ秒です。 ntpdc はそれぞれの問い合わせに対して時間切れを待ったあと再試行するため、 合計の待ち時間は設定された制限時間の値の 2 倍になることに注意してください。

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

listpeers
    サーバが状態を管理する通信相手の簡略なリストを得て、出力します。 これには、サーバが今後同期する可能性のある候補であるとみなす階層の 通信相手とのアソシエーションを含め、 設定された通信相手とのアソシエーションのすべてを含んでいるはずです。

peers
    サーバが状態を管理する通信相手と、その状態の概要を出力します。 状態の概要は、以下のものを含みます。すなわち、リモートの通信相手のアドレス、 ローカルインタフェースアドレス (ローカルアドレスが決まっていないなら 0.0.0.0)、リモートの通信相手の階層 (階層 16 は、リモートの通信相手が同期し ていない事を示します)、秒で表すポーリング間隔、8 進で表す到達可能性レジスタ、 通信相手の遅れ、オフセット、ばらつきを秒で表した現在の推定値です。

    左端の文字は、この通信相手エントリが操作しているモードを 示します。 ‘+’ は対称的アクティブを、 ‘-’ は対称的パッシブを表し、 ‘=’ は、リモートサーバがクライアントモードでポーリングされていることを意味し、 ‘^’ は、サーバがこのアドレスにブロードキャストしていることを示し、 ‘~’ は、リモートの通信相手がブロードキャストを送っていることを示し、 ‘*’ は、サーバが現在同期している通信相手であることを示します。

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

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

showpeer peer_address ...
    1 つ以上の通信相手に対して、現在の通信相手の変数に関する詳細な内容を 表示します。 ほとんどの値に関しては、NTP バージョン 2 仕様書に詳しく述べられています。

pstats peer_address ...
    指定した通信相手に関連する統計カウンタを通信相手毎に表示します。

clockinfo clock_peer_address ...
    通信相手の時計に関する情報を得て、それを表示します。得られた値は、 設定上のあいまいな要因の情報と他の時計性能の情報を 提供してくれます。

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

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

sysinfo
    システム状態変数、すなわち、ローカルサーバに関するさまざまな状態を 表示します。 最後の 4 行以外は、皆 NTP バージョン 3 仕様である RFC-1305 で 述べられています。

    ‘system flags’ は、いろいろなシステムフラグを表示し、一部は enable 及び disable 設定コマンドで、それぞれの設定やクリアができます。 それらのフラグは auth, bclient, monitor, pll, pps, stats です。 これらのフラグの意味については、 ntpd(8) の文書を参照して下さい。 その他に kernel_pll と kernel_pps という 読み込み専用のフラグが 2 つあります。 カーネルに高精度な時刻保持のための変更がなされている時に、 これらのフラグは同期状態を示します。 ‘kernel_pll’ は kernel がローカル時計を学習されていることを示し、 ‘kernel_pps’ は PPS 信号により kernel が学習していることを 示します。

    ‘stability’ は、システム周波数の修正がされた後に残る残留周波数誤差で、 保守やデバッグに使われます。 多くのアーキテクチャでは、この値は初期の 500 ppm 程度から、.01 から 0.1 ppm という低い範囲にまで減少します。 もしデーモンが起動後しばらくしてもこの値が高いままである場合は、 ローカルな時計がどこかおかしいか、カーネル変数 kern.clockrate.tick が正しくないかもしれません。

    ‘broadcastdelay’ は、 ‘broadcastdelay’ 設定コマンドで設定されるデフォルトのブロードキャスト遅延時間を 表示します。

    ‘authdelay’ は、 authdelay 設定コマンドで設定されるデフォルトの認証遅延時間を表示します。

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

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

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

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

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

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

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

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

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

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

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

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

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

unconfig peer_address ...
    このコマンドは、指定した通信相手 (群) から設定済みを表すビットを除去します。 多くの場合、これによってその通信相手とのアソシエーションが 削除されることになります。 しかしながら、リモートの通信相手が未設定状態の継続を希望し、 それが適切である場合は、アソシエーションは未設定モードのまま 残る場合もあります。

fudge peer_address
    [time1] [time2] [stratum] [refid] このコマンドは、あるデータを参照クロックとしてセットできるようにします。 詳細な情報は、ソースリストを参照してください。

enable flag ...

disable flag ...
    これらのコマンドは ntpd(8) の設定ファイルにおける enable や disable と同じ方法で操作します。 以下はフラグの説明です。 auth, bclient, monitor, pll, pps, stats フラグのみが ntpdc で設定でき、 pll_kernel, pps_kernel フラグは読み込み専用であることに 注意してください。

    auth
        通信相手が信頼できる鍵と 鍵の識別子を使って正しく認証されたときだけ、未設定の 通信相手にサーバを同期させるようにします。 デフォルトでは有効になっています。

    bclient
        デフォルトアドレス付きの mutlicastclient コマンドの場合と同様に、 ブロードキャストサーバやマルチキャストサーバからのメッセージを 聞く (listen) ようにします。 デフォルトでは無効になっています。

    monitor
        モニタ機能を有効にします。詳細な情報については、 monlist コマンドを参照して下さい。 デフォルトでは有効になっています。

    pll サーバが NTP を使ってローカル時計を合わせるようにします。 無効の場合は、ローカル時計は 内部の時間および周波数オフセットによって勝手に動作することになります。 このフラグは、ローカル時計が他のデバイスやプロトコルにより制御されていて、 NTP は他のクライアントが同期するためだけに使われるような場合に便利です。 この場合、ローカル時計ドライバが使用されます。 より詳細な情報は "参照クロックドライバ" のページを参照してください (より詳細な情報については、 /usr/share/doc/ntp ページにある HTML 文書の一部が利用可能です)。 デフォルトでは有効になっています。

    pps 高精度な時刻保持のための変更がなされたカーネルにより、 周波数と時刻が学習されている場合に、 1 秒ごとのパルス信号 (PPS) を有効にします。 より詳細な情報は "高精度な時刻保持のためのカーネルモデル" のページを参照してください。 デフォルトでは無効になっています。

    stats
        統計機能を有効にします。 より詳細な情報は ntp.conf(5) マニュアルページの 監視機能のサポート 節を参照してください。 デフォルトでは有効になっています。

    pll_kernel
        高精度な時刻保持のための変更がカーネルになされている場合、 カーネルが時計の学習を制御していることを示します。 そうでない場合はデーモンが時計の学習を制御しています。

    pps_kernel
        高精度な時刻保持のための変更がカーネルになされており、 また1 秒ごとのパルス信号 (PPS) が存在している場合、 PPS 信号が時計の学習を制御していることを示します。 そうでない場合は pll_kernel フラグの示すとおり、 デーモンまたはカーネルが時計の学習を制御しています。

restrict address mask
    flag ... このコマンドは ntpd(8) の restrict 設定ファイルコマンドと同様に動作します。

unrestrict address mask
    flag ... 制限リストにおいて、マッチしたエントリの制限を解除します。

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

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

trustedkey keyid ...

untrustedkey keyid ...
    これらのコマンドは ntpd(8) の trustedkey 設定ファイルコマンドや untrustedkey 設定ファイルコマンドと同様に動作します。

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

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

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

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

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

関連項目
ntp.conf(5), ntpd(8) David L. Mills, Network Time Protocol (Version 3), RFC1305.

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