2009-03-10 15 views
7

Tenga en cuenta que estoy hablando de la caché de resolución DNS del cliente. Este mensaje no se refiere al servidor DNS de Windows.Configuración de la caché de resolución DNS de Windows

Tengo un programa C# que hace una gran cantidad de resoluciones de DNS. Como el componente HTTPWebRequest no me permite cambiar el encabezado del host, no puedo crear mi propio caché DNS interno. Así que tengo que depender de la memoria caché DNS de Windows, que no parece ser susceptible de cambios.

Hay un razonablemente bueno TechNet article sobre la configuración del Registro de caché de DNS en Windows Server 2003, pero no he podido probar que establecerlos haga algo. Todas las demás páginas que encontré a través de una búsqueda en Google hacen referencia a esa página o la parafrasean, a veces de manera incorrecta.

El comando ipconfig de Windows tiene un modificador/displaydns que generará el contenido de la memoria caché. Que yo sepa, esa es la única forma de determinar el tamaño de la memoria caché DNS. En mis experimentos en una caja de Windows XP de 32 bits con 2 GB de memoria, sin importar a qué establezca los valores de registro de caché de DNS, siempre termino con entre 30 y 40 elementos en la memoria caché, incluso después de hacer miles de resoluciones de DNS . En mi máquina Windows 2008 de 64 bits con 16 GB de memoria, siempre obtengo entre 270 y 300 elementos en la memoria caché.

Estoy perplejo. No sé cuál es la respuesta, pero creo que uno de los siguientes es el caso:

  1. No es posible cambiar el tamaño de la caché de resolución DNS.
  2. Es posible, pero la documentación es incorrecta.
  3. La documentación es correcta hasta donde llega, pero está incompleta.
  4. La documentación es correcta y completa, pero soy demasiado tonto como para darle sentido.
  5. Las entradas de registro documentadas realmente cambiaron el tamaño de la memoria caché, pero ipconfig no me muestra todas las entradas que están en la memoria caché.

¿Alguien me puede decir si es posible configurar el tamaño de la memoria caché de DNS en Windows XP, Vista o Server 2008?

+0

¿Reinicia el servicio DNS Client después de cambiar los valores? – Dave

+0

Probé eso. Ningún cambio. También intenté reiniciar la máquina. –

Respuesta

0

De forma predeterminada, el TTL mínimo para la memoria caché es de 1 día, he jugado con él pero, de forma predeterminada, creo que la entrada del registro no está allí por defecto.

Esta es la clave que está buscando, por lo menos en XP:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNSCache\Parameters

es necesario agregar un DWORD MaxCacheTtl - Esto va a cambiar el TTL mínimo para almacenar en la caché de resolución .

Dado que el valor predeterminado es 86,400 (el valor está en segundos, por defecto = 1 día), cualquier cosa más corta que esto simplemente no se almacena en caché. Si lo bajó para decir 300, vería toneladas más en la memoria caché del cliente.

+0

De acuerdo con el artículo de Knowledge Base en http://support.microsoft.com/kb/318803, la cantidad de tiempo que el registro se almacenará en caché es "el menor de: 1) el número de segundos especificado en la respuesta que recibió el resolver ; 2) El valor de la configuración de MaxCacheTtl ". Tu respuesta entra en conflicto con eso. –

+0

No estaba hablando con el TTL de la entrada de caché, sino con el umbral que determina si incluso califica para ser almacenado en caché. –

+0

¿Podría ampliar su respuesta para explicar cómo la reducción de MaxCacheTtl causará que se coloquen más registros en la memoria caché? Todo lo que he leído en Knowledge Base y el artículo vinculado de TechNet indica que deseo aumentar MaxTtl para que la caché sea más efectiva. –

-1

Un truco que puede usar es agregar entradas al archivo hosts en Windows, lo que haría que no realice consultas DNS para todas las entradas en el archivo. Puede periódicamente consultar de nuevo para verificar las entradas.

+0

Es una idea intrigante, pero la cantidad de solicitudes de DNS que hago no es práctica. También prefiero no darle acceso a mi programa al archivo de hosts o al directorio que contiene. –

+0

-1 - hackear hosts es muy claro que no es una solución para la pregunta. – benc

1

Con estos ajustes, después de tan sólo unos minutos en la web, estoy viendo 1517 entradas en caché:

REGEDIT4

[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Dnscache \ Parameters]
"QueryIpMatching "= dword: 00000001
"NegativeCacheTime"= dword: 00000000
"NegativeSOACacheTime"= dword: 00000000
"CacheHashTableBucketSize"= dword: 00000001
" caché HashTableSize "= dword: 00000180
"MaxCacheEntryTtlLimit"= dword: 00000e10
"MaxSOACacheEntryTtlLimit"= dword: 0000012c

[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters]
"QueryIpMatching"= dword: 00000001

+0

Y aquí hay un enlace a la documentación de las entradas del registro: [link] (http://technet.microsoft.com/en-us/library/bb726981.aspx) – Darek

1

Hay un programa "Caché DNS portátil" que puede usar para ver la caché DNS, controlar la actividad de la resolución DNS y ver las consultas resueltas a través de la caché y las reenviadas al servidor DNS. En su configuración, puede configurar la cantidad máxima de elementos en la memoria caché. Aunque, parece que obliga a todos los elementos a permanecer en la memoria caché hasta que haga clic en el botón "Borrar caché" o se alcance el límite de caché.

Cuestiones relacionadas