概要
NTP (Network Time Protocol; ネットワーク時刻プロトコル) は、ネットワークを 介して時刻同期を行なうためのプロトコルです。 NTP サービスでは最初に、信頼の 置ける時刻発信源であるサーバから時刻を取得します。その後、マシンは自分自身が ネットワーク内の他のコンピュータに対して、時刻を発信できるように動作します。 つまり NTP サービスには、絶対時刻の管理とネットワーク内の全マシンに 対するシステム時刻の同期、という 2 つの目的が存在することになります。
正確なシステム時刻を保つことは、様々な状況で重要な要件となります。内蔵の ハードウエア (BIOS) 時計では、データベースやクラスタなどのアプリケーションの 要件に足りていない場合がしばしばあります。かといってシステム時刻を手作業で修正 すると、たとえば時刻の巻き戻りによって、重要なアプリケーションに障害が 発生してしまったりするなど、場合によっては深刻な問題になってしまうことが あります。ネットワーク内では一般に、全てのマシンのシステム時刻を同期して おく必要がありますが、手作業による調整は悪いアプローチと言わざるを得ません。 NTP を利用すると、これらの問題を解決することができます。ネットワーク内に ある信頼している時刻発信源の情報を頼りに、システム時刻を継続的に調整します。 時刻の発信源としては、電波時計のようなローカル参照時計を利用することも できます。
ntp
パッケージに含まれる NTP デーモン
(ntpd) は、自分自身の時計を時刻発信源として
使用するように事前設定されています。しかしながら (BIOS の) 時計は、
より精度の高い時刻発信源が存在しない場合の代替手段として使用されるべき
ものです。そのため、 YaST を利用して NTP クライアントの設定を行なって
ください。
YaST での NTP クライアント設定 (ntpd の起動モードを設定します。
+ ) は複数のタブから構成 されています。 のタブで全ての項目を手作業で設定したい場合は、
を選択します。
ラップトップやその他のマシンで自動的にサスペンドするような環境の場合、
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.2「YaST: NTP サーバ」 をご覧ください) から、 お使いのローカルネットワークにあるタイムサーバを利用して時刻同期を 設定することができる ( ) ほか、 ご利用のタイムゾーンに会わせてインターネット上で公開されているタイム サーバを利用して時刻同期を設定することができます ( ) 。ローカルの時刻サーバの場合は、 ボタンを押して SLP の問い合わせを送信し、利用可能なタイムサーバが存在 しないかどうかを確認することができます。検索結果から適切なタイムサーバを 選択し、 ボタンを押してダイアログを完了してください。 公開タイムサーバの場合は、ご利用の国 (タイムゾーン) を選んでから の一覧からサーバを選択し、 ボタンを押してダイアログを完了してください。 メインダイアログに戻ったあと、選択したサーバとの通信が確立するかどうかを ボタンで確認することができます。
のプルダウンリスト (次のダイアログで NTP サーバを選択することができます。 システムの起動時にサーバとクライアントの間で時刻情報を同期させたい 場合は、 ntpd に対するさらなるオプションを設定することができます。
を選択して ください。 では、
図17.3「より高度な 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 クライアント設定: セキュリティ設定」 をご覧ください) では、 ntpd を chroot 環境 (文書によっては chroot jail と呼ばれる場合もあります) 下で 起動するかどうかを設定することができます。既定では が選択されていて、有効になっています。 この設定は ntpd に対してセキュリティ欠陥を狙う攻撃に対する防御を高める もので、たとえ攻撃が成功してもシステム全体にまで被害をもたらさないように するための仕組みです。
のタブ (また、
を選択すると、遠隔のコンピュータから NTP の設定を閲覧したり修正したり、 リモートイベントログのトラップ機能を使用したりする行為を禁止し、お使いの システムに対するセキュリティを高めることができます。この選択は全ての 遠隔コンピュータに対して適用されます。ただし時刻の発信源として個別に コンピュータを設定し、 タブでアクセス制御 オプションを設定した場合は、そちらの設定が優先されます。それ以外の 遠隔のコンピュータからは、ローカル時刻の問い合わせだけが許可されます。さらに、 SuSEfirewall2 が動作している (既定で起動されます) 場合は、
を選択することもできます。 ポートを閉じたままにしていると、時刻サーバに対する接続を行なうことができなく なります。
ネットワーク内の時刻サーバを使用するための最も簡単な方法は、サーバの
パラメータを設定することです。たとえば時刻サーバに対して、
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
で始まるサーバ指定を行なってください。
ネットワーク接続無しでシステムが稼働している場合、 ntpd は起動することができる ものの、設定ファイル内に設定されている時刻サーバに対して DNS の名前解決を することができなくなります。これは暗号化された無線 LAN を設定した Network Manager 環境でも発生する問題です。
稼働中に ntpd に対して DNS のホスト名解決を行なわせたい場合は、
dynamic
オプションを設定しなければなりません。この場合、
起動後にネットワークの接続が確立すると、 ntpd は名前解決をやり直してタイムサーバに
アクセスし、時刻を取得できるようになります。
手作業で /etc/ntp.conf
ファイルを編集し、
server
の項目 (1 つまたは複数) に対して
dynamic
句を追加してください:
server ntp.example.com dynamic
もしくは、 YaST を利用して下記のように行なってください:
YaST を起動して
+ を選択します。設定したいサーバを選択し、
ボタンを押します。
dynamic
という文字列を追加します。既に何らかのオプションが書かれていた場合は、
半角スペースで区切って入力してください。
編集ダイアログを閉じるには
ボタンを押します。 ここまでの手順を、設定したいサーバ全てに対して繰り返します。最後に
ボタンを押し、設定を保存してください。
ソフトウエアパッケージ 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/driver
(ここで、 NN
.htmlNN
にはドライバの番号が入ります) を
お読みください。たとえば 「タイプ 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
ファイルには、
ドライバのパラメータ説明が書かれているドライバページのリンク集があります。