スポンサーリンク

NTPQ(8) FreeBSD システム管理者マニュアル NTPQ(8)

名称

ntpq − NTP の標準問い合わせプログラム

書式

ntpq [−inp] [−c command] [host ...]

解説

ntpq ユーティリティは、推奨されている NTP モード 6 制御メッセージフォー マットを実装する NTP サーバに、現在の状態について問い合わせを行なったり、 状態の変更を要求するために使います。このプログラムは、対話的モードでもコ マンドライン引数を使った制御でも動作させることができます。任意の変数を読 み書きするリクエストを組み立てることができ、生のまま、または綺麗に整形し て出力するオプションがあります。 ntpq ユーティリティは、サーバに複数の問 い合わせを送ることで通信相手 (peer) のリストを得て、共通なフォーマットで 出力することができます。

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

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

例と使用法については、 "NTP デバッグ技術" のページを参照してください ( /usr/share/doc/ntp に提供される HTML 文書の一部が利用可能です)。

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

       −c command

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

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

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

−p
サーバに既知な通信相手のリストと、それらの状態の概要を出力しま す。これは、対話コマンド peers と同等です。

−i または −n 以外のコマンド行オプションを指定することにより、指定されたホ ストに指定された問い合わせ (群) が直ちに送信されます。それ以外の場合、 ntpq は標準入力から対話的フォーマットコマンドを読み込もうとします。

内部コマンド
対話的なフォーマットのコマンドは、キーワードとそれに続く 0 から 4 個の引 数から構成されます。キーワード全長のうち、他と区別できる文字数がタイプさ れれば、有効になります。コマンドの出力は通常標準出力に送られますが、コマ ンドライン上で ‘>’ に続けてファイル名を指定することで、個々のコマンドの出 力をファイルに送ることができます。いくつかの対話的フォーマットのコマンド は、 ntpq ユーティリティ自身の中で全体が実行され、サーバへの NTP モード 6 リクエストは送られません。この種類のコマンドには以下のものがあります。

? [command_keyword]

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

addvars variable_name[=value ...]

rmvars variable_name ...

clearvars
NTP モード 6 メッセージが運ぶデータは、次の形の項目のリストから成 ります。 ‘variable_name=value’ ここで、サーバの変数を読み取るリク エストでは、この ‘=value’ は無視されるので、省略することができま す。 ntpq ユーティリティは、制御メッセージに含まれるデータを組み 立てるための内部リストを保持しており、以下に述べる readlistwritelist コマンドを使って送ります。 addvars コマンドで、このリス トに、変数と省略可能な値を追加することができます。 1 つより多くの 変数を追加するときには、リストはコンマで区切り、空白を含んではい けません。 rmvars コマンドは、個々の変数をリストから削除するため に用い、 clearlist コマンドは、リストからすべての変数を削除しま す。

authenticate yes | no
通常、 ntpq は、書き込みリクエストでない限りリクエストを認証しま せん。コマンド ‘authenticate yes’ は、 ntpq が生成するすべてのリ クエストに認証をつけて送るようにします。認証されたリクエストの扱 いはサーバによって少し異なります。もしも 通信相手の表示を行う前に 認証をオンにすると、 fuzzball の CPU を溶かしてしまうことがあるか もしれません。

cooked
問い合わせコマンドからの出力を、「加工済み (cooked)」形式にしま す。その結果、 ntpq が認識した変数については、人間に使える形に再 整形されます。 ntpq が、その変数は本来デコードできる値を持ってい ると判断したのに、デコードされていないものには、その後に ‘?’ が付 けられます。

debug more | less | off
内部の問い合わせプログラムのデバッグをオンまたはオフにします。

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

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

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

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

ntpversion 1 | 2 | 3 | 4
ntpq
がパケットの中で自称する NTP のバージョン番号をセットしま す。デフォルトでは 3 になります。モード 6 制御メッセージ (詳しく 言うとモードも) は、 NTP バージョン 1 には存在しなかったことに注 意してください。バージョン 1 を必要とするサーバは残っていないよう ですが。

quit
ntpq
を終了します。

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

raw
問い合わせコマンドに対するすべての出力を、リモートサーバから受け 取った通りに出力します。データに対して行なわれる唯一の整形と解釈 は、印字可能 (しかしめったに理解できない) 形式になるように、ASCII 文字でないデータを変換することだけです。

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

制御メッセージコマンド
ある NTP サーバが知っている各通信相手には、アソシエーション識別子 (association identifier) という 16 ビット整数が割り当てられています。通信 相手変数 (peer variable) を使う NTP 制御メッセージは、アソシエーション識 別子を含めることによって、その値が対応する通信相手を識別しなければなりま せん。 0 というアソシエーション識別子は特別で、その変数がシステム変数であ ることを表します。システム変数の名前は、独立した名前空間から取りだされま す。

制御メッセージコマンドは、サーバに 1 つ以上の NTP モード 6 メッセージを送 り、戻ってきたデータを何らかの書式で出力します。現在実装されているほとん どのコマンドは、 1 つのメッセージを送って、1 つの応答を受け取ります。今の ところ例外は、必要なデータを得るためにあらかじめプログラムされた一連の メッセージを送る peers コマンドと、ある範囲のアソシエーションそれぞれに対 し処理を繰り返す mreadlist と mreadvar コマンドです。

associations
問い合わせ対象のサーバの規格内 (in-spec) の通信相手についての、ア ソシエーション識別子と通信相手の状態の一覧を得て出力します。一覧 は複数の欄から成っています。最初の欄は、内部使用のために 1 から 振ったアソシエーションの索引番号 (index)、 2 番目はサーバから返っ て来た実際のアソシエーション識別子、 3 番目は通信相手の状態ワード です。その後に、状態ワードをデコードしたデータを含む欄がいくつか 続きます。 ‘condition’ フィールドのデコードについては、 peers コ マンドを参照してください。 associations コマンドによって返された データは ntpq の内部でキャッシュされるということに注意してくださ い。このため、索引番号は、人間にはほとんど打ち込むことができない アソシエーション識別子を使う愚かなサーバを相手にするときに役立ち ます。すなわち、それ以降の任意のコマンドが引数としてアソシエー ション識別子を必要とするときに、代わりに索引番号の形式を使うこと ができます。

clockvar [assocID] [
variable_name
[=value ...]] ...

cv [assocID] [
variable_name
[=value ...]] ...
サーバの時計変数 (clock variable) の一覧を送るように要求します。 ラジオ時計や他の外部同期機構を持っているサーバは、このコマンドに 肯定的に応答します。アソシエーション識別子が省略されるか 0 だと、 リクエストは ‘システム時計’ の変数に対するものとなり、一般に、時 計を持つすべてのサーバから肯定的な応答が得られるでしょう。サーバ が時計を擬似的な通信相手として扱い、結果として一度に 2 つ以上の時 計を接続することができるようになっていれば、適切な通信相手のアソ シエーション識別子を参照すれば特定の時計の変数が表示されます。変 数のリストを省略すると、サーバはデフォルトの変数の表示を返すこと になります。

lassociations
サーバが状態を保持しているすべてのアソシエーションについて、アソ シエーション識別子と通信相手の状態の一覧を得て、出力します。この コマンドと associations コマンドは、規格外 (out-of-spec) のクライ アントのアソシエーションの状態を保持するサーバ (つまり fuzzball) の場合にだけ異なります。 associations コマンドが使われたとき、通 常そういうアソシエーションは表示から省略されますが、 lassociations の出力には含まれます。

lpassociations
規格外 (out-of-spec) のクライアントとのアソシエーションを含む全て のアソシエーションに関するデータを、内部にキャッシュされたアソシ エーションの一覧から出力します。このコマンドは、fuzzball を扱う場 合だけ、 passociations と異なります。

lpeers
peers
と似ていますが、サーバが状態を保持しているすべてのアソシ エーションの概要を出力します。これは fuzzball サーバの、より長い 通信相手のリストを生成することがあります。

mreadlist assocID assocID

mrl assocID assocID
readlist
コマンドと似ていますが、問い合わせを (0 でない) アソシ エーション識別子の範囲のそれぞれに行ないます。ここで言う範囲は、 直前に実行された associations コマンドでキャッシュされたアソシ エーションの一覧から決められます。

mreadvar assocID assocID [
variable_name
[=value ...]]

mrv assocID assocID [
variable_name
[=value ...]]
readvar
コマンドと似ていますが、問い合わせを (0でない) アソシエー ション識別子の範囲のそれぞれに行ないます。ここで言う範囲は、直前 に実行された associations コマンドでキャッシュされたアソシエー ションの一覧から決められます。

opeers
古い形式の peers コマンドで、参照 ID の代わりにローカルのインタ フェースアドレスを使用します。

passociations
内部でキャッシュされたアソシエーションの一覧から、規格内 (in-spec) の通信相手に関するアソシエーションのデータを出力しま す。このコマンドは、新しい問い合わせをするのではなく内部に蓄えら れたデータを表示するということを除けば、 associations と同じに働 きます。

peers
サーバの現在の通信相手の一覧を、各通信相手の状態の概要と共に得ま す。概要の情報には、リモートの通信相手のアドレス、参照 ID (不明の ときは 0.0.0.0)、リモートの通信相手の階層 (stratum)、通信相手の種 類 (ローカル、ユニキャスト、マルチキャスト、ブロードキャストのい ずれか)、最後のパケットを受信した時間、秒単位のポーリング間隔、 8 進数表記の到達可能性レジスタ、そして、その通信相手の現在の遅れ、 オフセット、ばらつきをミリ秒単位で表した推定値を含んでいます。左 端の文字は、時計選択処理におけるこの通信相手の運命を示します。以 下はこれらの文字のリストと、 rv コマンドで使用される片言の英語、 および状態を示す短い説明文です。

空白
(reject) 通信相手は到達できないか、このサーバに同期してい るか (同期ループ)、あるいは無茶な同期距離のために捨てられ ました。

x
(falsetick) 通信相手は交差アルゴリズムにより偽時計として 捨てられました。

.
(excess) 通信相手は同期距離によって並べ換えられたなかで、 最初の 10 個に入らなかったため捨てられました。このためこ れ以上検討するには不十分な候補です。

-
(outlyer) 通信相手はクラスタリングアルゴリズムにより遠く にあるものとして捨てられました。

+
(candidate) 通信相手は生き残り、結合アルゴリズムへの候補 となりました。

#
(selected) 通信相手は生き残りましたが、同期距離によって並 べ換えられたなかで最初の 6 個に入りませんでした。アソシ エーションが短命だった場合、リソースを節約するために解散 させられるかもしれません。

*
(peer) 通信相手はシステム通信相手として宣言されており、そ の変数をシステム変数に与えています。

o
((pps.peer)) 通信相手はシステム通信相手として宣言されてお り、その変数をシステム変数に与えています。しかし、システ ムの実際の同期は 1 秒ごとのパルス (PPS) 参照クロックドラ イバより間接的に、あるいはカーネルインタフェースより直 接、 PPS 信号で得ています。

flash 変数はデバッグを支援する貴重なものです。 NTP 仕様 RFC-1305 と NTP Version 4 で追加された仕様が定義する本来の正常性チェックの結果を表示しま す。 TEST1 から TEST11 まで 11 個のテストが定義されています。偶然の誤りか らも故意の誤りからも自分を守りながら、診断情報が最大限得られるある順序 で、テストは実行されます。 flash 変数は最初に 0 に初期化されます。テスト のセット 1 つを終えたあと、 1 つまたは複数のビットが設定されると、そのパ ケットを破棄します。

テスト TEST4TEST5 はアクセス権限と暗号化メッセージダイジェストを チェックします。このテストのあとどれかのビットが設定されると、そのパケッ トを破棄します。テスト TEST10TEST11ntp.conf(5) のセクション 認証 オプションで説明されている、 Autokey 公開鍵暗号化を使った認証確認状態を チェックします。どれかのビットが設定され、アソシエーションが事前に到達可 能との印が付けられていると、そのパケットを破棄します。それ以外の場合、 NTP プロトコルが要求する通り、送信元のタイムスタンプと受信側のタイムスタ ンプを保存し、処理を続けます。

テスト TEST1 から TEST3 までは、オフセットと遅延を計算するパケットのタイ ムスタンプをチェックします。どれかのビットが設定されると、そのパケットを 破棄します。それ以外の場合、パケットヘッダ変数を保存します。テスト TEST6 から TEST8 までは、サーバの健全性をチェックします。どれかのビットがセット されると、そのパケットを破棄します。それ以外の場合、サーバに対するオフ セットと遅延を計算し、保存します。テスト TEST9 は、アソシエーションそのも のの健全性をチェックします。どれかのビットが設定されると、そのパケットを 破棄します。それ以外の場合、保存されている変数を時計フィルタと緩和アルゴ リズムに回します。

各テストに対する flash のビットは、最下位ビットから昇順で次のように定義さ れます。

TEST1
パケットが重複しています。このパケットは、ひいき目で見ても偶然の 再送によるものですし、最悪の場合は、悪意を持って再送信されたもの です。

TEST2
間違ったパケットです。以前に送ったメッセージに対する返答ではあり ません。 NTP デーモンが再起動されていて、通信相手以外の誰かが気付 く前だったときに起こります。

TEST3
同期していません。 1 つ以上のタイムスタンプ・フィールドが不正で す。通常、通信相手からの最初のパケットを受信したときに起こりま す。

TEST4
アクセスが拒否されました。 "アクセス制御" のページを参照してくだ さい。

TEST5
暗号化認証に失敗しました。 ntp.conf(5) マニュアルページの 認証機 能オプション節を参照してください。

TEST6
サーバが同期していません。サーバの時計のネジを先に巻いてくださ い。

TEST7
サーバの階層が最大で 15 より大きいです。サーバはおそらく同期して おらず、サーバの時計のネジを巻く必要があるでしょう。

TEST8
root の遅延または root のばらつきが 1 秒よりも長いです。通信相手 が火星と同期していない限り、こういうことが起きそうにはないのです が。

TEST9
通信相手の遅延または通信相手のばらつきが 1 秒よりも長いです。通信 相手が火星上にでもない限り、こういうことが起きそうにはないのです が。

TEST10
autokey プロトコルが認証失敗を検出しました。 ntp.conf(5) マニュア ルページの 認証オプション節を参照してください。

TEST11
サーバまたは通信相手の認証が大丈夫か、正当な公開鍵証明書を保持し ているかを、 autokey プロトコルが確認していません。 ntp.conf(5) マニュアルページの 認証オプション節を参照してください。

NTP バージョン 4 の Autokey サポートで使用されるシステム変数の追加は以下 のものが含まれます。

certificate filestamp
証明ファイルが生成された時の NTP 秒を示します。

hostname host
Unix の gethostname(3) ライブラリ関数が返すホスト名を示します。

flags hex
現在のフラグビットを示します。ここで hex ビットは次に示すように解 釈されます。

0x01
autokey が有効です。

0x02
RSA 公開鍵/暗号鍵ファイルが存在します。

0x04
PKI 確認ファイルが存在します。

0x08
Deffie-Hellman のパラメータファイルが存在します。

0x10
NIST 閏秒表ファイルが存在します。

leapseconds filestamp
NIST 閏秒表ファイルが作成されたときの NTP 秒を表示します。

params filestamp
Diffie-Hellman の協定パラメータファイルが生成されたときの NTP 秒 を表示します。

publickey filestamp
RSA 公開鍵/秘密鍵ファイルが生成されたときの NTP 秒を表示します。

refresh filestamp
公開暗号値が更新、署名されたときの NTP 秒を表示します。

tay offset
NIST 閏秒表を入手したときの TAI-UTC オフセットを秒単位で表示しま す。

さらに、NTP バージョン 4 Autokey サポートで使用される通信相手変数の追加に は以下のものが含まれます。

certificate filestamp
認証証明ファイルが生成されたときのNTP 秒を表示します。

flags hex
現在のフラグビットを表示します。ここで、 hex ビットは同名のシステ ム変数と同様に解釈します。これらのビットはサーバから受信した最初 の autokey メッセージの中に設定され、次いで、サーバからそれに関連 したデータを受信、格納した際にリセットされます。

hcookie hex
鍵協定アルゴリズムで用いられるホストクッキーを表示します。

initkey key
autokey プロトコルの鍵リスト生成器により使用される鍵の初期値を表 示します。

initsequence index
autokey プロトコルの鍵リスト生成器により使用されるインデックスの 初期値を表示します。

pcookie hex
鍵リスト生成器により使用される通信相手のクッキーを指定します。

timestamp time
最新の autokey 鍵リストが生成され署名されたときの NTP 秒を表示し ます。

pstatus assocID
与えられたアソシエーションに対応するサーバに対し、状態読み取りリ クエストを送ります。返された通信相手変数の名前と値を出力します。 変数の前に、ヘッダから得た状態ワードが 16 進数と片言の英語で表示 されることに注意してください。

readlist assocID

rl assocID
内部変数リストの中の変数の値を返すようにサーバに要求します。アソ シエーション識別子が省略されるか 0 の場合、変数はシステム変数であ るとみなされます。そうでなければ、 通信相手変数として扱われます。 内部変数リストが空の場合は、リクエストはデータ無しで送られ、リ モートサーバはデフォルトの表示を返します。

readvar assocID variable_name[=value] ...

rv assocID variable_name[=value] ...
変数読み取りリクエストを送ることで、指定した変数の値を返すように サーバに要求します。アソシエーション識別子を省略するか 0 を指定し た場合、変数はシステム変数です。そうでなければ通信相手変数であ り、返される値は対応する通信相手のものとなります。変数のリストを 省略すると、データ無しのリクエストを送り、サーバはデフォルトの表 示を返します。

writevar assocID variable_name[=value] ...
readvar リクエストと似ていますが、指定した変数を読み取る代わりに 書き込みます。

writelist [assocID]
readlist リクエストと似ていますが、内部のリストの変数を読み取る代 わりに書き込みます。

関連項目

ntp.conf(5), ntpd(8), ntpdc(8)

バグ

peers コマンドは不可分 (atomic) ではないため、不正なアソシエーションとい う誤ったエラーメッセージが発生しコマンドが終了することがあります。時間切 れまでの時間は固定された定数です。これは、ある種の最悪の場合を考えてある ため、時間切れになるまで長時間待たされることになります。このプログラム は、特定のホストへ何回も問い合わせを送る間に制限時間の見積もりを改善すべ きですが、実際には行なっていません。

FreeBSD 10.0 January 7, 2000 FreeBSD 10.0

スポンサーリンク