NET: DNS: Timeouts für die Auflösung von Weiterleitungen und bedingten Weiterleitungen

In diesem Artikel wird das Fallback- und Timeoutverhalten beschrieben, wenn eine oder mehrere DNS-Server-IPs als Weiterleitungen oder bedingte Weiterleitungen auf einem DNS-Server konfiguriert sind.

Ursprüngliche Produktversion:   Windows Server 2012 R2
Ursprüngliche KB-Nummer:   2834250

Zusammenfassung

Überprüfen Sie NET: DNS: Timeouts für die DNS-Clientauflösung, um weitere Informationen zu Timeouts für die Dns-Clientauflösung zu erhalten.

Ähnlich wie bei DNS-Clients wird durch das Konfigurieren von DNS-Servern mit mehr als einer Weiterleitung oder einer bedingten Weiterleitung zusätzliche Fehlertoleranz für Ihre DNS-Infrastruktur erhöht. Durch das Hinzufügen mehrerer DNS-Server als Weiterleitungen oder bedingte Weiterleitungen können die DNS-Namen auch bei Fehlern des einzigen konfigurierten Servers, der zugrunde liegenden Netzwerkverbindung oder der unterstützenden Netzwerkinfrastruktur aufgelöst werden.

Das Hinzufügen von Fehlertoleranz auf Servern ist jedoch noch wichtiger, da es möglicherweise einen transitiven Vorgang gibt, den ein Server im Auftrag einer Vielzahl von Clients ausgeführt, die jetzt hängen. Ressourcen werden dann inkrementell länger genutzt.

Stellen Sie sicher, dass die Parameter korrekt optimiert werden, wenn Sie drei oder mehr Weiterleitungen/bedingte Weiterleitungen verwenden möchten, da die Standardeinstellungen möglicherweise nicht für diese hohe Servermenge optimiert sind.

Was ist das Standardverhalten eines DNS-Servers, wenn mehr als zwei DNS-Server als Weiterleitungen konfiguriert sind?

Um zu verstehen, wie dies funktioniert, sind die wichtigsten Variablen:

  • RecursionTimeout – Gibt an, wie lange das Domain Name System (DNS) wartet, bis Remoteserver auf eine rekursive Clientabfrage reagieren, bevor sie die Suche beenden.

    Sie wird in der Registrierung unter und HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\**RecursionTimeout konfigurierbar via dnscmd /config /RecursionTimeout <value> gespeichert.

    Der Standardwert ist:

    • 15 Sekunden unter Windows Server 2003

    • 8 Sekunden unter Windows Server 2008, 2008 R2 und 2012

      RecursionTimeout wird auf der Ebene des DNS-Servers definiert und ist unabhängig von der abgefragten Zone.

  • ForwardingTimeout – Gibt an, wie lange das Domain Name System (DNS) auf jeden Server in der Liste in "Forwarders" wartet, um auf eine Abfrage zu antworten.

    Es wird in der Registrierung unter gespeichert HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\**ForwardingTimeout und kann über konfiguriert dnscmd /config /ForwardingTimeout <value> werden.

    Der Standardwert ist:

    • 5 Sekunden unter Windows Server 2003

    • 3 Sekunden unter Windows Server 2008, 2008R2 und 2012

      Das ForwardingTimeout wird auf der Ebene des DNS-Servers definiert und ist unabhängig von der jeweiligen abgefragten Zone.

Wenn der DNS-Server eine Abfrage für einen Eintrag in einer Zone empfängt, für die er nicht autorisierend ist und Weiterleitungen verwenden muss, ist das Standardverhalten wie folgt:

Zeit (Sekunden seit dem Start) Aktion
0 Der Client fragt den DNS-Server ab. Der DNS-Server gibt die Abfrage sofort an die erste Weiterleitung weiter.
<forwarding_timeout> Nach <forwarding_timeout> Sekunden fragt der DNS-Server die zweite Weiterleitung ab, wenn die erste Weiterleitung nicht antwortet.
2 * <forwarding_timeout> +1 Nach <forwarding_timeout> +1 weitere Sekunden fragt der DNS-Server die dritte Weiterleitung ab, wenn die zweite Weiterleitung nicht antwortet.
... ...
N * <forwarding_timeout> +(N-1) Nach <forwarding_timeout> + 1 weitere Sekunden fragt der DNS-Server die (N+1)-Weiterleitung ab, wenn die N.S.-Weiterleitung nicht geantwortet hat.

Hinweis

Zusätzlich zur konfigurierten Verzögerung kann es aufgrund des Systemaufwands zu einer zusätzlichen Verzögerung von einer halben Sekunde kommen.

Der Algorithmus wird beendet, wenn die verstrichene Zeit den Wert "RecursionTimeout" überschritten hat.

Wenn "RecursionTimeout" abläuft, antwortet der DNS-Server mit einem Serverfehler an den Client zurück.

Hinweis

Der Serverfehler wird nicht unmittelbar nach dem Ablauf von "RecursionTimeout" gesendet, sondern nur, wenn es an der Zeit ist, die nächste Weiterleitung auszuprobieren.

Wenn der Server es verwaltet, alle Weiterleitungen zu kontaktieren, bevor recursionTimeout abläuft, ohne Antworten zu erhalten, versucht er, die Stammhinweise für die Namensauflösung zu verwenden (Standardeinstellung, es sei denn, die Rekursion wurde auf Serverebene deaktiviert).

Dies bedeutet, dass bei Standardeinstellungen ein Server mit 2008R2 mindestens drei Weiterleitungen abfragen kann. Es bleibt nicht genügend Zeit, um die vierte Weiterleitung zu verwenden. Mit den Standardeinstellungen für 2008R2 hat der Server tatsächlich:

  • Abfragen der ersten Weiterleitung nach 0 Sekunden
  • Abfragen der zweiten Weiterleitung nach 3,5 Sekunden
  • Abfragen der dritten Weiterleitung nach 3,5 + 4 = 7,5 Sekunden

In der achten Sekunde läuft RecursionTimeout ab, sodass wir nicht den Punkt erreichen, an dem die vierte Weiterleitung abgefragt wird (was nach 3,5 + 4 + 4 = 11,5 Sekunden passiert wäre).

Wir senden die Antwort auf Serverfehler nach 11,5 Sekunden.

Beispiel:

Der DNS-Server mit der IP-Adresse 192.168.0.1 ist mit fünf Weiterleitungen konfiguriert (10.0.0.1-10.0.0.5).

Der Client hat die IP-Adresse 10.0.0.31 und wird abgefragt. Microsoft.com

Bei einer Netzwerkaufnahme wird die folgende Netzwerkmonitorausgabe angezeigt (Hinweis: 10.0.0.4 und 10.0.0.5 werden nie abgefragt):

Details zum Zeitzeitoffset des Zeitdelta-Quellziels
6:33:51.7507293 0.2731738 0.0000000 10.0.0.31 192.168.0.1 DNS:QueryId = 0xF03, QUERY (Standardabfrage), Abfrage nach dem Typ "Host-Addr" im Internet der Klasse microsoft.com "Klasse"
6:33:51.7510021 0.2734466 0.0002728 192.168.0.1 10.0.0.1 DNS:QueryId = 0xBD57, QUERY (Standard-Abfrage), Abfrage nach dem Typ microsoft.com "Host-Addr" im Kurs "Internet"
6:33:55.2997074 3.8221519 3.5487053 192.168.0.1 10.0.0.2 DNS:QueryId = 0xBD57, QUERY (Standard-Abfrage), Abfrage nach dem Typ microsoft.com "Host-Addr" im Kurs "Internet"
6:33:59.2931644 7.8156089 3.9934570 192.168.0.1 10.0.0.3 DNS:QueryId = 0xBD57, QUERY (Standard-Abfrage), Abfrage nach dem Typ microsoft.com "Host-Addr" im Kurs "Internet"
6:34:03.3112753 11.8337198 4.0181109 192.168.0.1 10.0.0.31 DNS:QueryId = 0xF03, QUERY (Standard query), Response - Server failure

Was ist das Standardverhalten eines DNS-Servers, wenn mehr als zwei DNS-Server als bedingte Weiterleitungen konfiguriert sind?

Ähnlich wie bei Weiterleitungen gibt es zwei Schlüsselvariablen für bedingte Weiterleitungen. Wir haben weiterhin RecursionTimeout (das auf Serverebene ausgeführt wird), aber in diesem Szenario verwenden wir ForwarderTimeout anstelle von ForwardingTimeout. Beachten Sie insbesondere, dass ForwarderTimeout zonenspezifisch ausgeführt wird und unterschiedliche Standardwerte hat:

  • RecursionTimeout – Gibt an, wie lange das Domain Name System (DNS) wartet, bis Remoteserver auf eine rekursive Clientabfrage reagieren, bevor sie die Suche beenden.

    Es wird in der Registrierung unter HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout

    Er kann über konfiguriert dnscmd /config /RecursionTimeout <value> werden.

    Der Standardwert ist:

    • 15 Sekunden unter Windows Server 2003

    • 8 Sekunden unter Windows Server 2008 und 2008R2

      RecursionTimeout wird auf der Ebene des DNS-Servers definiert und ist unabhängig von der abgefragten Zone.

  • ForwarderTimeout – Gibt an, wie lange das Domain Name System (DNS) auf jeden Server in der Liste der bedingten Weiterleitungen wartet, um auf eine Abfrage zu reagieren.

    Da bedingte Weiterleitungen für bestimmte Zonen konfiguriert sind, ist das ForwarderTimeout ebenfalls zonenabhängig.

    Es wird in der Registrierung unter HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\DNS Server\Zones\ <zone_name>\ForwarderTimeout gespeichert.

    Der Standardwert ist 5 Sekunden unter Windows Server 2003, 2008, 2008R2 und 2012.

    Dies ist auch die Einstellung, die sie in der GUI der bedingten Weiterleitung sehen können.

Wenn der DNS-Server eine Abfrage für einen Eintrag in einer Zone empfängt, für die er nicht autorisierend ist, und für den er für die Verwendung bedingter Weiterleitungen konfiguriert ist, ist das Standardverhalten wie folgt:

Zeit (Sekunden seit dem Start) Aktion
0 Der Client fragt den DNS-Server ab. Der DNS-Server gibt die Abfrage sofort an die erste bedingte Weiterleitung weiter.
<forwarder_timeout> Nach <forwarder_timeout> Sekunden fragt der DNS-Server die zweite bedingte Weiterleitung ab, wenn die erste bedingte Weiterleitung nicht antwortet.
2 * <forwarder_timeout> +1 Nach <forwarder_timeout> +1 weiteren Sekunden fragt der DNS-Server die dritte bedingte Weiterleitung ab, wenn die zweite bedingte Weiterleitung nicht antwortet.
... ...
N * <forwarder_timeout> +(N-1) Nach <forwarder_timeout> +1 weiteren Sekunden fragt der DNS-Server die (N+1)n bedingte Weiterleitung ab, wenn die n-n-bedingte Weiterleitung nicht geantwortet hat.

Hinweis

Zusätzlich zu der konfigurierten Verzögerung kann es aufgrund des Systemaufwands zu einer zusätzlichen Verzögerung von einer halben Sekunde kommen.

Der Algorithmus wird beendet, wenn die verstrichene Zeit den Wert "RecursionTimeout" überschritten hat.

Wenn "RecursionTimeout" abläuft, antwortet der DNS-Server mit einem Serverfehler an den Client zurück.

Hinweis

Der Serverfehler wird nicht unmittelbar nach dem Ablauf von "RecursionTimeout" gesendet, sondern nur, wenn die nächste bedingte Weiterleitung versucht wird.

Dies bedeutet, dass ein Server mit 2008 R2 bei Standardeinstellungen bis zu zwei bedingte Weiterleitungen abfragen kann. Es bleibt nicht genügend Zeit, um die dritte bedingte Weiterleitung zu verwenden. Mit den Standardeinstellungen für 2008R2 hat der Server tatsächlich:

  • Abfragen der ersten Weiterleitung nach 0 Sekunden
  • Abfragen der zweiten Weiterleitung nach 5,5 Sekunden

In der achten Sekunde läuft RecursionTimeout ab, sodass wir nicht den Punkt erreichen, an dem die dritte bedingte Weiterleitung abgefragt wird (was nach 5,5 + 6 = 11,5 Sekunden passiert wäre).

Wir senden die Antwort auf Serverfehler nach 11,5 Sekunden.

Beispiel:

Der DNS-Server mit der IP-Adresse 192.168.0.1 ist mit fünf bedingten Weiterleitungen (10.0.0.1-10.0.0.5) für die Zone Microsoft.com konfiguriert.

Der Client hat die IP-Adresse 10.0.0.31 und wird Microsoft.com abgefragt.

Bei einer Netzwerkaufnahme wird die folgende Netzwerkmonitorausgabe angezeigt (Hinweis 10.0.0.3, 10.0.0.4 und 10.0.0.5 nie abgefragt):

Details zum Zeitzeitoffset des Zeitdelta-Quellziels
6:50:32.5481816 0.4306857 0.0000000 10.0.0.33 192.168.0.1 DNS:QueryId = 0x245A, QUERY (Standard-Abfrage), Abfrage des Typs microsoft.com "Host-Addr" im Klassen-Internet
6:50:32.5484341 0.4309382 0.0002525 192.168.0.1 10.0.0.1 DNS:QueryId = 0x252B, QUERY (Standard-Abfrage), Abfrage nach dem Typ microsoft.com "Host-Addr" im Kurs "Internet"
6:50:38.1695163 6.0520204 5.6210822 192.168.0.1 10.0.0.2 DNS:QueryId = 0x252B, QUERY (Standard-Abfrage), Abfrage nach typ microsoft.com Host Addr on class Internet
6:50:44.1856567 12.0681608 6.0161404 192.168.0.1 10.0.0.33 DNS:QueryId = 0x245A, QUERY (Standard-Abfrage), Antwort - Serverfehler

Informationsquellen