Timeouts für Weiterleitungen und bedingte Weiterleitungen
In diesem Artikel wird das Fallback- und Timeoutverhalten beschrieben, das vorhanden ist, wenn mindestens eine DNS-Server-IPs als Weiterleitungen oder bedingte Weiterleitungen auf einem DNS-Server konfiguriert sind.
Ursprüngliche KB-Nummer: 2834250
Übersicht
Ähnlich wie BEI DNS-Clients fügt die Konfiguration von DNS-Servern mit mehr als einem Weiterleitungs- oder bedingten Weiterleitungsserver ihrer DNS-Infrastruktur zusätzliche Fehlertoleranz hinzu. Wenn Sie mehrere DNS-Server als Weiterleitungen oder bedingte Weiterleitungen hinzufügen, können DNS-Namen im Falle von Fehlern 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 potenziell einen transitiven Vorgang gibt, den einige Server im Auftrag einer Vielzahl von Clients ausführen, die jetzt hängen. Ressourcen werden dann für inkrementelle längere Zeiten verbraucht.
Stellen Sie sicher, dass Sie die Parameter richtig optimieren, wenn Sie drei oder mehr Weiterleitungen/bedingte Weiterleitungen verwenden möchten, da die Standardeinstellungen für diese hohe Servermenge möglicherweise nicht 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 schlüsselvariablen:
RecursionTimeout : Wie lange das Domain Name System (DNS) auf Remoteserver wartet, um auf eine rekursive Clientabfrage zu reagieren, bevor die Suche beendet wird.
Sie wird in der Registrierung unter
HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout
, und konfigurierbar überdnscmd /config /RecursionTimeout <value>
. Dies kann über das PowerShell-CmdletGet-DnsServerRecursion
überprüft werden.Der Standardwert beträgt 8 Sekunden in Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 und Windows Server 2022.
Das RecursionTimeout wird auf DNS-Serverebene definiert und ist unabhängig von der spezifischen Zone, die abgefragt wird.
ForwardingTimeout – wie lange das Domain Name System (DNS) auf jeden Server in der Liste in Weiterleitungen wartet, um auf eine Abfrage zu antworten.
Sie wird in der Registrierung gespeichert
HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\ForwardingTimeout
und kann überdnscmd /config /ForwardingTimeout <value>
diese konfiguriert werden. Dies kann auch über das PowerShell-CmdletGet-DnsServerForwarder
überprüft werden.Der Standardwert beträgt 3 Sekunden in Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 und Windows Server 2022.
Das ForwardingTimeout wird auf DNS-Serverebene definiert und ist unabhängig von der spezifischen Zone, die abgefragt wird.
Wenn der DNS-Server eine Abfrage für einen Eintrag in einer Zone empfängt, für die er nicht autoritativ ist und Weiterleitungen verwenden muss, lautet das Standardverhalten wie folgt:
Zeit (Sekunden seit Dem Start) | Aktion |
---|---|
0 | Client fragt den DNS-Server ab. Der DNS-Server leitet die Abfrage sofort an die erste Weiterleitung weiter. |
<forwarding_timeout> | Wenn <die erste Weiterleitung nicht antwortet, fragt der DNS-Server nach forwarding_timeout> Sekunden den zweiten Weiterleitungsserver ab. |
2 * <forwarding_timeout> +1 | Nach <forwarding_timeout> +1 weitere Sekunden, wenn der zweite Weiterleitung nicht antwortet, fragt der DNS-Server den dritten Weiterleitungsserver ab. |
... | ... |
N * <forwarding_timeout> +(N-1) | Nach <forwarding_timeout> + 1 mehr Sekunden, wenn die Nth-Weiterleitung nicht antwortet, fragt der DNS-Server die (N+1)-Weiterleitung ab. |
Notiz
Zusätzlich zur konfigurierten Verzögerung kann es aufgrund des Systemaufwands eine zusätzliche halb zweite Verzögerung geben.
Der Algorithmus stoppt, wenn die verstrichene Zeit den RecursionTimeout-Wert überschritten hat.
Wenn das RecursionTimeout abläuft, antwortet der DNS-Server mit einem Serverfehler zurück auf den Client.
Notiz
Der Serverfehler wird nicht unmittelbar nach Ablauf des RecursionTimeout gesendet, sondern nur, wenn es an der Zeit ist, die nächste Weiterleitung zu testen.
Wenn der Server alle Weiterleitungen kontaktiert, bevor recursionTimeout abläuft, ohne Antworten zu erhalten, wird versucht, die Stammhinweise für die Namensauflösung zu verwenden (Standardeinstellung, es sei denn, rekursion wurde auf Serverebene deaktiviert).
Dies bedeutet, dass ein Windows-DNS-Server mit den Standardeinstellungen höchstens drei Weiterleitungen abfragen kann. Es wird nicht genug Zeit geben, um den vierten Weiterleitungsgeber zu verwenden. Mit Den Standardeinstellungen wird der Windows-DNS-Server tatsächlich folgendes tun:
- Abfrage 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
Bei der achten Sekunde läuft RecursionTimeout ab, daher erreichen wir nicht den Punkt, an dem der vierte Forwarder abgefragt wird (was nach 3,5 + 4 + 4 = 11,5 Sekunden geschehen wäre).
Die Serverfehlerantwort wird dann nach 11,5 Sekunden gesendet.
Beispiel:
DNS-Server mit IP-Adresse 192.168.0.1 ist mit fünf Weiterleitungen konfiguriert (10.0.0.1-10.0.0.5).
Der Client verfügt über die IP-Adresse 10.0.0.31 und fragt nach Microsoft.com
.
Bei einer Netzwerkaufnahme wird die folgende Netzwerküberwachungsausgabe angezeigt (Hinweis 10.0.0.4 und 10.0.0.5 wurde nie abgefragt):
Time Time Offset TimeDelta Source Destination Details
6:33:51.7507293 0.2731738 0.00000000 10.0.31 192.168.0.1 DNS:QueryId = 0xF03, QUERY (Standardabfrage), Abfrage desmicrosoft.com
Typs Host-Addr im Klassen-Internet
6:33:51.7510021 0.2734466 0.0002728 192.168.0.1 10.0.1 DNS:QueryId = 0xBD57, QUERY (Standardabfrage), Abfrage desmicrosoft.com
Typs Host-Addr im Internet der Klasse Internet
6:33:55.2997074 3.8221519 3.5487053 192.168.0.1 1 10.0.2 DNS:QueryId = 0xBD57, QUERY (Standardabfrage), Abfrage desmicrosoft.com
Typs Host-Addr im Internet der Klasse Internet
6:33:59.2931644 7.8156089 3.9934570 192.168.0.1 1 10.0.3 DNS:QueryId = 0xBD57, QUERY (Standardabfrage), Abfrage desmicrosoft.com
Typs Host-Addr in der Klasse Internet
6:34:03.3112753 11.8337198 4.0181109 192.168.0.1 1 10.0.0.31 DNS:QueryId = 0xF03, QUERY (Standardabfrage), Antwort – Serverfehler
Was ist das Standardverhalten eines DNS-Servers, wenn mehr als zwei DNS-Server als bedingte Weiterleitungen konfiguriert werden
Ä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 funktioniert und unterschiedliche Standardwerte aufweist:
RecursionTimeout : Wie lange das Domain Name System (DNS) auf Remoteserver wartet, um auf eine rekursive Clientabfrage zu reagieren, bevor die Suche beendet wird.
Sie wird in der Registrierung unter
HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout
.Sie kann über
dnscmd /config /RecursionTimeout <value>
.Der Standardwert beträgt 8 Sekunden in Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 und Windows Server 2022.
Das RecursionTimeout wird auf DNS-Serverebene definiert und ist unabhängig von der spezifischen Zone, die abgefragt wird.
ForwarderTimeout : Wie lange das Domain Name System (DNS) auf jeden Server in der Liste der bedingten Weiterleitungen wartet, um auf eine Abfrage zu antworten.
Da bedingte Weiterleitungen für bestimmte Zonen konfiguriert sind, ist forwarderTimeout auch zonenabhängig.
Sie wird in der Registrierung unter
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\Zones\ <zone_name>\ForwarderTimeout
.Der Standardwert beträgt 5 Sekunden in Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 und Windows Server 2022.
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 Eintrag in einer Zone empfängt, für die er nicht autoritativ ist und für die Verwendung von bedingten Weiterleitungen konfiguriert ist, lautet das Standardverhalten wie folgt:
Zeit (Sekunden seit Dem Start) | Aktion |
---|---|
0 | 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 nicht antwortet, fragt der DNS-Server nach <forwarder_timeout> Sekunden den zweiten bedingten Weiterleitungsserver ab. |
2 * <forwarder_timeout> +1 | Nach <forwarder_timeout> +1 weitere Sekunden, wenn der zweite bedingte Weiterleitung nicht antwortet, fragt der DNS-Server den dritten bedingten Weiterleitungsserver ab. |
... | ... |
N * <forwarder_timeout> +(N-1) | Nach <forwarder_timeout> +1 weitere Sekunden, wenn die Nth-bedingte Weiterleitung nicht antwortet, fragt der DNS-Server die (N+1)-bedingte Weiterleitung ab. |
Notiz
Zusätzlich zur konfigurierten Verzögerung kann es aufgrund des Systemaufwands eine zusätzliche halb zweite Verzögerung geben.
Der Algorithmus stoppt, wenn die Verstrichene Zeit den RecursionTimeout-Wert überschritten hat.
Wenn das RecursionTimeout abläuft, antwortet der DNS-Server mit einem Serverfehler zurück auf den Client.
Notiz
Der Serverfehler wird nicht unmittelbar nach Ablauf des RecursionTimeout gesendet, sondern nur, wenn es an der Zeit ist, die nächste bedingte Weiterleitung zu testen.
Dies bedeutet, dass bei Standardeinstellungen ein Windows-DNS-Server in der Lage ist, höchstens zwei bedingte Weiterleitungen abzufragen. Es wird nicht genug Zeit geben, um die dritte bedingte Weiterleitung zu verwenden. Mit Den Standardeinstellungen wird der Windows-DNS-Server tatsächlich folgendes tun:
- Abfrage der ersten Weiterleitung nach 0 Sekunden
- Abfragen der zweiten Weiterleitung nach 5,5 Sekunden
Bei der achten Sekunde läuft RecursionTimeout ab, daher erreichen wir nicht den Punkt, an dem der dritte bedingte Weiterleitung abgefragt wird (was nach 5,5 + 6 = 11,5 Sekunden geschehen wäre).
Die Serverfehlerantwort wird dann nach 11,5 Sekunden gesendet.
Beispiel:
DNS-Server mit 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 verfügt über die IP-Adresse 10.0.0.31 und fragt nach Microsoft.com
.
Bei einer Netzwerkaufnahme wird die folgende Netzwerküberwachungsausgabe 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.33 192.168.0.1 DNS:QueryId = 0x245A, QUERY (Standardabfrage), Abfrage desmicrosoft.com
Typs "Host-Addr" in der Klasse Internet
6:50:32.5484341 0.4309382 0.0002525 192.168.0.1 10.0.1 DNS:QueryId = 0x252B, QUERY (Standardabfrage), Abfrage desmicrosoft.com
Typs Host-Addr im Internet der Klasse Internet
6:50:38.1695163 6.0520204 5.6210822 192.168.0.1 1 10.0.2 DNS:QueryId = 0x252B, QUERY (Standardabfrage), Abfrage desmicrosoft.com
Typs Host-Addr im Internet der Klasse Internet
6:50:44.1856567 12.0681608 6.0161404 192.168.0.1 1 10.0.33 DNS:QueryId = 0x245A, QUERY (Standardabfrage), Antwort – Serverfehler