Windowsには、DNSの問い合わせ結果をキャッシュするDNSリゾルバ・キャッシュ機能がある。リゾルバ・キャッシュが働くと、意図しない名前解決結果が得られることがあるので、トラブルシューティング時にはipconfigコマンドで強制的にフラッシュするとよい。
対象OS:Windows 2000 Professional/Windows XP Professional/Windows XP Home Edition/Windows 2000 Server/Windows 2000 Advanced Server
DNSとは、IPアドレスと名前(FQDN名)を(相互に)変換するためのデータベース・サービスであるが、Windows 2000やXPのDNSクライアントには、DNSサーバに問い合わせた結果をシステムの内部にキャッシュしておいて、外部のDNSサーバへの問い合わせをなるべく抑制するという機能が含まれている。これを「DNSリゾルバ・キャッシュ」といい、実際には「DNS Client」サービスが担当している。「リゾルバ(resolver)」とは、名前解決(name resolution)を行うための機能やサービスのことを指す(一般的にはネーム・リゾルバと呼ばれる)。
ネットワーク上のサービスを使う場合、さまざまな場面でFQDN名からIPアドレスへの変換が必要となる。例えばWebブラウザでURLを指定した場合や、エクスプローラでネットワーク上のサーバにある共有リソースを使う場合など、ほかのマシン上のリソースを使う場合は、ほとんどいつもDNSサーバへアクセスしていると考えてよいだろう。Windows 2000やXPでは、従来のWindows 9xやMe、NTなどと違って、このDNSの名前解決に頼る部分が大幅に増えている(従来はNetBIOSのブロードキャストなどを使った名前解決が多かった)。そのため、リゾルバ・キャッシュを使うと、DNSサーバへのクエリーすることなく、アプリケーションに対して高速に応答が返せるし、ネットワーク・トラフィックの抑制にも役に立つ。
Windows 2000/XPにおけるDNSリゾルバ・キャッシュは、次のようにして機能している。
このように、DNSリゾルバ・キャッシュには、最近利用された名前解決の結果が記録されている。だが場合によっては、好ましくない(つまり、正しくない)名前解決の結果がアプリケーションに返されることがあり、ネットワークがつながらないなどのトラブルを引き起こすこともある。例えばLAN内でDHCPなどを使っている場合、場合によってはIPアドレスと名前の対応が変わってしまい、予期しないホストへ接続しようとしたりすることになる。ファイル・サーバやアプリケーション・サーバならば、固定的なIPアドレスを割り当てて運用することが多いので、このようなトラブルは起こりにくいかもしれないが、クライアントPCの場合は、起動するたびにIPアドレスが変わり、お互いにつながらないというトラブルが発生することがある。
また、ドメイン名やIPアドレス、(ISPなどで)ホスティングされているマシンやサービスの変更など、ネットワーク環境の移行などで名前とIPアドレスの対応が変わった場合も、注意が必要である。古いDNSレコードがキャッシュされていると、新しく設置したはずのネットワーク・サービスへつながらない、などというトラブルが発生しやすい。
このような場合は、キャッシュの内容を強制的にフラッシュ(破棄)して、確実にDNSサーバへの問い合わせが行われるようにする必要がある。また、ネットワークのトラブルシューティング作業を行う場合にも、予期しないDNSレコードに振り回されたりしないように、まずはこのリゾルバ・キャッシュのフラッシュをするように心がけておきたい。といっても、フラッシュする方法は非常に簡単である。
DNSリゾルバ・キャッシュの内容を表示するには、コマンド・プロンプト上で「ipconfig /displaydns」コマンドを実行する。これを実行すると、現在キャッシュに入っているDNSレコードの情報の一覧が表示される。場合によってはかなりキャッシュの内容が大きくなっているので、1度テキスト・ファイルにリダイレクトして保存させてから、エディタなどで検索するとよいだろう。
なお、DNSによる名前解決の状態を調べるためにnlsookup.exeコマンドを使うこともあるだろう(こちらの方が多いだろうが)。だがこのコマンドを使うと、DNSリゾルバ・キャッシュの内容とは関係なく、DNSサーバに直接問い合わせが行われ、その結果が表示される。そのため、クライアント・アプリケーションから見たDNSの名前解決の結果とは必ずしも一致しないので、ケース・バイ・ケースで使い分けていただきたい。
C:\>ipconfig /displaydns
Windows IP Configuration
lpr8
----------------------------------------
Record Name . . . . . : lpr8
Record Type . . . . . : 1
Time To Live . . . . : 528518
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 192.168.0.98
www.goo.ne.jp
----------------------------------------
Record Name . . . . . : www.goo.ne.jp
Record Type . . . . . : 1
Time To Live . . . . : 509
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 210.150.25.37
……(以下省略)……
DNSリゾルバ・キャッシュの内容をフラッシュ(破棄)するには、コマンド・プロンプト上で「ipconfig /flushdns」コマンドを実行すればよい。システムを再起動したり、「DNS Client」サービスを再起動したり、Windows XPならば「ネットワークの修復」([ネットワーク接続]ツールで、使用しているネットワークのアイコンを右クリックし、メニューから[ネットワークの修復]を選択する)などを行っても同様の効果があるが、コマンド・プロンプト上でこのコマンドを実行するのが一番簡単でよいだろう。
C:\>ipconfig /flushdns
Windows IP Configuration
Successfully flushed the DNS Resolver Cache.
■関連リンク
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.