アクティブディレクトリのDNSの問題 anchor.png

Page Top

xxxx.localドメインでクライアントマシンから名前解決ができない anchor.png

例えば,サーバーのマシン名は,yyyyyyyの名前でxxxxx.localドメインのDNSに登録して場合で以下のような問題が発生する。

Windowsのコマンドプロンプトで,以下のようにnslookupで名前解決できるか確認すると,

D:\home\ueno>nslookup yyyyyyy.xxxxx.local
Server:  xxxxx-s3.xxxxx.local
Address:  192.168.1.8

Name:    yyyyyyy.xxxxx.local
Address:  192.168.1.231

と結果が返ってくる。 これは,正常にDNS(192.168.1.8のマシン)に登録されている事がわかる。

しかしこの状態で,IEで,http://yyyyyyy.xxxxx.local をURLと入力してアクセスしてみると,ページが表示されない。
これはIE上でyyyyyyy.xxxxx.localの名前解決が出来ないことを意味する。
IEではなく,

D:\home\ueno>ping yyyyyyy.xxxxx.local

としても名前解決が失敗する。
nslookupでは正常に名前解決できるのに,IEやpingでは名前解決できないといった不思議な現象な問題が発生する。

Page Top

この問題の原因 anchor.png

どうもこの問題は,Windowsクライアントの名前解決に問題があることが原因である。

IPパケットを監視すると,nslookupはDNSの問い合わせ/回答パケットが発生するが,IEやpingの場合は全く問い合わせパケットをWindowsマシンが出していない。
nslookupは正常に動作することから,WindowsクライアントマシンのDNSのキャッシュ関連で問題があることが予想される。(nslookupはWindowsのDNSキャッシュを使用しないため。)
一度名前解決が出来ないと,キャッシュにそのことが保持され,いつまでたってもDNSを引きに行かないということが発生する。

以下のことをするとこれが解決する。

  1. コントロールパネル>ネットワーク接続で右クリックし,TCP/IPのプロパティを開き,詳細設定>DNSを開いてまた閉じる行為をすると,名前解決が一時的に出来るようになる。(効果は一時的)
  2. コントロールパネル>管理ツール>サービスで,DNS Clientを一時的に停止すると,名前解決が正常になる。
  3. Windows XPのKB951748の更新をアンインストールする。そうすると正常に名前解決ができるようになる。
  4. hostsファイルを作成して,そこに登録しておく。
  5. ドメイン名に,xxxxx.localを使用しない。

1の方法で一時的に正常になるのは,正常にDNSで名前解決が出来るとそれを一定時間キャッシュして,そのキャッシュが有効期間の場合はその情報を使うからである。その後は,名前解決の問い合わせを出さなくなるので,以後名前解決は失敗してしまう。
それとこの方法では一時的にしか解決できないため,これでは不十分である。
DNSのキャッシュを調べるには,

D:\home\ueno>ipconfig /displaydns

とすると,現在キャッシュしている名前がリストアップされる。 キャッシュを削除するには,

D:\home\ueno>ipconfig /flushdns

とすれば良い。

2のDNS Clientサービスを停止する方法の場合は,キャッシュを使わない事になるので,必ずDNS問い合わせを行うロジックになり,上手く動作するようになる。
が,後で述べるようにアクティブディレクトリへのログインが出来なくなってしまう問題がある。

3のWindows XPのKB951748更新のアンインストールに相当するWindows 7は最初からこの問題を含んでいるんで,Windows 7やVistaの場合は,このやり方と同様なアプローチはできないと思う。

4の場合は,各クライアントマシンに全て行う必要がある。そもそもこれが出来ればDNSは使わない。

5の場合は,.local周りの処理のバグなので,.localドメイン名は使用しなければ問題が発生しないと考えられる。だが既に運用している場合ドメイン名を代えるのは面倒くさいこともある。

というように,上手く解決できるソリューションが見つからない。
一番簡単なのは,DNS Clientサービスを停止させることだが,この場合問題となるのがアクティブディレクトリへログイン出来なくなってしまうということだ。ADへのログインが必要ない場合は,これがいい方法と思う。

Page Top

なぜIEやping等でDNSへ名前問い合わせをしないのか anchor.png

また,なぜ,IEやping等でDNSへ名前問い合わせをしなくなってしまうかだが,おそらくローカルネットワークドメイン名をxxxxx.localを使用しているからだと思う。正確には,.localを使用するとおそらくDNSを引きに行かなくなってしまうのだと思う。
.localを使うことは,マイクロソフトのアクティブディレクトリ構築時に推奨されている設定なのだが・・・

それにしてもマイクロソフトには,困ったものである。アクティブディレクトリの使用がいかに少ないかがよくわかる。 この様な理由から,ADを構築するような場合には,注意する必要があります。ローカルネットワークのドメイン名には,.localは使用せず以下を使うべきです。

.private
.intranet
.internal
.lan

新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ

Front page   Freeze Diff Backup Copy Rename Reload   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Counter: 1026, today: 1, yesterday: 0
Last-modified: 2020-12-26 (Sat) 16:07:35 (JST) (1607d) by yuji