最終回 NTP時刻同期サービスのトラブルシューティング:Windowsネットワーク時刻同期の基礎とノウハウ(改訂版)(3/3 ページ)
Windows環境で時刻同期機能を提供するWindows Timeサービスのトラブルシューティングを行うには、デバッグ・ログやイベント・ログを調査するとよい。読み取り専用ドメイン・コントローラにおける時刻同期処理の挙動と設定方法も解説する。
読み取り専用ドメイン・コントローラにおける時刻同期処理
「読み取り専用ドメイン・コントローラ(Read Only Domain Controller。以下RODC)」は、ユーザー情報の書き込みが不可能なこと、アカウントのパスワード情報を持たせないことなどで、誤操作や盗難によるクラッキングに対応した、ブランチ・オフィス(遠隔地の事務所)向けのドメイン・コントローラである。
RODCの時刻同期は、ドメイン・コントローラでありながら通常のドメイン・コントローラ(書き込み可能なドメイン・コントローラ:RWDC)とは異なる。NTPクライアントとしてのRODCは、原則として複製元のWindows Server 2008以降のRWDCから時刻同期を行い、ほかのRODCや同じフォレスト内の親ドメインのRWDCからは時刻同期を行わない。RWDC間の時刻同期の詳細については、第3回「Active Directoryおよびワークグループ環境での時刻同期― 1.Active Directory環境での時刻同期」を参照していただきたい。
またNTPサーバとしてのRODCの挙動も多少複雑である。というのも、RODCはパスワード情報を持っていないからだ。クライアントから認証要求があった場合、通常は複製元のRWDCに認証を委任しているのだが、設定変更(各アカウントの[パスワード レプリケーション]プロパティ)でパスワード情報を個別に複製し、委任を行わないで認証することもできる。クライアント・コンピュータのアカウントのパスワード複製が行われているかどうかによって、挙動が変化するのだ。
パスワード複製が行われていない場合の時刻同期
ドメイン環境の時刻同期では、認証に必要な署名を作成するため、ドメイン・コントローラ側がコンピュータ・アカウントのRID情報と資格情報を知っている必要があることは、すでに述べた通りだ。RODCの場合、オブジェクトからRIDは分かってもパスワード情報(資格情報)が分からないため、クライアントのための署名を生成できない。そのため、署名の生成を複製元のRWDCに委任し、自らはプロキシ(代理)的な役割を担う。その挙動は以下の通りである。
- クライアントが(ログオン先である)RODCに、RIDを含むNTP問い合わせパケットを送信する。
- RODCはRIDの存在を確認したうえ、複製元のRWDCに、問い合わせパケットをプロキシ的に送信する。
- RWDCはRIDに対応した署名を作成し、RODCに、RIDと署名を含む応答パケットを返送する。
- RODCは、問い合わせ元のクライアントに、応答パケットをプロキシ的に返送する。
この状況は以下のパケット・キャプチャの内容から確認できる。この環境での各コンピュータのIPアドレスは、RWDCは192.168.10.98、RODCは192.168.10.101、クライアントは192.168.10.100である。
まずクライアントがRODCにNTPの問い合わせパケットを送信する。
するとRODCは複製元のRWDCに問い合わせパケットを代理で送信する。
RWDCはRODCに応答パケットを返送する。
応答パケットを受け取ったRODCは、問い合わせ元のクライアントにそれを返送する。
このモードで動作するRODCでは、「Chaining Table」と呼ばれる情報が一時的にメモリ上にキャッシュされる。Chaining Tableは、「RWDCからRODCへのNTP応答パケット」をRODCが受け取った際、正当な情報かどうか(改ざんされていないか)確認したり、自身のWindows Timeサービスの要求か、それともクライアントからのプロキシ要求かを区別するために使われる。
Chaining Tableには「クライアントのIPアドレス」「RID」「OriginateTimestamp」「ArrivalTime」が含まれるが、RODCは応答パケットに含まれる「RID」「OriginateTimestamp」の2つをChaining Tableから検索し、存在すればプロキシ応答とみなしてクライアント(のIPアドレス)に送信し、存在しなければ自分自身のWindows Timeのタイム・サンプルとして利用する。
あわせて、同一クライアントから新たにNTP問い合わせが行われる際、Chaining Tableの以前のエントリが存在することで問題が起こらないよう、エントリは生成から16秒後に消去される仕組みになっている。ドメインによる時刻同期ではRFC 1305に準拠した間隔で同期が行われ、(RFC 1305の仕様により)最少16秒の問い合わせ間隔になっているためである。
パスワード複製が行われている場合の時刻同期
RODCでは「Allowed RODC Password Replication Group」にアカウントを登録すると、RODCへのログオン時にRODCにパスワードが複製され、以後はキャッシュとして機能する。
Allowed RODC Password Replication Groupプロパティ
Allowed RODC Password Replication Groupに登録すると、パスワード情報がキャッシュされるようになる。
(1)追加登録したメンバー。
パスワードがキャッシュされているアカウントの一覧
このコンピュータ上でパスワードがキャッシュされているアカウントの一覧を確認しているところ。
(1)キャッシュしているアカウントの表示。
(2)このアカウントのパスワードがキャッシュされている。
このような状態であれば、RODC上でRIDに対応した署名を生成できるため、RODCはRWDCに資格情報を問い合わせることなく、直接クライアントに署名を送信できる。そのため、動作としてはRWDCとクライアントと同じ挙動になる。
以下のパケット・キャプチャの内容から、上記の挙動を確認できる。上記同様、この環境での各サーバのIPアドレスは、RODCは192.168.10.101、クライアントは192.168.10.100という構成である。
まずはクライアントからRODCへNTPの問い合わせパケットが送信される。
今度はRODCからクライアントへすぐに応答が返されている。
RODCからクライアントへの応答パケットの返送(キャッシュ編)
RODCは、すぐに返送パケットをクライアントへ返している。
(1)RODCからクライアントへのNTPパケットには、RIDと署名が含まれている。
RODC特有のレジストリ設定
RODC特有のレジストリ値については以下の4つが存在する。いずれも Chaining Tableの挙動を制御するものだが、基本的には変更する必要は少ないだろう。レジストリ値を含むRODCの時刻同期設定については、「Appendix A: RODC Technical Reference Topics(マイクロソフトTechNetサイト)」の「How the Windows Time service works on an RODC」を参照していただきたい。
●Chaining Tableエントリの有効時間
キー | HKEY_LOCAL_MACHINEの SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer |
---|---|
値の名前 | ChainEntryTimeout |
型 | REG_DWORD |
値 | 4 *数値は10進数 Chaining Tableエントリの有効時間を秒数で指定する。エントリが強制削除される16秒より大きい値は指定できない |
●Chaining Tableエントリの最大数
キー | HKEY_LOCAL_MACHINEの SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer |
---|---|
値の名前 | ChainMaxEntries |
型 | REG_DWORD |
値 | 128 *数値は10進数 Chaining Tableエントリの最大数を指定する。エントリ数が最大値に達すると、それ以上のエントリ要求は行われない |
●Chaining Tableエントリを利用する最大ホスト数
キー | HKEY_LOCAL_MACHINEの SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer |
---|---|
値の名前 | ChainMaxHostsEntries |
型 | REG_DWORD |
値 | 4 *数値は10進数 Chaining Tableエントリを利用する最大ホスト数を指定する。ドメインに参加したマシンからの、RODCに対するNTP問い合わせの同時接続の最大数、と考えればよい |
●Chaining Table機能の無効化
キー | HKEY_LOCAL_MACHINEの SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer |
---|---|
値の名前 | ChainDisable |
型 | REG_DWORD |
値 | 0 *数値は10進数 Chaining Tableの機能の無効化をブール値として指定する。この機能を無効化した場合、RODCへのパスワード複製を行っていないクライアントは、RODCから時刻同期できなくなるが、RODCはすべてのドメインコントローラと時刻同期を行うことができるようになる |
Windows Server 2008 R2の時刻同期については、Windows Timeサービスの変更仕様や、RODCに関する特別な動作などの小さな変更はあるが、その根幹自体は以前と変わっていない。ただ、使い勝手の面では、前回紹介したように、w32tm /queryコマンドを使って直近の同期状態を確認できることでトラブルシュートがやりやすくなっていたり、イベント・ログの内容も説明や対応方法が分かりやすく記載されており、運用上の助けになると思われる。本記事を参考していただければ筆者として幸いである。
■更新履歴
【2013/01/28】「パスワード複製が行われていない場合の時刻同期」の見出し部分の説明において、「RODC」とすべきところを一部で「RWDC」と間違えて記述していたのを訂正しました。
【2013/01/24】初版公開。
Copyright© Digital Advantage Corp. All Rights Reserved.