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