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

In diesem Artikel wird das Fallback- und Timeoutverhalten beschrieben, das vorhanden ist, wenn mindestens eine IP-Adresse des DNS-Servers als Weiterleitungen oder bedingte Weiterleitungen auf einem DNS-Server konfiguriert ist.

Ursprüngliche KB-Nummer: 2834250

Zusammenfassung

Weitere Informationen zu Timeouts für die DNS-Clientauflösung finden Sie unter NET: DNS: DNS-Clientauflösungstimeouts .

Ähnlich wie bei DNS-Clients fügt das Konfigurieren von DNS-Servern mit mehr als einer Weiterleitung oder bedingten Weiterleitung Ihrer DNS-Infrastruktur zusätzliche Fehlertoleranz hinzu. Wenn Sie mehrere DNS-Server als Weiterleitungen oder bedingte Weiterleitungen hinzufügen, können DNS-Namen bei Ausfällen des einzigen konfigurierten Servers, der zugrunde liegenden Netzwerkverbindung oder der unterstützenden Netzwerkinfrastruktur weiterhin 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 Namen einer Vielzahl von Clients ausführt, die jetzt hängen. Ressourcen werden dann inkrementell länger verbraucht.

Stellen Sie sicher, dass Sie die Parameter ordnungsgemäß optimieren, wenn Sie drei oder mehr Weiterleitungen/bedingte Weiterleitungen verwenden möchten, da die Standardeinstellungen möglicherweise nicht für diese hohe Anzahl von Servern optimiert sind.

Wie lautet 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 die Suche beendet wird.

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

    Der Standardwert lautet:

    • 15 Sekunden unter Windows Server 2003

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

      RecursionTimeout wird auf DNS-Serverebene definiert und ist unabhängig von der spezifischen abgefragten Zone.

  • ForwardingTimeout : Gibt an, wie lange das Domain Name System (DNS) wartet, bis jeder Server in der Liste in Weiterleitungen auf eine Abfrage antwortet.

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

    Der Standardwert lautet:

    • 5 Sekunden unter Windows Server 2003

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

      ForwardingTimeout wird auf DNS-Serverebene definiert und ist unabhängig von der spezifischen abgefragten Zone.

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

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

Hinweis

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

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

Wenn RecursionTimeout abläuft, antwortet der DNS-Server dem Client mit einem Serverfehler.

Hinweis

Der Serverfehler wird nicht unmittelbar nach ablaufen des RecursionTimeout-Vorgangs gesendet, sondern nur, wenn es an der Zeit ist, die nächste Weiterleitung zu versuchen.

Wenn der Server es schafft, 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 ein 2008R2-Server mit Standardeinstellungen maximal 3 Weiterleitungen abfragen kann. Es bleibt nicht genügend Zeit, um die vierte Weiterleitung zu verwenden. Mit den Standardeinstellungen auf 2008R2 wird 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 geschehen wäre).

Die Antwort Serverfehler wird dann nach 11,5 Sekunden gesendet.

Beispiel:

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

Der Client verfügt über die IP-Adresse 10.0.0.31 und fragt nach ab. Microsoft.com

Bei einer Netzwerkerfassung wird die folgende Ausgabe des Netzwerkmonitors angezeigt (Hinweis: 10.0.0.4 und 10.0.0.5 nie abgefragt):

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 (Standardabfrage), Abfrage für microsoft.com vom Typ Host Addr in der Internet-Klasse
6:33:51.7510021 0.2734466 0.0002728 192.168.0.1 10.0.0.1 DNS:QueryId = 0xBD57, QUERY (Standardabfrage), Abfrage für microsoft.com vom Typ Host Addr in der Internet-Klasse
6:33:55.2997074 3.8221519 3.5487053 192.168.0.1 10.0.0.2 DNS:QueryId = 0xBD57, QUERY (Standardabfrage), Abfrage für microsoft.com vom Typ Host Addr in der Internetklasse
6:33:59.2931644 7.8156089 3.9934570 192.168.0.1 10.0.0.3 DNS:QueryId = 0xBD57, QUERY (Standardabfrage), Abfrage für microsoft.com vom Typ Host Addr in der Internet-Klasse
6:34:03.3112753 11.8337198 4.0181109 192.168.0.1 10.0.31 DNS:QueryId = 0xF03, QUERY (Standardabfrage), Antwort – Serverfehler

Wie lautet 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 auf Zonenbasis ausgeführt wird und unterschiedliche Standardwerte aufweist:

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

    Sie wird in der Registrierung unter gespeichert. HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout

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

    Der Standardwert lautet:

    • 15 Sekunden unter Windows Server 2003

    • 8 Sekunden unter Windows Server 2008 und 2008R2

      RecursionTimeout wird auf DNS-Serverebene definiert und ist unabhängig von der spezifischen abgefragten Zone.

  • ForwarderTimeout : Gibt an, wie lange das Dns (Domain Name System) wartet, bis jeder Server in der Liste der bedingten Weiterleitungen auf eine Abfrage antwortet.

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

    Sie wird in der Registrierung unter HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\Zones\ <zone_name>\ForwarderTimeoutgespeichert.

    Der Standardwert beträgt unter Windows Server 2003, 2008, 2008R2 und 2012 5 Sekunden.

    Dies ist auch die Einstellung, die Sie in der GUI für bedingte Weiterleitungen sehen können.

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

Zeit (Sekunden seit dem Start) Aktion
0 Der Client fragt den DNS-Server ab. Der DNS-Server leitet die Abfrage sofort an die erste bedingte Weiterleitung weiter.
<forwarder_timeout> Wenn <die erste bedingte Weiterleitung nach forwarder_timeout> Sekunden nicht antwortet, fragt der DNS-Server die zweite bedingte Weiterleitung ab.
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)te bedingte Weiterleitung ab, wenn die N-te bedingte Weiterleitung nicht beantwortet wurde.

Hinweis

Zusätzlich zur konfigurierten Verzögerung kann es aufgrund des Systemmehraufwands zu einer zusätzlichen Halben-Sekunde-Verzögerung kommen.

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

Wenn RecursionTimeout abläuft, antwortet der DNS-Server dem Client mit einem Serverfehler.

Hinweis

Der Serverfehler wird nicht unmittelbar nach ablaufen des RecursionTimeout-Vorgangs gesendet, sondern nur, wenn die nächste bedingte Weiterleitung ausprobiert werden soll.

Dies bedeutet, dass ein 2008 R2-Server mit Standardeinstellungen höchstens zwei bedingte Weiterleitungen abfragen kann. Es ist nicht genug Zeit, um die dritte bedingte Weiterleitung zu verwenden. Mit den Standardeinstellungen auf 2008R2 wird 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 geschehen wäre).

Die Antwort Serverfehler wird dann nach 11,5 Sekunden gesendet.

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.comkonfiguriert.

Der Client verfügt über die IP-Adresse 10.0.0.31 und fragt nach Microsoft.comab.

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

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 (Standardabfrage), Abfrage für microsoft.com vom Typ Host Addr in der Internetklasse
6:50:32.5484341 0.4309382 0.0002525 192.168.0.1 10.0.0.1 DNS:QueryId = 0x252B, QUERY (Standardabfrage), Abfrage für microsoft.com vom Typ Host Addr in der Internetklasse
6:50:38.1695163 6.0520204 5.6210822 192.168.0.1 10.0.0.2 DNS:QueryId = 0x252B, QUERY (Standardabfrage), Abfrage für microsoft.com vom Typ Host Addr in der Internetklasse
6:50:44.1856567 12.0681608 6.0161404 192.168.0.1 10.0.33 DNS:QueryId = 0x245A, QUERY (Standardabfrage), Antwort – Serverfehler

References