6    NTP

NTP (Network Time Protocol) は,ワイド・エリア・ネットワーク (WAN) およびローカル・エリア・ネットワーク (LAN) の両方のホストに,正確で信頼できる同期がとれた時間を提供します。 特に,NTP は,極めて正確度の高いクロックを元に同期をとり,不正確なクロックとは同期をとらないようにしています。 Tru64 UNIX の NTP サブシステムは,メリーランド大学がインプリメントした NTP バージョン 4.0.98a をベースにしています。

この章では,次の項目について説明しています。

NTP についての概要は, ntp_intro(7) を参照してください。 トラブルシューティング情報については,9.11 節 を参照してください。 また,NTP についての最新情報,NTP サブセットの構成方法の例,NTP に関するトラブルシューティングなどについては,NTP のWeb サイト (http://www.eecis.udel.edu/~ntp) を参照してください。

NTP の代わりに,rdate コマンドあるいは timed デーモンを使用してシステム時間を設定することもできます。

注意

timed デーモンは,互換性のためだけに用意されています。 時間の同期をとる場合は NTP を使用してください。 timed デーモンと NTP の両方を実行する場合は,最初に NTP を構成してから,-E オプションを指定して timed デーモンを実行してください。

rdate コマンドについての詳細は, rdate(8) および ntp_manual_setup(7) を参照してください。

timed デーモンについての詳細は, timed(8) および timedsetup(8) を参照してください。

6.1    NTP 環境

NTP 環境における各システムの役割は次のとおりです。

図 6-1 に示すのは,LAN における NTP 構成の例で,時間のソースとしてローカル基準クロックを使用する ホスト D が NTP サーバとなっています。 ホスト A,B,C,E,F および G は NTP クライアントで,それらの時間はホスト D と同期しています。

図 6-1:  NTP 構成の例 (ローカル・クロック)

図 6-2 に示す NTP 構成では,時間のソースとしてインターネット・タイム・サーバを使用する ホスト D が NTP サーバとなっています。 ホスト A,B,C,E,F および G は NTP クライアントで,ホスト D と時間が同期しています。

図 6-2:  NTP 構成の例 (インターネット・ソース)

6.2    NTP の準備

システムは,ローカル NTP サーバ,NTP クライアント,またはその両方として構成できます。 図 6-3 は,NTP を構成するために必要な情報を記録することのできる NTP 設定ワークシートを示しています。 本書をオンラインで読んでいる場合は,印刷機能を使用してこのワークシートを印刷することができます。 この後の項でワークシートに記録する必要のある情報について説明します。

図 6-3:  NTP 設定ワークシート

6.2.1    サーバの情報

タイム・ソース

システムの時間のソースです。 ローカル NTP サーバでは,タイム・ソースは次のいずれかです。

サーバのインターネット・アドレス

インターネット NTP サーバまたはローカル基準クロックの IP アドレスです。 ローカル NTP サーバは,NTP クライアントのタイム・ソースです。

サーバ名

インターネット NTP サーバのホスト名です。

バージョン

インターネット NTP サーバまたはローカル基準クロックで実行している NTP デーモンのバージョンです。 これは,バージョン 1 (ntpd デーモン),バージョン 2 (xntpd デーモン),またはバージョン 3 (xntpd デーモン) のいずれかです。 3.2 以前のバージョンの Tru64 UNIX オペレーティング・システムが稼働しているサーバではバージョン 2,Tru64 UNIX 4.0 以降が稼働しているサーバではバージョン 3 の xntpd デーモンが動作しています。

stratum 値

stratum 値は,システムの基準クロックの精度を表します。 この値が大きいほど,クロックの精度が低いことを意味します。

ローカル基準クロックを構成している場合は,大きめの stratum 値を指定して,クロックの時刻が正確ではないことを示すことができます。 その結果,他のシステムはこのクロックを信頼できる時刻ソースとは見なさず,使用を避けます。 NTP クライアントは,検出した中で最も小さい stratum 値を持つサーバから時刻を取り込みます。 たとえば,ローカル基準クロックに対して stratum 8 を設定している場合,stratum 2 以下のサーバが見つかると,NTP クライアントはローカル基準クロックを無視し,見つかったサーバを使用します。

Stratum フィールドには,0 〜 15 の値を指定できます。 ただし,特に理由がない限り,NTP が割り当てた省略時の値をそのまま使用してください。 ローカル基準クロックは 3,その他のクロックでは 0 が省略時の値です。

6.2.2    クライアントの情報

ローカル NTP サーバのアドレス

ローカル NTP サーバの IP アドレスです。 ローカル NTP サーバは,NTP クライアントのタイム・ソースです。

サーバ名

ローカル NTP サーバ名です。

バージョン

ローカル NTP サーバで実行している NTP デーモンのバージョンです。 これは,バージョン 1 (ntpd デーモン),バージョン 2 (xntpd デーモン),またはバージョン 3 (xntpd デーモン) のいずれかです。 Tru64 UNIX オペレーティング・システムのバージョン 3.2またはそれ以前のバージョンを実行しているサーバは,バージョン 2 (xntpd デーモン) を実行します。 Tru64 UNIX オペレーティング・システムのバージョン 4.0 以降を実行しているサーバは,バージョン 3 (xntpd デーモン) を実行します。

6.3    NTP の構成

NTP サーバと NTP クライアントの構成には,Common Desktop Environment (CDE) のアプリケーション・マネージャの SysMan Menu アプリケーションを使用します。 SysMan Menu アプリケーションを起動するには,1.2.1 項の手順に従ってください。

注意

SysMan Menu で作成できる構成よりも複雑な NTP 構成が必要な場合,/etc/ntp.conf ファイルを手動で編集しなければならないことがあります。 たとえば,NTP サーバがタイム・ソースとしてローカルまたは外部の基準クロックを使用する場合などがそうです。 ntp.conf ファイルを手動で編集した場合,その後の構成変更で SysMan Menu は使用しないでください。 SysMan Menu は ntp.conf ファイルで使用できるオプションの一部しか認識できないため,構成を上書きすることがあります。

NTP の手動構成についての詳細は, ntp_manual_setup(7)ntp.conf(4) を参照してください。

また,NTP と timed デーモンの両方を使用する場合には,timed デーモンを設定する前に,NTP を設定してください。

NTP を構成するには,次の手順を行います。

  1. SysMan Menu から [ネットワーク] --> [追加ネットワーク・サービス] --> [NTP (Network Time Protocol)] --> [NTP クライアントとしてシステムを設定] を選択して,「Ntpconfig」ダイアログ・ボックスを表示します。

    代わりに,次のコマンドをコマンド行から入力することもできます。

    # /usr/bin/sysman ntp_config
    

  2. 認証を使用可能にするかどうかを,該当するチェック・ボックスを選択して指示します。 認証を使用可能にした場合には,次のように,少なくとも 1 つの認証鍵を入力しなければなりません。 この手順は追加する鍵の数だけ繰り返します。

    1. 「Authentication キー」リストの下にある [追加] を選択し,「追加/修正」ダイアログ・ボックスを表示します。

    2. 1 つまたは複数のピアの「キー番号」および「キー」を入力します。 「キー番号」には,キーを識別する 1 〜 15 の数字のうち 1 つを入力します。 「キー」には,1 〜 8 文字の英数字によるパスワードを,スペースを使用せずに入力します。

    3. [了解] を選択して,認証鍵をリストに追加し,「追加/修正」ダイアログ・ボックスを消去します。

    構成を保存し,「Ntpconfig」ダイアログ・ボックスを閉じると,認証鍵が /etc/ntp.keys ファイルに保存されます。

  3. 「サーバ & ビア」リストの下にある [追加] を選択し,「追加/修正」ダイアログ・ボックスを表示します。

  4. NTP サーバのホスト名,モード,バージョン,およびキー番号を入力します。 NTP サーバの IP アドレスを DNS からも NIS からも取得できない場合には,『ネットワーク管理ガイド:接続編』で説明している手順に従って,システムの /etc/hosts データベースに追加しなければなりません。

    クライアントについては,サイトにローカルな NTP サーバの情報を入力します。

    サーバについては,インターネット NTP サーバまたはローカル基準クロックの情報を入力します (6.2 節 を参照)。 ローカル基準クロックを構成しており,xntpd デーモンが割り当てた省略時の stratum 値を変更する必要がある場合には, 「Fudge ファクタ」チェック・ボックスを選択し,「層」フィールドの値として 0 〜 15 のいずれかの値を選択します。

    情報は,/etc/ntp.conf ファイルに記録されます。 クライアントに対しては,このファイル内のエントリは,サーバ・エントリとして定義されています。 クライアントが時刻の同期をとることができるのは,これらのシステム内に限られるためです。 ただし,NTP サーバについては, ntp.conf ファイル内にサーバおよびピアのエントリを持つことができます。 ピア・システムは,別のシステムの時刻と同期をとったり,別のシステムの時刻をそのシステム固有の時刻に同期させたりできるためです。

  5. [了解] を選択して入力したパラメータを確認し,「追加/修正」ダイアログ・ボックスを閉じます。 他の NTP サーバを追加するには,手順 3 から 5 を繰り返します。 少なくとも 3 台の NTP サーバを指定するようにしてください。

  6. 時間差が大きい場合にこれを修正するかどうか,該当するチェック・ボックスを選択して指示します。

    このオプションは,省略時の設定では使用可能です。 このオプションを使用すると, xntpd デーモンが起動されてから,システム時刻とシステムの NTP サーバの時刻との間で 1000 秒を超える時間差が発生した場合に,xntpd デーモンが時間を修正できるようになります。 ブート時には,ntpdate コマンドが /sbin/init.d/settime スクリプトによって実行され,初期時間差を修正します。 システムが,セキュリティ上重要である場合や,サーバで使用しているクロックが安定していない場合には,このオプションを使用可能にしてはいけません。 このオプションを使用しない場合には,時間差が 1000 秒を超えると, xntpd デーモンは syslogd デーモンにメッセージを送信して終了します。

  7. 時刻をさかのぼって設定しないようにするかどうか,該当するチェック・ボックスを選択して指示します。 省略時の設定では, xntpd デーモンがシステム時刻をさかのぼって設定できるようになっています。

  8. [了解] を選択して構成を保存し,「Ntpconfig」ダイアログ・ボックスを閉じます。

  9. 新しいダイアログ・ボックスが表示され,変更が保存されたという通知が表示され,xntpd デーモンを起動するよう促されます。

  10. [はい] を選択してデーモンを起動し,変更を直ちに適用します。 あるいは,[いいえ] を選択して「Ntpconfig」ダイアログ・ボックスを閉じて,次にシステムをリブートしたときに変更が適用されるようにします。

    注意

    NTP を起動すると,システムはクロックを NTP サーバのクロックに同期させようとします。 システムで以前にスクリーン・セーバーを使用可能にしていた場合には,時間差によって,スクリーン・セーバーが起動されることがあります。 場合によっては,この時間差のために画面がブランクになることがありますが,システムに影響を与えることはありません。 マウスを動かすかキーボードのキーを 1 つ押すと,表示が再開されます。

    [はい] を選択すると,NTP デーモンが起動されたという通知が表示されます。 [了解] を選択してこのメッセージを消去し,「Ntpconfig」ダイアログ・ボックスを閉じます。

初期設定後も,NTP の構成を変更することができます。 また,必要に応じて xntpd デーモンを停止してから再起動することもできます。 詳細は,オンライン・ヘルプを参照してください。

6.4    高精度時計の使用

オペレーティング・システムには,重大なコード・パスで消費される時間など,マイクロセカンドの精度で発生するイベントのタイム・スタンプおよび計測に使用できる,オプションの高精度時計が含まれています。 プログラマは,ソース・ファイルのバグを見つけるため,あるいは性能の改善のために最適化できる場所を判断するために,この情報を参照することができます。

高精度時計を利用するためには,カーネル構成ファイルに次の行を追加してカーネルの再構築します。

options MICRO_TIME

clock_getres 関数によって返されるシステム時計 (CLOCK_REALTIME) の精度は変更されません。 しかし,clock_gettime ルーチンによって返される時間は,クロック・チケット間を推定し,マイクロセカンドの精度で返されます。 出力される時間値は SMP セーフです。

6.5    xntpd デーモンを実行しているホストのモニタリング

ntpq コマンドまたは xntpdc コマンドを使用して,xntpd デーモンを実行しているホストをモニタリングすることができます。

ntpq コマンドを使用してローカル・ホストの NTP 状態をモニタリングするには,次の構文を使用してください。

ntpq [options...]

ntpq コマンドを使用してリモート・ホストの NTP 状態をモニタリングするには,次の構文を使用してください。

ntpq [options...] host1 host2...

表 6-1に,ntpq コマンドのオプションを示します。

表 6-1:  ntpq コマンドのオプション

オプション 機能
-c subcommand subcommand を会話形式のコマンドとして解釈して,指定されたホストまたは複数のホストで実行するコマンドのリストに追加します。
-i ntpq を会話型モードで動作させます。
-p ピアのリストおよびそれらの状態の要約をプリントします。

-c オプションを使用すれば,ntpq のコマンド行でサブコマンドを指定できます。 -i オプションを使用すると,ntpq コマンドを対話モードで実行できます。 対話モードでサブコマンドの指定を終えたら,quit と入力してプログラムを終了します。

特に指定しなければ,サブコマンドはローカル・ホストに適用されます。 ただし,コマンド行や,対話モードの host サブコマンドで,ローカル・ホスト以外のホストを指定することもできます。 ntpq コマンドとそのサブコマンドについての詳細は, ntpq(8) を参照してください。

次の例に,-p オプション (または peers サブコマンド) 付きで ntpq コマンドを実行した結果の通常の出力を示します。

% ntpq -p
     remote           refid      st  when poll reach  delay  offset   disp
==========================================================================
*host2.corp.com  host121.corp.co  2    47   64  377    31.3   93.94   16.5
+host4.corp.com  host2.corp.com   3   212 1024  377    33.8   89.58   16.9
 host8.corp.com  host2.corp.com  16 never   64    0     0.0    0.00  64000
 

上記の例の最後の行は,host8 が NTP を実行していないか,または接続できないことを示しています。

xntpdc コマンドを使用してローカル・ホストの NTP 状態をモニタリングするには,次の構文を使用してください。

xntpdc [options...]

xntpdc コマンドを使用してリモート・ホストの NTP 状態をモニタリングするには,次の構文を使用してください。

xntpdc [options...] host1 host2...

注意

NTP バージョン 4 に付属している最新バージョンの xntpdc コマンドと xntpd デーモンは,旧バージョンの NTP とは互換性がありません。 最新バージョンの xntpdc コマンドで旧バージョンの xntpd デーモンの情報を収集したり,旧バージョンの xntpdc コマンドで最新バージョンの xntpd デーモンの情報を収集しようとしても,正しい結果を得ることはできません。

表 6-2に,いくつかの xntpdc コマンドのオプションを示します。

表 6-2:  xntpdc コマンドのオプション

オプション 機能
-c subcommand subcommand を会話形式のコマンドとして解釈して,指定されたホストまたは複数のホストで実行するコマンドのリストに追加します。
-i xntpdc を会話型モードで動作させます。
-l サーバに既知であるピアのリストをプリントします。
-p ピアのリストおよびそれらの状態の要約をプリントします。 出力のフォーマットは,ntpq -p コマンドの出力に似ています。

このコマンドおよびサブコマンドについての詳細は, xntpdc(8) を参照してください。

次の例に,-p オプションをつけて xntpdc コマンドを実行した結果の通常の出力を示します。

% xntpdc -p
     remote           refid      st  when poll reach  delay  offset   disp
==========================================================================
*host2.corp.com host121.corp.co   2    47   64   377   31.3   93.94   16.5
+host4.corp.com host2.corp.com    3   212 1024   377   33.8   89.58   16.9
.host5.corp.com host12.usc.edu    2   111 1024   377   39.1   46.98   17.7
 

6.6    NTP が動作しているサーバの照会

コマンド ntp および ntpdate を使用して,時間を照会できます。 ただし,ntpdate コマンドは,NTP のすべてのバージョンで動作し,より多くの機能を提供するため,ntpdate コマンドを使用することをお勧めします。