EN JA
NTPDC(8)
NTPDC(8) FreeBSD System Manager's Manual NTPDC(8)

名称

ntpdcNTP の特別な問い合わせプログラム

書式

ntpdc [ -46ilnps][ -c command][ host][ ...]

解説

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

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

-4
コマンドライン上に続くホスト名の DNS 解決を IPv4 名前空間に強制します。
-6
コマンドライン上に続くホスト名の DNS 解決を IPv6 名前空間に強制します。
-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 ユーティリティからのリクエストがローカルサーバの状態を変更する場合は、そのリクエストが認証される必要があります。その際に、リモートプログラムとローカルサーバの両方が共通キーとキーの識別子を共有することが必要です。

ホスト名が予想されるコンテキストにおいて、ホスト名に先行する -4 修飾子は IPv4 名前空間に DNS 解決を強制し、一方 -6 修飾子は IPv6 名前空間に DNS 解決を強制することに注意してください。 -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’の値は、ループフィルタに最後のサンプルのオフセットが与えられてから経過した秒数です。 onelinemultiline オプションはこの情報が出力されるフォーマットの指定で、 multiline がデフォルトです。
sysinfo
システム状態変数、すなわち、ローカルサーバに関するさまざまな状態を表示します。最後の 4 行以外は、皆 NTP バージョン 3 仕様である RFC-1305 で述べられています。

‘system flags’は、いろいろなシステムフラグを表示し、一部は enable 及び disable 設定コマンドで、それぞれの設定やクリアができます。それらのフラグは auth, bclient, monitor, pll, pps, stats です。これらのフラグの意味については、 ntpd(8) の文書を参照して下さい。その他に kernel_pllkernel_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 にも知らせておかねばなりません。これは、 keyidpasswd コマンドを使えば可能で、後者では、暗号化キーを使うためにパスワードを求めるプロンプトを端末に出します。サーバにより認証されるリクエストを送出するコマンドが最初に与えられた時点にもまた、自動的にキー番号とパスワード両方の入力が要求されます。認証は、リクエスト送出側がそのような変更をする権限を持っているかどうかを検証するだけでなく、送信エラーに対するより一層の保護を提供することになります。

認証されるリクエストは、常にパケットデータの中にタイムスタンプを含んでいます。これは認証コードの計算に含まれます。このタイムスタンプは、サーバによって受信時刻と比較されます。この差がある小さな値より大きければ、そのリクエストは拒否されます。これには 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 [ auth | bclient | calibrate | kernel | monitor | ntp | pps | stats]
disable [ auth | bclient | calibrate | kernel | monitor | ntp | pps | stats]
これらのコマンドは ntpd(8) の設定ファイルにおける enabledisable と同じ方法で操作します。
auth
通信相手が公開キーまたは秘密キー暗号のいずれかを使用して正しく認証された場合にだけ、サーバが非設定された通信相手と同期することを有効にします。このフラグのデフォルトは有効です。
bclient
デフォルトアドレス付きの multicastclient コマンドのようにサーバがブロードキャストサーバまたはマルチキャストサーバからのメッセージを listen (接続を受け付け) することを有効にします。このフラグのデフォルトは無効です。
calibrate
参照クロックの調整機能を有効にします。このフラグのデフォルトは無効です。
kernel
利用可能であるなら、カーネル時刻制御規則 (discipline) を有効にします。このフラグのデフォルトは、サポートが利用可能であるなら有効、そうでなければ、無効です。
monitor
モニタ機能を有効にします。プログラムと monlist コマンドまたは詳細については、 ntpdc(8) を参照してください。このフラグのデフォルトは有効です。
ntp
時間と周波数の制御規則 (discipline) を有効にします。実際に、このスイッチは、テストのために役に立つ、フィードバックループをオープンしてクローズします。このフラグのためのデフォルトは、有効です。
pps
周波数と時間が精度時刻カーネル変更によって調整されるとき、 1 秒ごとのパルス (PPS) シグナルを有効にします。より詳細については ( /usr/share/doc/ntp で提供された HTML 文書の一部として利用可能な) “精度時刻保持のためのカーネルモデル”ページを参照してください。このフラグのデフォルトは無効です。
stats
統計機能を有効にします。さらなる詳細については ntp.conf(5)モニタ機能のサポート セクションを参照してください。このフラグのデフォルトは無効です。
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 ユーティリティは、未完成のハックです。表示される情報の多くは死ぬほど退屈で、実装した人間だけに気に入られるものです。このプログラムは、新しい (そして一時的な) 仕様を追加しやすいようデザインされており、使いやすくするしようとすると無茶苦茶手間がかかります。それでも、このプログラムは、場合によっては有用です。
May 17, 2006 FreeBSD