Partager via


NET : DNS : délai d’expiration de résolution des redirecteurs et des redirecteurs conditionnels

Cet article décrit le comportement de secours et de délai d’expiration qui existent lorsqu’une ou plusieurs adresses IP de serveurs DNS sont configurées en tant que redirecteurs ou redirecteurs conditionnels sur un serveur DNS.

Numéro de la base de connaissances d’origine : 2834250

Résumé

Consultez NET : DNS : délai d’expiration de résolution du client DNS pour plus d’informations sur les délais d’expiration de résolution du client DNS.

Comme pour les clients DNS, la configuration de serveurs DNS avec plusieurs redirecteurs ou redirecteurs conditionnels ajoute une tolérance de panne supplémentaire à votre infrastructure DNS. L’ajout de plusieurs serveurs DNS en tant que redirecteurs ou redirecteurs conditionnels permet de continuer à résoudre les noms DNS en cas de défaillance du seul serveur configuré, de la liaison réseau sous-jacente ou de l’infrastructure réseau de prise en charge.

Toutefois, l’ajout de la tolérance de panne sur les serveurs est encore plus critique, car il existe potentiellement une opération transitive effectuée par un serveur pour le compte d’une pluralité de clients qui sont maintenant suspendus. Les ressources sont ensuite consommées pour des durées incrémentielles plus longues.

Veillez à paramétrer correctement les paramètres si vous souhaitez utiliser au moins trois redirecteurs/redirecteurs conditionnels, car les paramètres par défaut peuvent ne pas être optimisés pour cette quantité élevée de serveurs.

Quel est le comportement par défaut d’un serveur DNS lorsque plus de deux serveurs DNS sont configurés en tant que redirecteurs ?

Pour comprendre comment cela fonctionne, les variables clés sont les suivantes :

  • RecursionTimeout : durée pendant laquelle le dns (Domain Name System) attend que les serveurs distants répondent à une requête cliente récursive avant de mettre fin à la recherche.

    Il est enregistré dans le Registre sous HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\**RecursionTimeout, et configurable via dnscmd /config /RecursionTimeout <value>.

    La valeur par défaut est :

    • 15 secondes sur Windows Server 2003

    • 8 secondes sur Windows Server 2008, 2008 R2 et 2012

      RecursionTimeout est défini au niveau du serveur DNS et est indépendant de la zone spécifique interrogée.

  • ForwardingTimeout : durée pendant laquelle le système DNS (Domain Name System) attend que chaque serveur de la liste des redirecteurs réponde à une requête.

    Il est enregistré dans le registre sous HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\**ForwardingTimeout et configurable via dnscmd /config /ForwardingTimeout <value>.

    La valeur par défaut est :

    • 5 secondes sur Windows Server 2003

    • 3 secondes sur Windows Server 2008, 2008R2 et 2012

      ForwardingTimeout est défini au niveau du serveur DNS et indépendant de la zone spécifique interrogée.

Lorsque le serveur DNS reçoit une requête pour un enregistrement dans une zone pour laquelle il ne fait pas autorité et doit utiliser des redirecteurs, le comportement par défaut est le suivant :

Durée (secondes depuis le début) Action
0 Le client interroge le serveur DNS. Le serveur DNS transfère immédiatement la requête à son premier redirecteur
<forwarding_timeout> Après <forwarding_timeout> secondes, si le premier redirecteur n’a pas répondu, le serveur DNS interroge le deuxième redirecteur.
2 * <forwarding_timeout> +1 Après <forwarding_timeout> +1 seconde, si le deuxième redirecteur n’a pas répondu, le serveur DNS interroge le troisième redirecteur.
... ...
N * <forwarding_timeout> +(N-1) Après <forwarding_timeout> + 1 seconde, si le nième redirecteur n’a pas répondu, le serveur DNS interroge le (N+1)ième redirecteur.

Remarque

En plus du délai configuré, il peut y avoir un délai supplémentaire d’une demi-seconde en raison de la surcharge du système.

L’algorithme s’arrête lorsque le temps écoulé a dépassé la valeur RecursionTimeout

Si recursionTimeout expire, le serveur DNS répond au client en cas d’échec du serveur.

Remarque

Nous n’envoyons pas l’échec du serveur immédiatement après l’expiration de RecursionTimeout, mais uniquement quand il est temps d’essayer le redirecteur suivant.

Si le serveur parvient à contacter tous les redirecteurs avant l’expiration de RecursionTimeout sans obtenir de réponses, il tente d’utiliser les indicateurs racine pour la résolution de noms (paramètre par défaut, sauf si la récursivité a été désactivée au niveau du serveur).

Cela signifie qu’avec les paramètres par défaut, un serveur 2008R2 sera en mesure d’interroger au maximum 3 redirecteurs. Il n’y aura pas assez de temps pour arriver pour utiliser le quatrième redirecteur. En fait, avec les paramètres par défaut sur 2008R2, le serveur :

  • Interroger le premier redirecteur après 0 seconde
  • Interroger le deuxième redirecteur après 3,5 secondes
  • Interroger le troisième redirecteur après 3,5 + 4 = 7,5 secondes

À la huitième seconde, RecursionTimeout expire, nous n’arriverons donc pas au point où le quatrième redirecteur est interrogé (ce qui aurait eu lieu après 3,5 + 4 + 4 = 11,5 secondes).

Nous enverrons la réponse Échec du serveur au bout de 11,5 secondes.

Exemple :

Le serveur DNS avec l’adresse IP 192.168.0.1 est configuré avec cinq redirecteurs (10.0.0.1-10.0.0.5).

Le client a l’adresse IP 10.0.0.31 et interroge Microsoft.com

Sur une capture réseau, nous voyons la sortie moniteur réseau suivante (remarque 10.0.0.4 et 10.0.0.5 n’ont jamais été interrogées) :

Time Time Offset TimeDelta Source Destination Details
6 :33 :51.7507293 0.2731738 0.000000 10.0.0.31 192.168.0.1 DNS :QueryId = 0xF03, QUERY (requête standard), requête de microsoft.com type Host Addr sur la classe Internet
6 :33 :51.7510021 0.2734466 0.0002728 192.168.0.1 10.0.0.1 DNS :QueryId = 0xBD57, QUERY (requête standard), requête pour microsoft.com de type Addr hôte sur la classe Internet
6 :33 :55.2997074 3.8221519 3.5487053 192.168.0.1 10.0.0.2 DNS :QueryId = 0xBD57, QUERY (requête standard), requête pour microsoft.com de type Addr hôte sur la classe Internet
6 :33 :59.2931644 7.8156089 3.9934570 192.168.0.1 10.0.0.3 DNS :QueryId = 0xBD57, QUERY (requête standard), requête pour microsoft.com de type Addr hôte sur la classe Internet
6 :34 :03.3112753 11.8337198 4.0181109 192.168.0.1 10.0.0.31 DNS :QueryId = 0xF03, QUERY (requête standard), Réponse - Échec du serveur

Quel est le comportement par défaut d’un serveur DNS lorsque plus de deux serveurs DNS sont configurés en tant que redirecteurs conditionnels

Comme pour les redirecteurs, il existe deux variables clés pour les redirecteurs conditionnels. Nous avons toujours RecursionTimeout (qui fonctionne au niveau du serveur), mais dans ce scénario, nous utilisons ForwarderTimeout au lieu de ForwardingTimeout. Notez plus particulièrement que ForwarderTimeout fonctionne sur une base de zone et a différentes valeurs par défaut :

  • RecursionTimeout : durée pendant laquelle le dns (Domain Name System) attend que les serveurs distants répondent à une requête cliente récursive avant de mettre fin à la recherche.

    Il est enregistré dans le registre sous HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout

    Il est configurable via dnscmd /config /RecursionTimeout <value>.

    La valeur par défaut est :

    • 15 secondes sur Windows Server 2003

    • 8 secondes sur Windows Server 2008 et 2008R2

      RecursionTimeout est défini au niveau du serveur DNS et est indépendant de la zone spécifique interrogée

  • ForwarderTimeout : durée pendant laquelle le système DNS (Domain Name System) attend que chaque serveur de la liste des redirecteurs conditionnels réponde à une requête.

    Étant donné que les redirecteurs conditionnels sont configurés pour des zones spécifiques, forwarderTimeout dépend également de la zone.

    Il est enregistré dans le Registre sous HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\Zones\ <zone_name>\ForwarderTimeout.

    La valeur par défaut est de 5 secondes sur Windows Server 2003, 2008, 2008R2 et 2012.

    Il s’agit également du paramètre que vous pouvez voir dans l’interface utilisateur utilisateur des redirecteurs conditionnels.

Lorsque le serveur DNS reçoit une requête pour un enregistrement dans une zone pour laquelle il ne fait pas autorité et qu’il est configuré pour utiliser des redirecteurs conditionnels pour celui-ci, le comportement par défaut est le suivant :

Durée (secondes depuis le début) Action
0 Le client interroge le serveur DNS. Le serveur DNS transfère immédiatement la requête à son premier redirecteur conditionnel
<forwarder_timeout> Après <forwarder_timeout> secondes, si le premier redirecteur conditionnel n’a pas répondu, le serveur DNS interroge le deuxième redirecteur conditionnel
2 * <forwarder_timeout> +1 Après <forwarder_timeout> +1 secondes supplémentaires, si le deuxième redirecteur conditionnel n’a pas répondu, le serveur DNS interroge le troisième redirecteur conditionnel
... ...
N * <forwarder_timeout> +(N-1) Après <forwarder_timeout> +1 secondes supplémentaires, si le nième redirecteur conditionnel n’a pas répondu, le serveur DNS interroge le (N+1)ième redirecteur conditionnel

Remarque

En plus du délai configuré, il peut y avoir un délai supplémentaire d’une demi-seconde en raison de la surcharge du système

L’algorithme s’arrête lorsque le temps écoulé a dépassé la valeur RecursionTimeout

Si recursionTimeout expire, le serveur DNS répond au client en cas d’échec du serveur.

Remarque

Nous n’envoyons pas l’échec du serveur immédiatement après l’expiration de RecursionTimeout , mais uniquement quand il est temps d’essayer le redirecteur conditionnel suivant.

Cela signifie qu’avec les paramètres par défaut, un serveur 2008 R2 peut interroger au maximum 2 redirecteurs conditionnels. Il n’y aura pas assez de temps pour arriver pour utiliser le troisième redirecteur conditionnel. En fait, avec les paramètres par défaut sur 2008R2, le serveur :

  • Interroger le premier redirecteur après 0 seconde
  • Interroger le deuxième redirecteur après 5,5 secondes

À la huitième seconde, RecursionTimeout expire, nous n’arriverons donc pas au point où le troisième redirecteur conditionnel est interrogé (ce qui se serait produit après 5,5 + 6 = 11,5 secondes).

Nous enverrons la réponse Échec du serveur au bout de 11,5 secondes.

Exemple :

Le serveur DNS avec l’adresse IP 192.168.0.1 est configuré avec cinq redirecteurs conditionnels (10.0.0.1-10.0.0.5) pour la zone Microsoft.com.

Le client a l’adresse IP 10.0.0.31 et interroge Microsoft.com.

Sur une capture réseau, nous voyons la sortie moniteur réseau suivante (remarque 10.0.0.3, 10.0.0.4 et 10.0.0.5 jamais interrogée) :

Time Time Offset TimeDelta Source Destination Details
6 :50 :32.5481816 0.4306857 0.000000 10.0.0.33 192.168.0.1 DNS :QueryId = 0x245A, QUERY (requête standard), requête pour microsoft.com de type Addr hôte sur la classe Internet
6 :50 :32.5484341 0.4309382 0.0002525 192.168.0.1 10.0.0.1 DNS :QueryId = 0x252B, QUERY (requête standard), requête pour microsoft.com de type Host Addr sur la classe Internet
6 :50 :38.1695163 6.0520204 5.6210822 192.168.0.1 10.0.0.2 DNS :QueryId = 0x252B, QUERY (requête standard), requête pour microsoft.com de type Addr hôte sur la classe Internet
6 :50 :44.1856567 12.0681608 6.0161404 192.168.0.1 10.0.0.33 DNS :QueryId = 0x245A, QUERY (requête standard), Réponse - Échec du serveur

References