(1/3)Windowsの時刻同期サービス解説の最終回。UNIXベースのNTPサーバと連携する方法やシステム内で独立したNTP階層を作成する方法についてまとめる。2003における時刻同期サービスについて解説しています。2008/R2を対象とした時刻同期サービスについては、以下の改訂版記事を参照してください。OSのみならず、UNIX(Linux)システムにも当然取り入れられており、本来はUNIXシステム上で運用されてきた経緯がある。Timeサービスを組み合わせて時刻同期を行わせたいシステム管理者も少なくないだろう。Timeサービス)について解説してきた。Timeサービスの間で時刻同期を行わせる方法や注意点、またシステム内で独立したNTP階層を作成する方法などについてまとめておく。筆者の手元には、いわゆる商用UNIX環境がないので、今回はRedHat系Linuxに実装されたNTPアプリケーションを利用した。実際はほかの商用UNIXを利用するケースも往々にあるだろうが、必要に応じて読み替えていただければ幸いである。業務システム内に時刻同期環境を導入する場合、組織内に基準となるNTPサーバを設置し、組織内の各コンピュータはそのNTPサーバから時刻同期を行うようにする方法はよく取られる手法である。Timeサービスを利用して設置することも不可能ではない。どちらを利用するにしても、システム要件によって2つのパターンがあるだろう。方法1——外部にネットワークが開かれており、日本標準時刻と基準NTPサーバを同期させ、そのサーバから各コンピュータが同期するこの方法の場合、外部の信頼あるNTPサーバから時刻同期を行ったコンピュータをシステム内の基準NTPサーバとして、これに対して時刻同期するよう、各コンピュータを設定すればよい。小規模なシステムであれば1つの基準NTPサーバでリソースは十分である(NTPプロトコルのパケットサイズは90bytes程度である)と考えられるが、フォールト・トレラント(耐障害性)を考える場合は、同じ設定(同じ外部参照先から同期する)のNTPサーバをもう1台加えればいいだろう。通常社内には1つの標準NTPサーバがあれば問題ないが、フォールト・トレラント構成にしたい場合は、このように設定すればいいだろう。標準となるNTPサーバは通常、より時刻が正確な外部NTPから同期を行うと考えられるため、標準NTPサーバ間での時刻同期は特段必要ないと考えられる。2台の基準NTPサーバを設置した場合、両者が保持する時刻の整合性を考慮する必要があるが、上記では両方が同じ参照先NTPサーバから時刻同期を行っているので、事実上同じ時刻を保持していると考えられる。従って、互いを同期しあうような設定は特に必要ないと筆者は考えている。Timeサービスまたはntpdの設定を「権威あるサーバ(基準時刻を自身が保持するサーバ)」として設定し、これに対して時刻同期を行うよう、各コンピュータを設定する。第1回で示したように、通常NTPサーバは(信頼に足る時刻を保持する)上位NTPサーバから時刻同期をすることで自身の整合性を保っているが、閉じたネットワークで外部NTPサーバから時刻同期を行わない場合、自身が持つローカル・クロックを標準時刻とする設定を行うことで、ほかのコンピュータが時刻同期を行うことが可能となる。こちらも通常は直接時刻同期に利用すれば問題ないが、フォールト・トレラントを考慮するのであれば、図のように設定する方法はある。台用意して、両方を同期させながら運用するといったことは実装上不可能である。そのほかの注意点は1の方法と同様だが、フォールト・トレラントを考慮して複数台の基準NTPサーバを設置する場合、この方法では両者が保持する時刻の整合性を考慮する必要があるだろう。そのためには3台の基準NTPサーバを用意し、1台を最上位NTPサーバとして「権威あるサーバ」に設定し、残りの2台を最上位NTPサーバから時刻同期を行う基準NTPサーバとして設定し、各コンピュータはこの2台のNTPサーバから時刻同期する構成とするのがよいだろう。Timeサービスを時刻同期させるうえでの、考慮すべき点について述べる。ntpdはNTPプロトコルの仕様に基づいて、ネットワーク上でほかのNTPサーバから、なるべく正確な時刻を選択同期することを念頭に置いた実装やチューニングが行われている。「ゆらぎ(分散)」という、ネットワーク上の各NTPサーバが統計学的にどの程度時刻が正確であるかを数値化する概念があるが、こういった数値を材料として、最終的に同期するNTPサーバが選択されるのがntpdである。Directory環境で最大限の機能を発揮するよう自動的にチューニングされるものと考えられ、外部の異種OS上のNTPサーバから時刻を同期するには、手動によるチューニングが別途必要な場合がある。開いたネットワーク——外部NTPサーバを参照するNTPサーバを利用する外部の標準時刻を取り込んで、その時刻をすべてのコンピュータに反映させるシステム構成を利用する場合、外部NTPサーバから時刻同期を継続的に行うNTPサーバを標準のNTPサーバとする必要がある。この場合は、まずは標準NTPサーバの役割を持たせるコンピュータが、外部のNTPサーバに時刻同期を行うように設定を行い、次にほかのコンピュータがその標準NTPサーバから時刻を同期するようにする。標準NTPサーバを設定するには、WindowsでもLinuxでも通常のNTP設定方法で外部の参照先NTPサーバを指定すればよい。Timeサービスを設定するには、NTPServerレジストリ値にて参照先サーバや同期方法を設定する。必要に応じて同期間隔なども設定すればよいだろう(詳細は第1回を参照)。Linuxのntpdを設定するには、通常は/etc/ntp.confファイルをvi(Windowsのメモ帳に相当する、基本的なテキスト・エディタ)などで編集し、ntpdプログラムを再起動させることで反映させる。/etc/ntp/keys/etc/ntp.confファイルの内容なおntp.confファイル内容の詳細な解説はここでは行わないので、必要に応じてインターネット検索などで確認してほしい。閉じたネットワーク——システム内に独自の権威あるNTPサーバを設定するインターネット環境から切り離されたシステムの場合、システム内に外部NTPサーバと同様に権威のあるNTPサーバを設定することで、標準時刻を保持するNTPサーバとして利用することができる。各NTPクライアントは、このサーバを参照先として、時刻同期を行うように設定すればよいだろう。マザーボード上のリアルタイム・クロックなど、ハードウェアベースの時計機能から取得している時刻)を標準時刻とするNTPサーバを設定することが可能となっている。Timeサービスでは、いくつかの設定を行う必要がある。Timeサービスが権威あるNTPサーバとして設定される。Timeサービスを権威あるNTPサーバにするための設定またほかの参照先NTPサーバに時刻同期は行わないため、これに関する項目は空欄とする必要がある。自分自身のIPアドレスは指定する必要はない。内容キーHKEY_LOCAL_MACHINEのSYSTEM\CurrentControlSet\Services\W32Time\Parameters値の名前NTPServer型REG_SZ値の内容(空欄)ほかのNTPサーバとの同期をしないようにするための設定また、自身のローカル・クロックについての分散の値(ゆらぎ値)を変更する必要がある。Timeサービスから、時刻同期を行うことはなかった(ntpqコマンドで明示的に同期が行われているかどうか確認した)。1のNTPサーバに直接時刻同期を行うような場合、ローカル・クロックの分散の値がごく小さい場合以外、十分に精度のある時刻と見なさず、ポーリングを行っても実質同期しないためと考えられる。Timeサービスを再起動させれば設定が反映する。再起動直後にほかのコンピュータから時刻同期を行うと同期できないことがあるが、これはNTPプロトコルの実装上、ローカル・クロックを権威ある時刻と認めるまでに若干時間を要するためなので、特に心配する必要はないだろう。上記の設定に関しては、以下の資料を参照していただきたい。1(NTP階層の最上位)とすればいいだろう。例を以下に示しておく。/etc/ntp/keys/etc/ntp.confファイルの内容この設定は上記と同様ntpdの再起動で反映されるが、再起動後すぐには事実上反映されない。これは実装上、起動後すぐに自身のローカル・クロックへの同期結果が有効とならないためなので、若干の時間が経過すれば、問題はないはずだ。(通常われわれが利用している)コンピュータのローカル・クロックは一般的に精度が悪く、数日の間に数秒の誤差が出る場合も珍しいことではない。よって上記の設定を行っても、外部NTPサーバと同程度の精度を代替するNTPサーバを配置したことにはならない、ということに注意していただきたい。お詫びして訂正させていただきます。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。