nslookupで名前解決できるけどブラウザとpingで名前解決ができない
- Windows7 64bit
■事象
nslookupで名前解決できるけどブラウザとpingで名前解決ができない。
自鯖構築のWEBサーバの名前解決ができなかった。
昨日まで名前解決できていた。
PCは週に1度シャットダウンする程度で、基本的にはスリープにしている。
■解決策
1.DNSキャッシュをクリアする
2.DNS Clientサービスを再起動する
■原因調査
ぐぐれば結構HITしたので回避策としての解決はできるが、直接的な原因がいまいちつかめない。
環境としては、Win7から自鯖のDNS(bind)をプライマリに指定。
自鯖DNSはマスタとスレーブ構成で、Win7からはスレーブを指定。
DNSサーバのマスタ、スレーブともに該当サーバの名前解決は可能であった。
数ヶ月前にドメイン名を変更したが、新旧ゾーンを並行運用。
Win7のDNSサフィックスに、旧ドメイン名を指定。
>今回の大きな要因の1つ。
まず、コマンドプロンプトから、DNSキャッシュをクリアしてみた。
ipconfig /flushdns DNS リゾルバー キャッシュは正常にフラッシュされました。
>ブラウザから対象ホストの名前解決できず、またPINGも疎通確認できず。NSLOOKUPは名前解決済み。
次に、サービスから、DNS Clientを停止してみた。
>ブラウザ、PINGともにアクセスを確認できた。NSLOOKUPは名前解決済み。
再度DNS Clientを起動してみた。
PINGを実行すると、疎通確認ができなかった。
>ブラウザから対象ホストの名前解決できず、またPINGも疎通確認できず。NSLOOKUPは名前解決済み。
そもそも、pingは名前解決にWinsockを使用し、nslookupはDNSサーバから名前解決を行うようである。
上記結果から、DNSリゾルバ・キャッシュに問題があると考えた。
DNS Clinet起動後、ブラウザからWEBサーバへアクセスし、DNSキャッシュを確認。
ipconfig /displaydns >dns.txt ※箇所は修正しているところ。 ※DNSサーバ名※ ---------------------------------------- レコード名 . . . . . : ※DNSサーバ名.変更前ドメイン※ レコードの種類 . . . : 1 Time To Live . . . .: 86386 データの長さ . . . . : 4 セクション . . . . . . . : 回答 A (ホスト) レコード. . . : ※192.168.1.xxx ...省略 ※WEBサーバ.変更後のドメイン※ ---------------------------------------- 名前が存在しません。
見事に、変更前のドメインがキャッシュに残っていた。
DNSサフィックスの指定を外して、再度DNSキャッシュをフラッシュし、同じように確認したところ、変更後のドメインとなっていた。
そして、WEBサーバ.変更前ドメイン、WEBサーバ.変更後ドメインをブラウザ、PINGから名前解決できることを確認した。
■課題というか備忘録
ここで疑問点がでてくる。
・なぜ昨日まで名前解決ができていたか。
・DNS Clientサービスの自動起動は必要か。
変更前ドメインに関しては移行作業も完了していることからZONEを削除しても影響はない。
リゾルバキャッシュは結構な頻度で壊れるものなの?
DNS Clientサービスを停止しても、ブラウザ、PINGへの影響がわからない。サービスの説明読んでも意味がわからん。
DNS クライアント サービス (dnscache) により、このコンピューターのドメイン ネーム システム (DNS) 名がキャッシュされ、フル コンピューター名が登録されます。サービスが停止されると、 DNS 名は引き続き解決されます。しかし、DNS 名のクエリの結果はキャッシュされず、コンピューター名は登録されません。サービスが使用不可にされた場合、このサービスに明示的に依存するサービスはすべて起動できなくなります。
毎回DNSクエリが発行される分には、自鯖のDNSキャッシュ利用のためあまり影響がないと考える。
コンピュータ名が登録されないことによるデメリットとは?
DNS Clientに依存するサービスってなんだろ?(デフォルトでは依存しているサービスはない模様)
追記(2012/11/11)
結果的に、DNSサーバを2つ登録していたことが原因とおもわれるが。。。
Priに自鯖のDNS、SECにルータ(プロバイダ)のDNSを指定していた。
自鯖のDNSは、イントラ内の名前解決するために用意したが、
自己解決できない場合は、外部に問い合わせ、
またイントラネット以外の問い合わせ拒否している。
なので、SECのDNSから自鯖の名前解決は100%できない状態である。
SECのDNS外したらまったく再現しなくなった。
・想定
Win7は問い合わせするときに、SECからも問い合わせしているんじゃまいか。
んで、競合して結果見つからんとか。う〜ん、謎。
また、DNS Clientを止めた場合、CygwinからPython(多分wgsi)を起動した時に
有効になってないと起動できなかった。レアケースかも…。
■参考
Windows 名前解決の順序 - Ask the Network & AD Support Team - Site Home - TechNet Blogs
http://blogs.technet.com/b/jpntsblog/archive/2009/07/13/windows.aspx
名前解決のトラブルシューティング(DNSリゾルバ・キャッシュ編) − @IT
http://www.atmarkit.co.jp/fwin2k/win2ktips/259dnsresolver/dnsresolver.html