WindowsでDNSサーバのキャッシュの内容を調査する:Tech TIPS
DNSサーバは、外部のDNSサーバに問い合わせた結果をDNSキャッシュに保存することで、無駄な外部サーバへの問い合わせを減らし、クライアントからの問い合わせにも高速に応答できる。そのDNSキャッシュの内容を調べたりクリアしたりする方法は?
対象OS:Windows 2000 Server / Windows Server 2003
解説
●DNSサーバの動作とDNSキャッシュ
DNSサーバは、クライアントからの名前解決要求を受け付けて、その名前(FQDN名)からIPアドレスを求めたり、その逆を行ったりするためのサービスを提供する。例えばwww.microsoft.comというFQDN名の問い合わせ要求を受け取ったら、wwwというホストのIPアドレスを、microsoft.comドメインのDNSサーバに問い合わせる(microsoft.comドメインの情報はcomドメインのDNSサーバに問い合わせ、comドメインの情報はさらにその上位にあるルートDNSサーバに問い合わせるというふうに動作している)。そして1度外部のDNSサーバに問い合わせた結果は、以後の問い合わせに備えて、「DNSキャッシュ」と呼ばれる内部的なデータベースに格納している。この仕組みにより、何度も外部へ問い合わせることなく、クライアントからの名前解決要求に高速に応答することができる。
DNSサーバが正しく動作している場合は、このDNSキャッシュに次々とDNSの問い合わせ結果(DNSレコード)が蓄積されていく。そのため、このキャッシュの内容を調査することにより、DNSサーバが正しく動作しているかどうかを確認することができる。またキャッシュされているDNSレコードの内容を調べることにより、正しいレコード情報がキャッシュされているかどうかを知ることができる。DNSサーバの動作が不調な場合や、返されるDNSレコードの内容が正しくないと思われる場合は、DNSキャッシュの内容を調査するのもよいだろう。
本TIPSでは、DNSサーバにおけるDNSキャッシュの内容の確認方法と、DNSキャッシュをクリアする方法について解説する。
操作方法
●DNSキャッシュの表示方法
Windows 2000 ServerやWindows Server 2003に含まれるDNSサーバのキャッシュの内容を確認するには、[管理ツール]の[DNS]管理コンソールを利用する。このDNS管理コンソールは、DNSサービスをインストールしているサーバOSでは標準で用意されているはずであるが、それ以外のWindows サーバOS(メンバ・サーバ)や、クライアントOSでも、管理者用ツールをインストールすることにより利用できる。管理ツールのインストール方法についてはTIPS「サーバ用管理ツールをクライアントPCにインストールする」を参照してほしい。
DNS管理コンソールを起動したら、左側ペインでDNSサーバ名を選択し(リモートのDNSサーバを管理する場合は、[操作]メニューの[DNSサーバーに接続]であらかじめ目的のDNSサーバに接続しておくこと)、[表示]メニューをクリックして[詳細設定]を選択する。デフォルトではこのメニュー項目はオフ(チェックマークが付いていない状態)になっている。これを選んでチェックマークをオンにすることにより、DNSキャッシュの内容や、デフォルトで定義されている逆引きゾーン(「0.in-addr.arpa」「127.in-addr.arpa」「255.in-addr.arpa」の3つ)が表示されるようになる。
DNSキャッシュの表示
これはWindows Server 2003のDNS管理コンソールの例。DNSキャッシュを表示させるには、DNSの管理コンソールの左側ペインにおいて、サーバ名をクリックして選択状態にする。次に[表示]メニューにある[詳細設定]を選択する。
(1)DNSサーバ名を左クリックして、選択状態にしておく。
(2)[表示]メニューにある[詳細設定]を選択する。デフォルトではこの項目は無効になっているので、DNSキャッシュの内容は表示されない。
このメニュー項目を選択することにより、管理コンソールの左側ペインに新しく[キャッシュされた状態]という項目が表示されるようになる。これをクリックしてツリーを展開することにより、現在キャッシュに格納されているDNSレコードの内容が階層的に表示される(最新の状態にするには、ときどき[更新]ボタンか[F5]キーを押して、強制的に再表示させること)。
表示されたDNSキャッシュの例
これはキャッシュが空の状態で、「www.microsoft.com」というFQDN名をDNSサーバに問い合わせた直後のキャッシュの例。
(1)表示されたキャッシュの状態。[詳細設定]メニューを選択することにより、このツリーが表示される。
(2)comドメインに関するDNSレコードのキャッシュ。microsoft.comはcomドメインに属するので、このようなDNSレコードがキャッシュされている。
(3)netドメインに関するDNSレコードのキャッシュ。ドメインの情報は、ルートDNSサーバと呼ばれる基幹DNSサーバからたどることができるが、これらのサーバはa.root-servers.netやb.root-servers.netというふうに、netドメインに属している。そのため、netドメインのDNSレコードもキャッシュされている。
(4)microsoft.comドメインに関するDNSレコードのキャッシュ。comドメインの下に属している。
(5)microsoft.comドメインに登録されているDNSレコードの情報。DNSレコードはmicrosoft.comドメインのDNSサーバを表している。
(6)wwwという項目が求めるDNSレコード。この項目をダブルクリックすると、このDNSレコードに関する詳細情報(FQDN名やこのレコードの有効生存期間など)が表示される。
(7)ルートDNSサーバはroot-servers.netドメインに属している。
(8)[詳細表示]では、これらデフォルトの逆引きゾーンが表示される。
DNSサーバは階層的に構築されており、その最上位には「ルートDNSサーバ」が配置されている。これらのルートDNSサーバはroot-servers.netドメインに属しているので、comやnet、root-servers.netドメインなどの情報もキャッシュされていることが分かる。ルートDNSサーバに関する情報はTIPS「DNSサービスのルート・ヒントを変更する」を参照してほしい。
なおDNSの検索結果は、クライアント側でも独自にキャッシュしているので(TIPS「名前解決のトラブルシューティング(DNSリゾルバ・キャッシュ編)」参照)、DNSサーバのキャッシュの内容を確認する場合は、あらかじめ「ipconfig /flushdns」コマンドを使ってクライアント側のキャッシュの内容をクリアしておくのが望ましい。
●DNSキャッシュのクリア
このように、DNSキャッシュには問い合わせ結果のDNSレコードがキャッシュされているが、キャッシングの前後の状態を確認したいのでキャッシュをクリアしたい場合や、キャッシュされているDNSレコードが多すぎて確認が難しいといった場合には、その内容をクリアすることができる。
キャッシュの内容はDNSサービスを再起動させるとクリアされるが、手動で強制的にクリアすることもできる。GUIでクリア操作を行うためには、DNSの管理コンソールで、サーバ名もしくは[キャッシュされた参照]というツリー項目を選択し、[操作]メニューから[キャッシュの消去]を選ぶか、右クリックしてポップアップ・メニューから[キャッシュの消去]を選ぶ。
DNSキャッシュの消去
DNS管理コンソールでDNSキャッシュの内容を消去するには、サーバ名か[キャッシュされた参照]を右クリックし、ポップアップ・メニューから[キャッシュの消去]を選択する([操作]メニューから[キャッシュの消去]を選んでもよい)。
(1)サーバ名を右クリックする。
(2)ポップアップ・メニューから[キャッシュの消去]を選択すると、現在のDNSキャッシュの内容がクリアされる。
これ以外にも、サポート・ツールに含まれるdnscmd.exeというコマンドを使って、「dnscmd サーバ名 /clearcache」を実行してもよい。サポート・ツールについてはTIPS「Windows 2000管理者向けツールの種類と使い分け」を参照していただきたい。
■この記事と関連性の高い別の記事
- Windowsの名前解決のトラブルシューティング(DNSリゾルバーキャッシュ編)(TIPS)
- 優先DNSサーバと代替DNSサーバの動作について(TIPS)
- nslookupの基本的な使い方(イントラネット編)(TIPS)
- DNSサービスのルート・ヒントを変更する(TIPS)
- DNSのラウンドロビン設定を確認する(TIPS)
- Google Public DNSでWindowsのWeb表示を高速化する(TIPS)
- DNSサーバでゾーンごとに異なるフォワーダを使う(TIPS)
- 分散サービス拒否(DDoS)攻撃を仕掛けるDNS ampとは?(TIPS)
- ネットワークの修復機能とは(TIPS)
- Windowsでリモートネットワークの名前解決をhosts/lmhostsで行う(TIPS)
Copyright© Digital Advantage Corp. All Rights Reserved.