第1回 Windows OSにおける時刻同期サービスとNTP:Windowsネットワーク時刻同期の基礎とノウハウ(4/4 ページ)
AD環境におけるKerberos認証だけでなく、複数のコンピュータに渡る障害ログ分析を容易にするために、ネットワークの時刻同期は重要だ。その基礎知識と構築ノウハウを解説する。
Windows Timeサービス上でドメイン内と外部NTPサーバの両方から時刻を同期する
前述したように、Active Directory環境では、フォレスト・ルート・ドメインのPDCエミュレータを頂点として時刻同期の階層が形成されており、外部NTPサーバとの時刻同期はPDCエミュレータのみが担当することになっている。しかし、状況によってはほかのドメイン・コントローラや特定クライアントが「信頼に足る時刻」を常に保持しなければならないケースもあるだろう。
例えば、フォレスト・ルート・ドメインのPDCエミュレータがダウンした場合、実装上では、ほかのドメイン・コントローラは最終的には「信頼に足る時刻」を入手することはできなくなるが、これを避けてほかのドメイン・コントローラも状況に応じて外部NTPサーバから時刻を取得できるようにする方法がある。この場合、以下のように設定を行う。
レジストリ・エディタから以下のキーおよび値を探し、以下のように変更する。
項目 | 内容 |
---|---|
キー | HKEY_LOCAL_MACHINEの\SYSTEM\CurrentControlSet\Services\W32Time\Parameters |
値の名前 | Type |
型 | REG_SZ |
値の内容 | ALLSync |
同期方法のレジストリ設定 |
項目 | 内容 |
---|---|
キー | HKEY_LOCAL_MACHINEのSYSTEM\CurrentControlSet\Services\W32Time\Parameters |
値の名前 | NtpServer |
型 | REG_SZ |
値の内容 | <外部NTPサーバのIPアドレス>,0x2 |
NTPサーバとの同期方法を指定するレジストリ設定 |
設定を変更したらコマンド・プロンプトから「net stop w32time & net start w32time」を実行するなどしてw32timeサービス(Windows Timeサービス)を再起動し、レジストリ内容をサービスに適用させる。
上記の設定では、ドメイン環境で(ほかのドメイン・コントローラから)時刻同期を行うことに加え、外部のNTPサーバからも時刻を同期することを可能とするオプション「ALLSync」を利用している。NtpServerレジストリ値のパラメータ「0x2」は代替として外部NTPサーバから時刻同期を行わせるための設定値である。
この設定については、以下のサポート技術情報を参照していただきたい。
Windows XP以降のクライアントであれば、上記の方法をそのまま流用し設定することも可能であると考えられる。ただし、クライアント上でドメイン・コントローラでない端末と(結果的に)時刻同期した場合、kerberos認証上の問題が生じる可能性がある。よって、クライアントはドメイン・コントローラからのみ確実に時刻同期を行い、各ドメイン・コントローラの時刻同期をきちんと設定する方法をお勧めする。
Window Time サービスに関するそのほかの注意事項
まず、時刻同期そのものに関して、データベース・システム(SQL ServerやOracleなど)を稼働させているコンピュータ上では特に注意が必要な点がある。
データベース・システムではトランザクション・ログなどの記録にシステム時刻が利用されるが、この時刻に関しての整合性が満たされない場合、データベース・システムが正常に動作しないことがある。例えばコンピュータの時刻が進みすぎている場合に単に時刻同期を行うと、時刻が後戻りしたように見えるという問題が発生する。このような問題に対処するため、UNIX系の時刻同期では、「slew(スルー)モード」と呼ばれる、「時刻の進み方を(実際の時間よりも)少しずつ遅らせて」、時刻そのものは後戻りせずに、ゆっくりと同期させる方法が利用される(slewはすべらせる、ずらすという意味)。Windows Timeサービスにも似た実装は存在するが、時刻の進みが決められたしきい値以内(*)でなければ(つまり実際の時刻より遅いか、決められた時間以上進んでいる状態ならば)、時刻が一気に同期してしまう。トラブルを避けるためには、事前に基準となる時刻にNTPなどを利用して時刻同期を行ってから、構築を行うべきだろう。
* Windows 2000では3分以内のずれ(進み)で同様の動作をする実装があるが、Windows XPおよびWindows Server 2003では実装が変更され、ドメインに参加した環境では5分以内、ワークグループ環境では1秒以内となっている。詳細は以下のドキュメントの「How Windows Time Service Can Affect Users and Applications」の項目を参照されたい。
- Using Windows XP Professional with Service Pack 2 in a Managed Environment: Controlling Communication with the Internet[英語](マイクロソフト)
- Using Windows Server 2003 with Service Pack 1 in a Managed Environment: Controlling Communication with the Internet[英語](マイクロソフト)
Windows Timeサービスに関する不具合情報
現在Windows Timeサービスには、ある状況下で正常に同期が行えない、同期間隔の設定が正しく行えないなどの不具合がある。詳細は以下のサポート技術情報などを参照していただきたい。
- W32Time により頻繁にイベント ID 50 がイベント ログに記録され、Windows Server 2003 の時刻の同期に失敗する(マイクロソフト サポート技術情報)
- Time synchronization does not occur on an NTP provider on a Windows Server 2003-based computer[英語](マイクロソフト サポート技術情報)
- FIX: Windows Time Service ignores the local polling interval values in Windows Server 2003 and Windows XP[英語](マイクロソフト サポート技術情報)
上記の問題が発生しているシステムや、時刻同期を極めて厳密にコントロールする必要がある場合は、修正プログラムの適用が必要な場合があるので注意してほしい。できれば(修正済み環境である)Windows Server 2003 Service Pack 1およびWindows XP Service Pack 2を適用した状態で運用するとよいだろう。
【更新履歴】
【2005/08/12】同期方法のレジストリ設定の表において、キーの場所を公開当初の記事では、\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\Typeと記述しておりましたが、正しくは\SYSTEM\CurrentControlSet\Services\W32Time\Parametersでした。お詫びして訂正させていただきます。
「運用」
Copyright© Digital Advantage Corp. All Rights Reserved.