25 NTPによる時刻の同期 #
NTP (network time protocol)メカニズムは、システムの時刻をネットワーク上で同期させるためのプロトコルです。最初に、マシンは信頼できる時刻を持つサーバに時刻を照会できます。次に、ネットワーク上の他のコンピュータがこのマシン自体に対し、時刻を照会できます。目的は2つあり、絶対的な時間を維持することと、ネットワーク内のすべてのマシンのシステム時刻を同期させることです。
正確なシステム時刻を維持することはさまざまな場で重要です。ハードウェア組み込み型クロックがデータベースやクラスタなどのアプリケーション要件に合致しないことがよくあります。システムタイムを手動で修正することは時に問題を発生させる可能性があります。たとえば、時間を逆廻りに戻すことで重要なアプリケーションの誤動作を誘発することもあります。ネットワーク内では、すべてのマシンのシステムタイムを同期させることが通常必要とされますが、手動での時刻調整はよい方法ではありません。NTPには、これらの問題を解決するメカニズムがあります。NTPサービスは、ネットワーク内の信頼できるタイムサーバを使用して、システム時間を継続的に調整します。さらに、電波時計のようなローカルリファレンスクロックを管理する機能があります。
25.1 YaSTでのNTPクライアントの設定 #
ntpパッケージ付属のNTPデーモン(ntpd)は、ローカルコンピュータを時間の参照に使用するように事前設定されています。ただし、ハードウェアクロックは、より正確な時間ソースが利用できない場合の予備としてのみ使用されます。YaSTを利用すれば、NTPクライアントを簡単に設定することができます。
25.1.1 基本的な設定 #
YaST NTPクライアントの設定( › )は、タブで構成されています。ntpdの起動モードと照会先のサーバは、タブで設定します。
は、
ntpdデーモンを手動で開始する場合に選択します。を選択すると、永続的に動作する
ntpdを使用せずに、定期的にシステム時間を設定します。を設定できます。システムのブート時に自動的に
ntpdを起動するには、を選択します。この設定をお勧めします。
25.1.2 基本的な設定の変更 #
タブの下部には、クライアントに対するサーバおよび時刻情報のその他の情報源が表示されます。必要に応じて、、、およびを使用してこのリストを変更します。では、クライアントのログファイルを表示できます。
時刻情報の情報源を追加するには、をクリックします。表示されるダイアログで、時刻同期に使用する情報源のタイプを選択します。次のオプションを指定できます。
- サーバ
ドロップダウンリスト(図25.1「YaST: NTPサーバ」参照)で、ローカルネットワーク上のタイムサーバ()または目的のタイムゾーンを担当するインターネット上のタイムサーバ()のどちらを使用して時刻の同期を設定するか決定します。ローカルタイムサーバを使用する場合は、をクリックして、ネットワーク上の利用可能なタイムサーバを問い合わせるSLPクエリを実行します。検索結果のリストから最適なタイムサーバを選択し、をクリックしてダイアログを閉じます。インターネット上の公開タイムサーバを使用する場合は、国(タイムゾーン)および適切なタイムサーバをのリストから選択し、をクリックしてダイアログを閉じます。メインダイアログのを使用して、選択されているサーバの可用性をテストします。では、
ntpdの追加オプションを指定できます。を使用すると、コンピュータ上で実行するデーモンによりリモートコンピュータが実行可能なアクションを制限できます。このフィールドは、タブでにチェックマークを入れた後でのみ有効になります(図25.2「高度なNTP設定:セキュリティの設定」参照)。このオプションは、
/etc/ntp.conf内のrestrict節に対応します。たとえばnomodify notrap noqueryは、サーバがコンピュータのNTP設定を変更し、NTPデーモンのトラップ機能(リモートイベントのログ記録機能)を使用することを拒否します。自身の管理下にないサーバについては(たとえばインターネット上のサーバなど)、こうした制限を適用することをお勧めします。詳細については、
/usr/share/doc/packages/ntp-doc(ntp-docパッケージの一部)を参照してください。- ピア
ピアは、対称的な関係が確立されたコンピュータで、タイムサーバとクライアントの両方の役割を果たします。サーバの代わりに、同じネットワーク内のピアを使用するには、そのピアシステムのアドレスを入力します。ダイアログのそれ以外の内容はダイアログと同じです。
- ラジオクロック
時刻同期にシステムのラジオクロックを使用するには、クロックタイプ、ユニット番号、デバイス名、およびその他のオプションをこのダイアログで指定します。ドライバを微調整するには、をクリックします。ローカルラジオクロックの動作の詳細については、
/usr/share/doc/packages/ntp-doc/refclock.htmlを参照してください。- ブロードキャストの発信
時刻情報とクエリは、ネットワーク上にブロードキャストすることができます。このダイアログでは、このブロードキャストの送信先を指定します。電波時計のような信頼できる時刻ソースがない限りブロードキャストをアクティブにしないでください。
- ブロードキャストの着信
クライアントで情報をブロードキャスト経由で受け取る場合は、どのアドレスからのパケットを受け入れるかをこのフィールドに指定します。
タブで(図25.2「高度なNTP設定:セキュリティの設定」参照)、ntpdをchroot jailで起動するかどうか指定します。デフォルトでは、は選択されていません。chroot jailオプションは、攻撃によってシステム全体が危険な状態に陥ることを防ぐので、ntpdが攻撃された場合のセキュリティを強化します。
は、リモートコンピュータがユーザのコンピュータのNTP設定を表示および変更すること、およびリモートイベントログのトラップ機能を使用することを拒否し、それによってシステムのセキュリティを向上させます。タブの時間ソースのリストで、個別のコンピュータに対するアクセス制御オプションを上書きしない限り、こうした制限は有効になるとすべてのリモートコンピュータに適用されます。他のすべてのリモートコンピュータでは、ローカルタイムのクエリのみが許可されます。
SuSEfirewall2がアクティブな場合、を有効にします(デフォルト)。ポートを閉じたままにすると、タイムサーバと接続を確立することはできません。
25.2 ネットワークでのntpの手動設定 #
ネットワーク内のタイムサーバを使用するには、serverパラメータを設定するのが最も簡単です。たとえば、タイムサーバntp.example.comがネットワークから接続可能な場合、その名前をファイル/etc/ntp.confに行として追加します。
server ntp.example.com
別のタイムサーバを追加するには、別の行にキーワードの「server」を挿入します。systemctl start ntpコマンドでntpdを初期化後、時間が安定し、ローカルコンピュータのクロックを修正するドリフトファイルが作成されるまで、約1時間かかります。ドリフトファイルを用いることで、ハードウェアクロックの定誤差はコンピュータの電源が入った時点で算出されます。修正はすぐに反映されるため、システム時刻がより安定します。
NTP機構をクライアントとして使用するには、2種類の方法があります。まず、クライアントは既知のサーバに定期的に時間を照会することができます。クライアント数が多い場合、この方法はサーバの過負荷を引き起こす可能性があります。2つ目は、ネットワークでブロードキャストを行う時刻サーバから送信されるNTPブロードキャストを、クライアントが待機する方法です。この方法には不利な面があります。サーバの精度が不明なこと、そしてサーバから送信される情報が誤っていた場合、深刻な問題が発生する可能性があることです。
ブロードキャスト経由で時刻を取得する場合、サーバ名は必要ではありません。この場合は、設定ファイル/etc/ntp.confに行broadcastclientを記述します。1つ以上の信頼された時刻サーバのみを使用するには、serversで始まる行にサーバの名前を記述します。
25.3 ランタイム時の動的時刻同期 #
ネットワークに接続せずにシステムが起動すると、ntpdは起動しますが、設定ファイルで設定されたタイムサーバのDNS名を解決できません。これは、暗号化されたWi-Fiでネットワークマネージャを使用するときに発生します。
ランタイム時にntpdでDNS名を解決するには、dynamicオプションを設定する必要があります。ネットワーク接続が起動後に確立されると、ntpdは再度名前を検索し、時刻を取得するタイムサーバに到達します。
/etc/ntp.confを手動で編集して、dynamicを1つ以上のserverエントリに追加します。
server ntp.example.com dynamic
または、YaSTを使用して、次の手順に従います。
YaSTで、 › の順にクリックします。
設定するサーバを選択します。をクリックします。
フィールドを有効にして、
dynamicを追加します。他のオプションが入力されている場合は、スペースで区切ります。をクリックして、編集ダイアログを閉じます。前の手順を繰り返して、必要に応じてすべてのサーバを変更します。
最後に、をクリックして設定を保存します。
25.4 ローカルリファレンスクロックの設定 #
ntpdソフトウェアパッケージには、ローカルリファレンスクロックに接続するためのドライバが含まれています。サポートされているクロックのリストは、ntp-docパッケージの/usr/share/doc/packages/ntp-doc/refclock.htmファイルに記載されています。各ドライバには、番号が関連付けられています。NTPでは、実際の設定は疑似IPアドレスを使用して行われます。クロックは、ネットワークに存在しているものとして/etc/ntp.confファイルに入力されます。このため、これらのクロックには127.127.T.Uという形式の特別なIPアドレスが割り当てられます。ここで、Tはクロックのタイプを示し、使用されているドライバを決定します。Uはユニットのタイプを示し、使用されているインターフェイスを決定します。
通常、各ドライバは設定をより詳細に記述する特別なパラメータを持っています。/usr/share/doc/packages/ntp-doc/driverNN.html(ここでNNはドライバの番号)ファイルは、特定のクロックタイプの情報を提供します。たとえば、「タイプ 8」クロック(シリアルインタフェース経由のラジオクロック)はクロックをさらに細かく指定する追加モードを必要とします。また、Conrad DCF77レシーバモジュールはモード 5です。このクロックを優先参照として使用するには、キーワードpreferを指定します。Conrad DCF77レシーバモジュールの完全なserver行は次のようになります。
server 127.127.8.0 mode 5 prefer
他のクロックも同じパターンで記述されます。ntp-docパッケージのインストール後は、ntpのマニュアルを/usr/share/doc/packages/ntp-docディレクトリで参照できます。ドライバパラメータについて説明するドライバページへのリンクは、ファイル/usr/share/doc/packages/ntp-doc/refclock.htmに記述されています。
25.5 ETR(External Time Reference)とのクロックの同期 #
ETR(External Time Reference)とのクロック同期のサポートを利用できます。ETRは、2**20(2の20乗)マイクロ秒ごとに、発振器信号と同期信号を送信して、すべての接続先サーバのTODクロックの同期を保ちます。
可用性のため、2ユニットのETRをコンピュータに接続できます。クロックが同期チェックの許容値を超えた場合は、すべてのCPUがマシンをチェックし、クロックが同期していないことを示します。この事態が発生した場合は、XRC対応デバイスへのすべてのDASD I/Oがクロックの再同期まで停止します。
ETRサポートは2つのsysfs属性を介して有効化されます。rootとして次のコマンドを実行します。
echo 1 > /sys/devices/system/etr/etr0/online echo 1 > /sys/devices/system/etr/etr1/online

