Q

Windows NT 4.0で構成したドメイン環境で,Windows XP Professionalのクライアントを使っていました。規模の大きなドメイン環境のため,WINS*を構成して名前解決を効率化しています。このNTドメインをActive Directoryへアップグレードしようと考え,まず推奨手順通りにPDCをWindows Server 2003にアップグレードしました。

 しかし,この状態でWindows XP Professionalクライアントの動作を確認したところ,Active Directoryで使おうとしていたグループ・ポリシー・オブジェクト(GPO)を適用できない端末が一部に存在します。特に,アップグレードしたWindows Server 2003のドメイン・コントローラ(DC)からネットワーク的に遠い端末に多いようです。DNSの参照先は,アップグレードしたDCをきちんと指定しています。なぜ,このような状態が発生するのでしょうか?

A

Windows XP ProfessionalがGPOを参照できるようにするには,Windows Server 2003などActive DirectoryのDCを参照して,ログオン処理を実行する必要があります。しかし,何らかの原因でこれらのDCを参照できない場合は,それ以外のDCを参照します。

 今回の場合,その参照先がネットワーク内に残っているWindows NT 4.0のBDCになっていると思われます。この状態では,Windows XP ProfessionalはドメインがNTからActive Directoryへアップグレードしたことを認識できず,当然GPOも使用できません。それ以外に,Active Directoryの機能を使用するKerberos 認証やサイトの認識などもできなくなっているはずです。


△ 図をクリックすると拡大されます
図3●Windows XPはログオン時にDNSやLDAPの問い合わせに失敗すると,NT時代と同じ手法でドメイン・コントローラを探す

 Active Directoryに参加しているWindows XP Professionalを起動させると,通常は図3のようなログオン処理が発生します。起動時にまず,Active Directoryの参照先であるLDAPサーバーをDNSサーバーに確認します。そして,LDAPサーバーからドメインやサイトの情報を取得し,ログオン要求を処理していきます。

ADの存在を認識できないことが原因
 このDNSサーバーやLDAPサーバーへの問い合わせに失敗すると,Windows XP ProfessionalマシンはNTドメインで使っているNetBIOSの0x1cを使用してDCを問い合わせます。NetBIOSの0x1cとはDCのリストを取得するための要求で,WINSサーバーへ直接とブロードキャストの両方で問い合わせを発行します。

 0x1cの要求を受けたWINSサーバーは存在する全DCのアドレスを返信し,さらに同じセグメント内にDCが存在すればブロードキャストの問い合わせに直接応答します。Windows XP Professionalマシンは,そうして取得したすべてのDCのIPアドレスに対してログオン要求を発行します。

 そのログオン要求に応答したDCがBDCのWindows NTサーバーの場合,Windows XP Professionalマシンは引き続きBDCとの間で暗号化通信します。Active Directoryの機能であるGPOやKerberos通信などは使用しません。この状態ではdnsHostNameおよびservicePrincipalNameというコンピュータ・アカウントの属性も失われるようです。

 1台のPDCだけをWindows Server 2003にアップグレードした状態では,Active Directoryドメインへのログオン要求やKerberos通信が,この1台のマシンに集中することになります。このような状態ではUDPでやり取りするDNSやLDAPの問い合わせに有効な返信ができない場合があります。場合によっては,Kerberos通信などでもタイムアウトによるエラーが発生するようです。今回の現象は,そのような状態が原因で発生します。

 Windows XP ProfessionalマシンにWindows Server 2003で構築したDCの存在を認識させれば,この現象は発生しなくなります。具体的には,次のような方法があります。

●Windows XP Professionalのレジストリを編集して,ログオン要求にWindows Server 2003のDCが応答するのを待つ。
●LMHOSTSファイルやWINSサーバーを手動で設定し,NetBIOSの0x1cに対する応答をWindows Server 2003のDCのみに設定する(ブロードキャストによる応答は制限不可)。
●「netdom reset」か「nltest /sc_reset」のコマンドで,Windows Server 2003の通信を強制させる。
●手動でドメインへ再参加する。

 これらのいずれかを使えば,Windows XP ProfessionalマシンはドメインがActive Directoryへアップグレードされたことを認識し,LSA シークレットと呼ばれる暗号化された領域にドメインのDNS名を保存します。そして,次回からドメインへのログオンをWindows Server 2003を使って必ず処理するようになります。

山岸 真人