第17章 NTP を利用した時刻同期

目次

17.1. YaST を利用した NTP クライアントの設定
17.2. ネットワーク内にある NTP の手動設定
17.3. システム稼働時の動的な時刻同期
17.4. ローカル参照時計の設定

概要

NTP (Network Time Protocol; ネットワーク時刻プロトコル) は、ネットワークを 介して時刻同期を行なうためのプロトコルです。 NTP サービスでは最初に、信頼の 置ける時刻発信源であるサーバから時刻を取得します。その後、マシンは自分自身が ネットワーク内の他のコンピュータに対して、時刻を発信できるように動作します。 つまり NTP サービスには、絶対時刻の管理とネットワーク内の全マシンに 対するシステム時刻の同期、という 2 つの目的が存在することになります。

正確なシステム時刻を保つことは、様々な状況で重要な要件となります。内蔵の ハードウエア (BIOS) 時計では、データベースやクラスタなどのアプリケーションの 要件に足りていない場合がしばしばあります。かといってシステム時刻を手作業で修正 すると、たとえば時刻の巻き戻りによって、重要なアプリケーションに障害が 発生してしまったりするなど、場合によっては深刻な問題になってしまうことが あります。ネットワーク内では一般に、全てのマシンのシステム時刻を同期して おく必要がありますが、手作業による調整は悪いアプローチと言わざるを得ません。 NTP を利用すると、これらの問題を解決することができます。ネットワーク内に ある信頼している時刻発信源の情報を頼りに、システム時刻を継続的に調整します。 時刻の発信源としては、電波時計のようなローカル参照時計を利用することも できます。

17.1. YaST を利用した NTP クライアントの設定

ntp パッケージに含まれる NTP デーモン (ntpd) は、自分自身の時計を時刻発信源として 使用するように事前設定されています。しかしながら (BIOS の) 時計は、 より精度の高い時刻発信源が存在しない場合の代替手段として使用されるべき ものです。そのため、 YaST を利用して NTP クライアントの設定を行なって ください。

17.1.1. 基本設定

YaST での NTP クライアント設定 (ネットワークサービス +NTP 設定) は複数のタブから構成 されています。 一般設定 のタブで ntpd の起動モードを設定します。

図17.1 より高度な NTP クライアント設定: 一般設定

より高度な NTP クライアント設定: 一般設定

手動でのみ起動

全ての項目を手作業で設定したい場合は、 手動でのみ起動 を選択します。

デーモンを使用せずに同期する

ラップトップやその他のマシンで自動的にサスペンドするような環境の場合、 デーモンを使用せずに同期する を選択します。このモード では YaST は同期を行なうのに ntpd を開始することは 行ないません。その代わり、 YaST は crontab の項目 (/etc/cron.d/novell.ntp-synchronize) を作成し、 同期間隔 (分) の項目で指定した間隔で時刻サーバに時刻を 問い合わせるようにします。 cron について、詳しくは 11.1.2項 「cron パッケージ」 をお読みください。

今すぐ開始し、システム起動時に開始するよう設定

システムの起動時に ntpd を自動的に開始するように設定 するには、 今すぐ開始し、システム起動時に開始するよう設定 を選択します。 なお、 0.opensuse.pool.ntp.org, 1.opensuse.pool.ntp.org, 2.opensuse.pool.ntp.org, 3.opensuse.pool.ntp.org のいずれかが 事前に選択されています。

17.1.2. 基本的な設定の変更

時刻サーバなど、クライアントに設定する時刻発信源は、 一般設定 タブで表示される画面の下半分で設定を行ないます。必要に応じて、それぞれ 追加, 編集, 削除 を行なってください。 ログの表示 を押すと、お使いのクライアント におけるログファイルを閲覧することができます。

追加 ボタンを押すと、時刻の発信源を追加することができます。 まずは表示されるダイアログから、時刻同期の種類を選択します。下記のうちの いずれかを選択することができます:

図17.2 YaST: NTP サーバ

YaST: NTP サーバ

サーバ

選択 のプルダウンリスト (図17.2「YaST: NTP サーバ」 をご覧ください) から、 お使いのローカルネットワークにあるタイムサーバを利用して時刻同期を 設定することができる (ローカル NTP サーバ) ほか、 ご利用のタイムゾーンに会わせてインターネット上で公開されているタイム サーバを利用して時刻同期を設定することができます (公開 NTP サーバ) 。ローカルの時刻サーバの場合は、 検索 ボタンを押して SLP の問い合わせを送信し、利用可能なタイムサーバが存在 しないかどうかを確認することができます。検索結果から適切なタイムサーバを 選択し、 OK ボタンを押してダイアログを完了してください。 公開タイムサーバの場合は、ご利用の国 (タイムゾーン) を選んでから 公開 NTP サーバ の一覧からサーバを選択し、 OK ボタンを押してダイアログを完了してください。 メインダイアログに戻ったあと、選択したサーバとの通信が確立するかどうかを テスト ボタンで確認することができます。

次のダイアログで NTP サーバを選択することができます。 システムの起動時にサーバとクライアントの間で時刻情報を同期させたい 場合は、 このサーバを初期同期に使用する を選択して ください。 オプション では、 ntpd に対するさらなるオプションを設定することができます。

アクセス制御オプション を利用すると、お使いの コンピュータ上で動作しているデーモンに対して、遠隔のコンピュータから通信が あった場合の動作を制限することができます。この項目は、 セキュリティ設定 タブ内 (図17.3「より高度な NTP クライアント設定: セキュリティ設定」 をご覧ください) にある NTP サービスを設定したサーバに制限する にチェックを 入れた場合にのみ設定できます。このオプションは、 /etc/ntp.conf ファイル内の restrict に該当する設定です。 たとえば nomodify notrap noquery を設定すると、 そのサーバからお使いのコンピュータに対して NTP 設定の修正を禁止し、 トラップ機能 (遠隔イベントログ機能) を無効化するように設定することに なります。このような制限は、接続しようとしているサーバが外部の企業や 団体で管理されているもの (たとえばインターネット上のサーバ) である場合に 推奨される設定です。

詳しくは /usr/share/doc/packages/ntp-doc 内にある 文書 (ntp-doc パッケージ内に含まれます) を お読みください。

ピア

ピアとは対称型の同期を行なうようにするための設定で、互いに両方がサーバ兼 クライアントとして動作することになります。同じネットワーク内でサーバの 代わりにピアを利用する場合は、そのシステムのアドレスを入力してください。 残りのダイアログは サーバ の場合と同じです。

ラジオクロック

お使いのシステムで、ラジオクロックを時刻同期に利用したい場合の設定です。 それぞれクロック種類とユニット番号、デバイス名とその他のオプションを 入力してください。ドライバに対して細かい調整を加えるには、 ドライバの調整 を押してください。ローカルに接続された ラジオクロックに関する詳しい操作方法は、 /usr/share/doc/packages/ntp-doc/refclock.html をお読みください。

送信ブロードキャスト

時刻情報とその問い合わせを、ネットワーク内のブロードキャスト送信で 行なうことができます。この設定では、このようなブロードキャストを 送信する際の宛先を指定します。ラジオコントロールの時計など、信頼の おける時刻発信源をお持ちでない場合は、ブロードキャストを有効に設定 しないでください。

受信ブロードキャスト

お使いのクライアントでブロードキャストによる時刻情報受信を行ないたい 場合は、それらのパケットをどこから受信するのかを設定します。

図17.3 より高度な NTP クライアント設定: セキュリティ設定

より高度な NTP クライアント設定: セキュリティ設定

セキュリティ設定 のタブ (図17.3「より高度な NTP クライアント設定: セキュリティ設定」 をご覧ください) では、 ntpd を chroot 環境 (文書によっては chroot jail と呼ばれる場合もあります) 下で 起動するかどうかを設定することができます。既定では NTP デーモンを chroot 環境下で実行する が選択されていて、有効になっています。 この設定は ntpd に対してセキュリティ欠陥を狙う攻撃に対する防御を高める もので、たとえ攻撃が成功してもシステム全体にまで被害をもたらさないように するための仕組みです。

また、NTP サービスを設定したサーバに制限する を選択すると、遠隔のコンピュータから NTP の設定を閲覧したり修正したり、 リモートイベントログのトラップ機能を使用したりする行為を禁止し、お使いの システムに対するセキュリティを高めることができます。この選択は全ての 遠隔コンピュータに対して適用されます。ただし時刻の発信源として個別に コンピュータを設定し、 一般設定 タブでアクセス制御 オプションを設定した場合は、そちらの設定が優先されます。それ以外の 遠隔のコンピュータからは、ローカル時刻の問い合わせだけが許可されます。

さらに、 SuSEfirewall2 が動作している (既定で起動されます) 場合は、 ファイアウオールでポートを開く を選択することもできます。 ポートを閉じたままにしていると、時刻サーバに対する接続を行なうことができなく なります。

17.2. ネットワーク内にある NTP の手動設定

ネットワーク内の時刻サーバを使用するための最も簡単な方法は、サーバの パラメータを設定することです。たとえば時刻サーバに対して、 ntp.example.com という名前でネットワーク内から アクセスできる場合、下記のようにその名前を /etc/ntp.conf に記入するだけです:

server ntp.example.com

複数の時刻サーバを追加したい場合は 1 行 1 サーバで記述し、各行の行頭に キーワード server を付与してください。 rcntp start のコマンドで ntpd を 起動すると、おおよそ 1 時間程度で時刻が安定するようになり、ローカルの時刻を 調整するためのドリフトファイルと呼ばれるものが作成されます。ドリフトファイルは、 コンピュータの起動後から計算されるハードウエア時刻の変動パラメータで、 その調整データは次回以降にすぐに反映されるようになります。これにより、システム 時刻の安定性を高めることができるようになっています。

NTP の仕組みをクライアント側で使用する場合には、 2 つの方法が考えられます: 1 つめは既知のサーバに対して定期的な間隔で時刻を問い合わせる方法です。 多くのクライアントが存在する場合、このアプローチではサーバの負荷が高くなって しまいます。 2 つめはネットワーク内で時刻サーバが NTP ブロードキャストを送信 するのを待つ方法です。このアプローチの場合はサーバの品質に関する情報が不明で、 万が一サーバが誤った情報を配布してしまうと、致命的な問題になってしまいます。

時刻をブロードキャスト経由で取得する場合は、サーバ名を指定する必要はありません。 設定ファイル /etc/ntp.conf 内に broadcastclient と書いた行を追加するだけです。既知の時刻サーバを 1 つ以上設定する場合は、 servers で始まるサーバ指定を行なってください。

17.3. システム稼働時の動的な時刻同期

ネットワーク接続無しでシステムが稼働している場合、 ntpd は起動することができる ものの、設定ファイル内に設定されている時刻サーバに対して DNS の名前解決を することができなくなります。これは暗号化された無線 LAN を設定した Network Manager 環境でも発生する問題です。

稼働中に ntpd に対して DNS のホスト名解決を行なわせたい場合は、 dynamic オプションを設定しなければなりません。この場合、 起動後にネットワークの接続が確立すると、 ntpd は名前解決をやり直してタイムサーバに アクセスし、時刻を取得できるようになります。

手作業で /etc/ntp.conf ファイルを編集し、 server の項目 (1 つまたは複数) に対して dynamic 句を追加してください:

server ntp.example.com dynamic

もしくは、 YaST を利用して下記のように行なってください:

  1. YaST を起動して ネットワークサービス+NTP 設定 を選択します。

  2. 設定したいサーバを選択し、 編集 ボタンを押します。

  3. オプション の項目を選択し、 dynamic という文字列を追加します。既に何らかのオプションが書かれていた場合は、 半角スペースで区切って入力してください。

  4. 編集ダイアログを閉じるには Ok ボタンを押します。 ここまでの手順を、設定したいサーバ全てに対して繰り返します。

  5. 最後に Ok ボタンを押し、設定を保存してください。

17.4. ローカル参照時計の設定

ソフトウエアパッケージ ntp には、ローカル参照時計に接続するためのドライバが 用意されています。対応している時計の一覧は、 ntp-doc パッケージ内の /usr/share/doc/packages/ntp-doc/refclock.html ファイルに 書かれています。各ドライバには番号が振られていて、 ntp の設定ではその番号に 基づく疑似的な IP アドレスを指定します。そのため、 /etc/ntp.conf の設定ファイルからは、ネットワーク内に それらの時計が存在するかのような書式になります。疑似 IP アドレスは下記のような 形式です: 127.127.t.u ここで、 t には時計の種類と使用するドライバを、 u には使用するインターフェイスをそれぞれ数字で 指定します。

通常、それぞれのドライバにはより細かい設定を行なうための特別なパラメータが 用意されています。個別のドライバに関する詳しい情報は、 /usr/share/doc/packages/ntp-doc/drivers/driverNN.html (ここで、 NN にはドライバの番号が入ります) を お読みください。たとえば タイプ 8 の時計 (シリアルポートに 接続されたラジオ時計) であれば、時計をより細かく指定するための追加モードを 指定します。たとえば Conrad DCF77 レシーバモジュールをお使いの場合は、 mode 5 を指定します。また、この時計を優先的に参照させるには、 prefer キーワードを指定します。 Conrad DCF77 モジュール を利用するための server 設定は、下記のようになります:

server 127.127.8.0 mode 5 prefer

他の時計でも同じような指定を行ないます。 ntp-doc パッケージをインストール すると、 /usr/share/doc/packages/ntp-doc ディレクトリ内に 文書が用意されますので、そちらをお読みください。 /usr/share/doc/packages/ntp-doc/refclock.html ファイルには、 ドライバのパラメータ説明が書かれているドライバページのリンク集があります。


openSUSE リファレンス 13.1