2009-03-10 47 views
7

クライアントのDNSリゾルバキャッシュについて説明しています。このメッセージはWindows DNS Serverには関係ありません。Windows DNSリゾルバキャッシュの設定

私は、多くのDNS解決を行うC#プログラムを持っています。 HTTPWebRequestコンポーネントはHostヘッダーを変更できないため、独自の内部DNSキャッシュを作成することはできません。ですから、私はWindows DNSキャッシュに依存しなければなりません。Windows DNSキャッシュは変更しにくいようです。

Windows Server 2003のDNSキャッシュレジストリ設定については、合理的に良いTechNet articleがありますが、これらの設定が何かを証明することはできませんでした。私がGoogle検索で見つけた他のすべてのページは、そのページを参照するか、言い換えれば間違っていることがあります。

Windowsのipconfigコマンドには、キャッシュの内容を出力する/ displaydnsスイッチがあります。私の知る限り、これはDNSキャッシュのサイズを決定する唯一の方法です。 DNSキャッシュのレジストリ値を何に設定しても、2GBのメモリを搭載した32ビットのWindows XPボックスでの実験では、何千ものDNS解決を行った後でも、キャッシュ内のアイテムは常に30〜40になります。 16GBのメモリを搭載した64ビット版のWindows 2008マシンでは、常にキャッシュ内に270〜300のアイテムがあります。

私は困惑しています。答えは分かりませんが、次のいずれかの場合が考えられます。

  1. DNSリゾルバキャッシュのサイズを変更することはできません。
  2. 可能ですが、ドキュメントが間違っています。
  3. ドキュメントは正しい限りではあるが、不完全である。
  4. ドキュメントは正確で完全ですが、私はそれを理解するにはあまりにも愚かです。
  5. 文書化されたレジストリエントリは実際にキャッシュのサイズを変更しましたが、ipconfigはキャッシュ内のすべてのエントリを表示していません。

Windows XP、Vista、またはServer 2008でDNSリゾルバキャッシュのサイズを設定できるかどうかは誰にでも分かりますか?

+0

値を変更した後にDNSクライアントサービスを再起動しますか? – Dave

+0

それを試してみてください。変化なし。また、マシンを再起動しようとしました。 –

答えて

0

デフォルトでは、キャッシュの最小TTLは1日です。私はそれを試してみましたが、デフォルトではレジストリエントリはデフォルトでは存在しません。

これは、少なくともXPで、あなたが探しているキー、次のとおりです。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNSCache\Parameters

あなたはMaxCacheTtl DWORD を追加する必要があります - これは、リゾルバキャッシュに格納する最小TTLを変更します。

デフォルトでは86,400(値は秒、デフォルト= 1日)なので、これより短いものはキャッシュされません。それを300と言うと、それを下げれば、クライアントにもっと多くのトンがキャッシュされていることがわかります。

+0

http://support.microsoft.com/kb/318803のナレッジベースの記事によれば、レコードがキャッシュされる時間は、「以下のうち小さいものです.1)リゾルバが受信した応答で指定された秒数; 2)MaxCacheTtl設定の値。あなたの答えはそれと矛盾します。 –

+0

私はキャッシュエントリのTTLとは話していませんでしたが、キャッシュされる資格があるかどうかを判断するしきい値です。 –

+0

あなたは、MaxCacheTtlを減らすことにより、より多くのレコードがキャッシュに置かれる原因を説明する答えを広げてください。ナレッジベースとリンクされているTechNetの記事で読んだことは、キャッシュをより効果的にするためにMaxTtlを増やしたいと考えていることを示しています。 –

-1

Windowsのhostsファイルにエントリを追加することで、ファイル内のすべてのエントリに対してDNSクエリを作成しないようにすることができます。定期的に照会して、照会を再度確認することができます。

REGEDIT4

[ます。HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Servicesの\ Dnscacheは\パラメータ]
「QueryIpMatching:これらの設定で

+0

それは興味深い考えですが、私が行うDNS要求の数は実用的ではありません。私は、hostsファイルやそれに含まれるディレクトリへのアクセスを私のプログラムに与えるのではなく、 –

+0

-1 - ハッキングホストは、この質問の解決策ではありません。 – benc

1

は、ウェブ上でわずか数分後、私は1517個のキャッシュされたエントリを見ています"= DWORD値:00000001
"NegativeCacheTime"= DWORD値:00000000
"NegativeSOACacheTime"= DWORD値:00000000
"CacheHashTableBucketSize"= DWORD値:00000001
" キャッシュHashTableSize "= DWORD値:00000180
"MaxCacheEntryTtlLimit"= DWORD値:00000e10
"MaxSOACacheEntryTtlLimit"= DWORD値:0000012c

[ます。HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Servicesの\ TCPIP \パラメータ]
"QueryIpMatching"= DWORD値:00000001

+0

そしてここに、レジストリエントリのドキュメントへのリンクがあります。[link](http://technet.microsoft.com/en-us/library/bb726981.aspx) – Darek

1

DNSキャッシュを表示し、DNSリゾルバの動作を監視し、キャッシュ経由で解決されたクエリとDNSサーバーに転送されたクエリを表示するプログラム "ポータブルDNSキャッシュ"があります。その設定では、キャッシュ内の項目の最大数を設定できます。ただし、[キャッシュのクリア]ボタンをクリックするか、キャッシュの上限に達するまで、すべてのアイテムがキャッシュに残ります。