Partager via


Redirecteurs et redirecteurs conditionnels délai d’expiration de résolution

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 base de connaissances d’origine : 2834250

Résumé

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 aux noms DNS de continuer à être résolus en cas d’échecs 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 que certains serveurs effectuent pour le compte d’une pluralité de clients qui sont maintenant suspendus. Les ressources sont ensuite consommées pendant des temps plus longs de façon incrémentielle.

Veillez à paramétrer correctement les paramètres si vous souhaitez utiliser trois redirecteurs ou plus/redirecteurs conditionnels, car les paramètres par défaut peuvent ne pas être optimisés pour cette grande quantité 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 système de noms de domaine (DNS) attend que les serveurs distants répondent à une requête cliente récursive avant de terminer la recherche.

    Il est enregistré dans le Registre sous HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout, et configurable via dnscmd /config /RecursionTimeout <value>. Vous pouvez le vérifier via l’applet de commande Get-DnsServerRecursionPowerShell.

    La valeur par défaut est de 8 secondes dans Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 et Windows Server 2022.

    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 de noms de domaine (DNS) attend chaque serveur de la liste des redirecteurs pour répondre à une requête.

    Il est enregistré dans le Registre sous HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\ForwardingTimeout et configurable via dnscmd /config /ForwardingTimeout <value>. Cela peut également être vérifié par le biais de l’applet de commande Get-DnsServerForwarderPowerShell.

    La valeur par défaut est de 3 secondes dans Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 et Windows Server 2022.

    ForwardingTimeout est défini au niveau du serveur DNS et est 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 :

Temps (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 plus de secondes, 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 plus de secondes, si le Nième redirecteur n’a pas répondu, le serveur DNS interroge le (N+1)ième redirecteur.

Note

En plus du délai configuré, il peut y avoir un délai supplémentaire de moitié de seconde en raison de la surcharge 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 avec une défaillance du serveur.

Note

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 racines 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 DNS Windows peut interroger au maximum trois redirecteurs. Il n’y aura pas assez de temps pour arriver à utiliser le quatrième redirecteur. En fait, avec les paramètres par défaut, le serveur DNS Windows effectue les options suivantes :

  • Interroger le premier redirecteur après 0 secondes
  • 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’atteindreons donc pas le point où le quatrième redirecteur est interrogé (ce qui aurait eu lieu après 3,5 + 4 + 4 = 11,5 secondes).

Nous allons envoyer la réponse d’échec du serveur après 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 de moniteur réseau suivante (remarque 10.0.0.4 et 10.0.0.5 jamais interrogée) :

Détails de la destination source Time Offset TimeDelta
6:33:51.7507293 0.2731738 0.0000000 10.0.0.31 192.168.0.1 DNS :QueryId = 0xF03, QUERY (requête standard), Requête pour microsoft.com le complément hôte de type sur la classe Internet
6:33:51.7510021 0.2734466 0.0002728 192.168.0.1 1 10.0.1 DNS :QueryId = 0xBD57, QUERY (requête standard), Requête pour microsoft.com le module complémentaire hôte de type sur la classe Internet
6:33:55.2997074 3.8221519 3.5487053 192.168.0.1 10.0.0.0.2 DNS :QueryId = 0xBD57, QUERY (requête standard), Requête pour microsoft.com le complément hôte de type sur la classe Internet Internet
6:33:59.2931644 7.8156089 3.9934570 192.168.0.1 10.0.0.0.3 DNS :QueryId = 0xBD57, QUERY (requête standard), Requête pour microsoft.com le module complémentaire hôte de type sur la classe Internet
6:34:03.3112753 11.8337198 4.0181109 192.168.0.1 1 10.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 spécifiquement que ForwarderTimeout fonctionne sur une zone et a des valeurs par défaut différentes :

  • RecursionTimeout : durée pendant laquelle le système de noms de domaine (DNS) attend que les serveurs distants répondent à une requête cliente récursive avant de terminer 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 de 8 secondes dans Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 et Windows Server 2022.

    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 chaque serveur dans la liste des redirecteurs conditionnels pour répondre à 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 dans Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 et Windows Server 2022.

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

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

Temps (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 plus de secondes, 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 plus de secondes, si le Nième redirecteur conditionnel n’a pas répondu, le serveur DNS interroge le (N+1)ième redirecteur conditionnel.

Note

En plus du délai configuré, il peut y avoir un délai supplémentaire de moitié de seconde en raison de la surcharge 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 avec une défaillance du serveur.

Note

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 DNS Windows peut interroger au maximum deux redirecteurs conditionnels. Il n’y aura pas assez de temps pour arriver à utiliser le troisième redirecteur conditionnel. En fait, avec les paramètres par défaut, le serveur DNS Windows effectue les options suivantes :

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

À la huitième seconde, RecursionTimeout expire, nous n’atteindreons donc pas le point où le troisième redirecteur conditionnel est interrogé (qui aurait eu lieu après 5,5 + 6 = 11,5 secondes).

Nous allons envoyer la réponse d’échec du serveur après 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 de moniteur réseau suivante (remarque 10.0.0.3, 10.0.0.4 et 10.0.0.5 jamais interrogée) :

Détails de la destination source Time Offset TimeDelta
6:50:32.5481816 0.4306857 0.000000 10.0.0.0.33 192.168.0.1 DNS :QueryId = 0x245A, QUERY (requête standard), Requête pour microsoft.com le complément hôte de type sur la classe Internet
6:50:32.5484341 0.4309382 0.0002525 192.168.0.1 1 10.0.1 DNS :QueryId = 0x252B, QUERY (requête standard), Requête pour microsoft.com le module complémentaire hôte de type sur la classe Internet
6:50:38.1695163 6.0520204 5.6210822 192.168.0.1 10.0.0.0.2 DNS :QueryId = 0x252B, QUERY (requête standard), Requête pour microsoft.com le complément hôte de type sur la classe Internet
6:50:44.1856567 12.0681608 6.0161404 192.168.0.1 1 10.0.33 DNS :QueryId = 0x245A, QUERY (requête standard), Réponse - Échec du serveur

References