NET: DNS: tiempos de espera de resolución de reenviadores y reenviadores condicionales

En este artículo se describe el comportamiento de reserva y tiempo de espera que existe cuando una o varias direcciones IP de servidores DNS se configuran como reenviadores o reenviadores condicionales en un servidor DNS.

Se aplica a: Windows Server 2012 R2
Número de KB original: 2834250

Resumen

Compruebe NET: DNS: Tiempos de espera de resolución de cliente DNS para obtener más información sobre los tiempos de espera de resolución de cliente DNS.

De forma similar a los clientes DNS, la configuración de servidores DNS con más de un reenviador o reenviador condicional agrega tolerancia a errores adicional a la infraestructura DNS. Agregar varios servidores DNS como reenviadores o reenviadores condicionales permite que los nombres DNS sigan resolviéndose en caso de errores del único servidor configurado, del vínculo de red subyacente o de la infraestructura de red auxiliar.

Sin embargo, la adición de tolerancia a errores en servidores es aún más importante porque es posible que haya una operación transitiva que algún servidor está realizando en nombre de una pluralidad de clientes que ahora están en suspensión. A continuación, los recursos se consumen durante tiempos incrementalmente más largos.

Asegúrese de ajustar correctamente los parámetros si desea usar tres o más reenviadores o reenviadores condicionales porque es posible que la configuración predeterminada no esté optimizada para esta gran cantidad de servidores.

¿Cuál es el comportamiento predeterminado de un servidor DNS cuando se configuran más de dos servidores DNS como reenviadores?

Para comprender cómo funciona, las variables clave son:

  • RecursionTimeout : cuánto tiempo espera el sistema de nombres de dominio (DNS) a que los servidores remotos respondan a una consulta de cliente recursiva antes de finalizar la búsqueda.

    Se guarda en el Registro en HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\**RecursionTimeouty se puede configurar via dnscmd /config /RecursionTimeout <value>.

    El valor predeterminado es:

    • 15 segundos en Windows Server 2003

    • 8 segundos en Windows Server 2008, 2008 R2 y 2012

      RecursionTimeout se define en el nivel de servidor DNS y es independiente de la zona específica consultada.

  • ForwardingTimeout : cuánto tiempo espera el sistema de nombres de dominio (DNS) a que cada servidor de la lista de reenviadores responda a una consulta.

    Se guarda en el Registro en HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\**ForwardingTimeout y se puede configurar a través de dnscmd /config /ForwardingTimeout <value>.

    El valor predeterminado es:

    • 5 segundos en Windows Server 2003

    • 3 segundos en Windows Server 2008, 2008R2 y 2012

      ForwardingTimeout se define en el nivel de servidor DNS y es independiente de la zona específica consultada.

Cuando el servidor DNS recibe una consulta para un registro en una zona para la que no es autoritativo y necesita usar reenviadores, el comportamiento predeterminado es el siguiente:

Tiempo (segundos desde el inicio) Acción
0 El cliente consulta el servidor DNS. El servidor DNS reenvía inmediatamente la consulta a su primer reenviador
<forwarding_timeout> Después <de forwarding_timeout> segundos, si el primer reenviador no respondió, el servidor DNS consulta al segundo reenviador.
2 * <forwarding_timeout> +1 Después <de forwarding_timeout> +1 segundos más, si el segundo reenviador no respondió, el servidor DNS consulta al tercer reenviador.
... ...
N * <forwarding_timeout> +(N-1) Después <de forwarding_timeout> + 1 segundo más, si el reenviador Nth no respondió, el servidor DNS consulta el reenviador (N+1).

Nota:

Además del retraso configurado, puede haber un retraso adicional de medio segundo debido a la sobrecarga del sistema.

El algoritmo se detiene cuando el tiempo transcurrido ha superado el valor RecursionTimeout.

Si recursionTimeout expira, el servidor DNS responderá al cliente con un error de servidor.

Nota:

No enviamos el error del servidor inmediatamente después de la expiración de RecursionTimeout, sino solo cuando es el momento de probar el siguiente reenviador.

Si el servidor se las arregla para ponerse en contacto con todos los reenviadores antes de que recursiónTimeout expire sin obtener respuestas, intentará usar las sugerencias raíz para la resolución de nombres (configuración predeterminada, a menos que la recursividad se deshabilite en el nivel de servidor).

Esto significa que, con la configuración predeterminada, un servidor 2008R2 podrá consultar como máximo 3 reenviadores. No habrá tiempo suficiente para llegar para usar el cuarto reenviador. De hecho, con la configuración predeterminada en 2008R2, el servidor:

  • Consulta del primer reenviador después de 0 segundos
  • Consulta del segundo reenviador después de 3,5 segundos
  • Consultar el tercer reenviador después de 3,5 + 4 = 7,5 segundos

En el octavo segundo, RecursionTimeout expira, por lo que no llegaremos al punto donde se consulta al cuarto reenviador (lo que habría ocurrido después de 3,5 + 4 + 4 = 11,5 segundos).

Enviaremos la respuesta de error del servidor después de 11,5 segundos.

Ejemplo:

El servidor DNS con la dirección IP 192.168.0.1 se configura con cinco reenviadores (10.0.0.1-10.0.0.5).

El cliente tiene la dirección IP 10.0.0.31 y está consultando Microsoft.com

En una captura de red, se vería la siguiente salida del Monitor de red (nota 10.0.0.4 y 10.0.0.5 nunca consultada):

Time Time Offset TimeDelta Source Destination Details
6:33:51.7507293 0.2731738 0.0000000 10.0.0.31 192.168.0.1 DNS:QueryId = 0xF03, QUERY (consulta estándar), Consulta microsoft.com del tipo Host Addr en la clase Internet
6:33:51.7510021 0.2734466 0.0002728 192.168.0.1 10.0.0.1 DNS:QueryId = 0xBD57, QUERY (consulta estándar), Consulta microsoft.com del tipo Host Addr en la clase Internet
6:33:55.2997074 3.8221519 3.5487053 192.168.0.1 10.0.0.2 DNS:QueryId = 0xBD57, QUERY (consulta estándar), Consulta microsoft.com del tipo Host Addr en la clase Internet
6:33:59.2931644 7.8156089 3.9934570 192.168.0.1 10.0.0.3 DNS:QueryId = 0xBD57, QUERY (consulta estándar), Consulta microsoft.com del tipo Host Addr en la clase Internet
6:34:03.3112753 11.8337198 4.0181109 192.168.0.1 10.0.0.31 DNS:QueryId = 0xF03, QUERY (consulta estándar), Respuesta: error del servidor

¿Cuál es el comportamiento predeterminado de un servidor DNS cuando se configuran más de dos servidores DNS como reenviadores condicionales?

De forma similar a los reenviadores, hay dos variables clave para los reenviadores condicionales. Todavía tenemos RecursionTimeout (que funciona en el nivel de servidor), pero en este escenario se usa ForwarderTimeout en lugar de ForwardingTimeout. Tenga en cuenta específicamente que ForwarderTimeout funciona en una base de zona y tiene valores predeterminados diferentes:

  • RecursionTimeout : cuánto tiempo espera el sistema de nombres de dominio (DNS) a que los servidores remotos respondan a una consulta de cliente recursiva antes de finalizar la búsqueda.

    Se guarda en el registro en HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout

    Se puede configurar a través de dnscmd /config /RecursionTimeout <value>.

    El valor predeterminado es:

    • 15 segundos en Windows Server 2003

    • 8 segundos en Windows Server 2008 y 2008R2

      RecursionTimeout se define en el nivel de servidor DNS y es independiente de la zona específica consultada.

  • ForwarderTimeout : cuánto tiempo espera el sistema de nombres de dominio (DNS) a que cada servidor de la lista de reenviadores condicionales responda a una consulta.

    Dado que los reenviadores condicionales están configurados para zonas específicas, ForwarderTimeout también depende de la zona.

    Se guarda en el Registro en HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\Zones\ <zone_name>\ForwarderTimeout.

    El valor predeterminado es de 5 segundos en Windows Server 2003, 2008, 2008R2 y 2012.

    Esta es también la configuración que puede ver en la GUI de reenviadores condicionales.

Cuando el servidor DNS recibe una consulta para un registro en una zona para la que no es autoritativo y está configurado para usar reenviadores condicionales para él, el comportamiento predeterminado es el siguiente:

Tiempo (segundos desde el inicio) Acción
0 El cliente consulta el servidor DNS. El servidor DNS reenvía inmediatamente la consulta a su primer reenviador condicional
<forwarder_timeout> Después <de forwarder_timeout> segundos, si el primer reenviador condicional no respondió, el servidor DNS consulta el segundo reenviador condicional.
2 * <forwarder_timeout> +1 Después <de forwarder_timeout> +1 segundos más, si el segundo reenviador condicional no respondió, el servidor DNS consulta el tercer reenviador condicional.
... ...
N * <forwarder_timeout> +(N-1) Después <de forwarder_timeout> +1 segundos más, si el reenviador condicional n.º no respondió, el servidor DNS consulta el reenviador condicional (N+1)th

Nota:

Además del retraso configurado, puede haber un retraso adicional de medio segundo debido a la sobrecarga del sistema.

El algoritmo se detiene cuando el tiempo transcurrido ha superado el valor RecursionTimeout.

Si recursionTimeout expira, el servidor DNS responderá al cliente con un error de servidor.

Nota:

No enviamos el error del servidor inmediatamente después de la expiración de RecursionTimeout , sino solo cuando es el momento de probar el siguiente reenviador condicional.

Esto significa que, con la configuración predeterminada, un servidor 2008 R2 podrá consultar como máximo dos reenviadores condicionales. No habrá tiempo suficiente para llegar para usar el tercer reenviador condicional. De hecho, con la configuración predeterminada en 2008R2, el servidor:

  • Consulta del primer reenviador después de 0 segundos
  • Consulta del segundo reenviador después de 5,5 segundos

En el octavo segundo, RecursionTimeout expira, por lo que no alcanzaremos el punto en el que se consulta al tercer reenviador condicional (lo que habría ocurrido después de 5,5 + 6 = 11,5 segundos).

Enviaremos la respuesta de error del servidor después de 11,5 segundos.

Ejemplo:

El servidor DNS con la dirección IP 192.168.0.1 se configura con cinco reenviadores condicionales (10.0.0.1-10.0.0.5) para la zona Microsoft.com.

El cliente tiene la dirección IP 10.0.0.31 y está consultando Microsoft.com.

En una captura de red, se vería la siguiente salida del Monitor de red (la nota 10.0.0.3, 10.0.0.4 y 10.0.0.5 nunca consultada):

Time Time Offset TimeDelta Source Destination Details
6:50:32.5481816 0.4306857 0.0000000 10.0.0.33 192.168.0.1 DNS:QueryId = 0x245A, QUERY (consulta estándar), Consulta microsoft.com del tipo Host Addr en la clase Internet
6:50:32.5484341 0.4309382 0.0002525 192.168.0.1 10.0.0.1 DNS:QueryId = 0x252B, QUERY (consulta estándar), Consulta microsoft.com del tipo Host Addr en la clase Internet
6:50:38.1695163 6.0520204 5.6210822 192.168.0.1 10.0.0.2 DNS:QueryId = 0x252B, QUERY (consulta estándar), Consulta microsoft.com del tipo Host Addr en la clase Internet
6:50:44.1856567 12.0681608 6.0161404 192.168.0.1 10.0.0.33 DNS:QueryId = 0x245A, QUERY (consulta estándar), Respuesta: error del servidor

Referencias