Delen via


Time-outs voor doorstuurservers en voorwaardelijke doorstuurservers

In dit artikel worden de terugval- en time-outgedrag beschreven die bestaan wanneer een of meer IP-adressen van DNS-servers zijn geconfigureerd als doorstuurservers of voorwaardelijke doorstuurservers op een DNS-server.

Oorspronkelijk KB-nummer: 2834250

Samenvatting

Net als bij DNS-clients voegt het configureren van DNS-servers met meer dan één doorstuurserver of voorwaardelijke doorstuurserver extra fouttolerantie toe aan uw DNS-infrastructuur. Door meerdere DNS-servers toe te voegen als doorstuurservers of voorwaardelijke doorstuurservers, kunnen DNS-namen blijven worden omgezet in geval van fouten van de enige geconfigureerde server, van de onderliggende netwerkkoppeling of de ondersteunende netwerkinfrastructuur.

Het toevoegen van fouttolerantie op servers is echter nog belangrijker omdat er mogelijk een transitieve bewerking is die sommige server uitvoert namens een pluraliteit van clients die nu hangen. Resources worden vervolgens gebruikt voor incrementeel langere tijden.

Zorg ervoor dat u de parameters correct afstemt als u drie of meer doorstuurservers/voorwaardelijke doorstuurservers wilt gebruiken, omdat de standaardinstellingen mogelijk niet zijn geoptimaliseerd voor deze grote hoeveelheid servers.

Wat is het standaardgedrag van een DNS-server wanneer meer dan twee DNS-servers zijn geconfigureerd als doorstuurservers

Om te begrijpen hoe dit werkt, zijn de belangrijkste variabelen:

  • RecursionTimeout : hoe lang het DOMAIN Name System (DNS) wacht tot externe servers reageren op een recursieve clientquery voordat de zoekopdracht wordt beëindigd.

    Het wordt opgeslagen in het register onder HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeouten kan worden geconfigureerd via dnscmd /config /RecursionTimeout <value>. Dit kan worden gecontroleerd via de PowerShell-cmdlet Get-DnsServerRecursion.

    De standaardwaarde is 8 seconden in Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 en Windows Server 2022.

    De RecursionTimeout wordt gedefinieerd op dns-serverniveau en is onafhankelijk van de specifieke zone waarop een query wordt uitgevoerd.

  • ForwardingTimeout : hoe lang het Domain Name System (DNS) wacht tot elke server in de lijst in Doorstuurservers reageert op een query.

    Het wordt opgeslagen in het register onder HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\ForwardingTimeout en configureerbaar via dnscmd /config /ForwardingTimeout <value>. Dit kan ook worden gecontroleerd via de PowerShell-cmdlet Get-DnsServerForwarder.

    De standaardwaarde is 3 seconden in Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 en Windows Server 2022.

    De ForwardingTimeout wordt gedefinieerd op dns-serverniveau en is onafhankelijk van de specifieke zone waarop een query wordt uitgevoerd.

Wanneer de DNS-server een query voor een record ontvangt in een zone waarvoor deze niet gezaghebbend is en doorstuurservers moet gebruiken, is het standaardgedrag het volgende:

Tijd (seconden sinds begin) Actie
0 Client voert een query uit op de DNS-server. De DNS-server stuurt de query onmiddellijk door naar de eerste doorstuurserver.
<forwarding_timeout> Als <de eerste doorstuurserver na forwarding_timeout> seconden niet heeft geantwoord, voert de DNS-server een query uit op de tweede doorstuurserver.
2 * <forwarding_timeout> +1 Na <forwarding_timeout> +1 seconden, als de tweede doorstuurserver niet heeft geantwoord, voert de DNS-server een query uit op de derde doorstuurserver.
... ...
N * <forwarding_timeout> +(N-1) Na <forwarding_timeout> + 1 seconden, als de Nth-doorstuurserver niet heeft geantwoord, voert de DNS-server een query uit op de (N+1)-doorstuurserver.

Notitie

Naast de geconfigureerde vertraging kan er een extra vertraging van de helft van de seconde optreden vanwege systeemoverhead.

Het algoritme stopt wanneer de verstreken tijd de waarde RecursionTimeout heeft overschreden

Als de RecursionTimeout verloopt, reageert de DNS-server terug naar de client met een serverfout.

Notitie

We verzenden de serverfout niet direct na de vervaldatum RecursionTimeout , maar alleen wanneer het tijd is om de volgende doorstuurserver uit te proberen.

Als de server geen antwoord krijgt op alle doorstuurservers voordat de RecursionTimeout verloopt zonder antwoorden te krijgen, wordt geprobeerd de hoofdhints voor de naamomzetting te gebruiken (standaardinstelling, tenzij recursie is uitgeschakeld op serverniveau).

Dit betekent dat met standaardinstellingen een Windows DNS-server maximaal drie doorstuurservers kan opvragen. Er is onvoldoende tijd om de vierde doorstuurserver te gebruiken. In feite, met standaardinstellingen, zal de Windows DNS-server:

  • Een query uitvoeren op de eerste doorstuurserver na 0 seconden
  • Een query uitvoeren op de tweede doorstuurserver na 3,5 seconden
  • Voer een query uit op de derde doorstuurserver na 3,5 + 4 = 7,5 seconden

Op de achtste seconde verloopt RecursionTimeout , dus bereiken we niet het punt waarop de vierde doorstuurserver wordt opgevraagd (wat zou zijn gebeurd na 3,5 + 4 + 4 = 11,5 seconden).

Vervolgens verzenden we het antwoord serverfout na 11,5 seconden.

Voorbeeld:

DNS-server met IP-adres 192.168.0.1 is geconfigureerd met vijf doorstuurservers (10.0.0.1-10.0.0.5).

Client heeft IP-adres 10.0.0.31 en voert query's uit op Microsoft.com.

Bij een netwerkopname zien we de volgende netwerkmonitoruitvoer (opmerking 10.0.0.4 en 10.0.0.5 nooit opgevraagd):

Time Time Offset TimeDelta Source Destination Details
6:33:51.7507293 0.2731738 0.00000000 10.0.0.31 192.168.0.1 DNS:QueryId = 0xF03, QUERY (Standaardquery), Query voor microsoft.com van het type HostInvoegtoepassing op klasse Internet
6:33:51.7510021 0.2734466 0.0002728 192.168.0.1 10.0.0.1 DNS:QueryId = 0xBD57, QUERY (Standaardquery), Query voor microsoft.com van het type HostInvoegtoepassing op klasse Internet
6:33:55.2997074 3.8221519 3.5487053 192.168.0.1 10.0.0.2 DNS:QueryId = 0xBD57, QUERY (Standaardquery), Query voor microsoft.com van het type Host Addr op klasse Internet
6:33:59.2931644 7.8156089 3.9934570 192.168.0.1 10.0.3 DNS:QueryId = 0xBD57, QUERY (Standaardquery), Query voor microsoft.com van het type HostInvoegtoepassing op klasse Internet
6:34:03.3112753 11.8337198 4.0181109 192.168.0.1 10.0.0.31 DNS:QueryId = 0xF03, QUERY (Standaardquery), Antwoord - Serverfout

Wat is het standaardgedrag van een DNS-server wanneer meer dan twee DNS-servers zijn geconfigureerd als voorwaardelijke doorstuurservers

Net als bij doorstuurservers zijn er twee belangrijke variabelen voor voorwaardelijke doorstuurservers. We hebben nog steeds RecursionTimeout (die op serverniveau werkt), maar in dit scenario gebruiken we ForwarderTimeout in plaats van ForwardingTimeout. Houd er met name rekening mee dat ForwarderTimeout op zonebasis werkt en verschillende standaardwaarden heeft:

  • RecursionTimeout : hoe lang het DOMAIN Name System (DNS) wacht tot externe servers reageren op een recursieve clientquery voordat de zoekopdracht wordt beëindigd.

    Het wordt opgeslagen in het register onder HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout.

    Het kan worden geconfigureerd via dnscmd /config /RecursionTimeout <value>.

    De standaardwaarde is 8 seconden in Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 en Windows Server 2022.

    De RecursionTimeout wordt gedefinieerd op dns-serverniveau en is onafhankelijk van de specifieke zone waarop een query wordt uitgevoerd.

  • ForwarderTimeout : hoe lang het Domain Name System (DNS) wacht op elke server in de lijst met voorwaardelijke doorstuurservers om te reageren op een query.

    Omdat voorwaardelijke doorstuurservers zijn geconfigureerd voor specifieke zones, is forwarderTimeout ook zoneafhankelijk.

    Het wordt opgeslagen in het register onder HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\Zones\ <zone_name>\ForwarderTimeout.

    De standaardwaarde is 5 seconden in Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 en Windows Server 2022.

    Dit is ook de instelling die u kunt zien in de GUI voor voorwaardelijke doorstuurservers.

Wanneer de DNS-server een query voor een record ontvangt in een zone waarvoor deze niet gezaghebbend is en is geconfigureerd voor het gebruik van voorwaardelijke doorstuurservers, is het standaardgedrag het volgende:

Tijd (seconden sinds begin) Actie
0 Client voert een query uit op de DNS-server. De DNS-server stuurt de query onmiddellijk door naar de eerste voorwaardelijke doorstuurserver.
<forwarder_timeout> Als <de eerste voorwaardelijke doorstuurserver na forwarder_timeout> seconden niet heeft geantwoord, voert de DNS-server een query uit op de tweede voorwaardelijke doorstuurserver.
2 * <forwarder_timeout> +1 Na <forwarder_timeout> +1 seconden, als de tweede voorwaardelijke doorstuurserver niet heeft geantwoord, voert de DNS-server een query uit op de derde voorwaardelijke doorstuurserver.
... ...
N * <forwarder_timeout> +(N-1) Na <forwarder_timeout> +1 seconden, als de Nde voorwaardelijke doorstuurserver niet heeft geantwoord, voert de DNS-server een query uit op de (N+1)-voorwaardelijke doorstuurserver.

Notitie

Naast de geconfigureerde vertraging kan er een extra vertraging van de helft van de seconde optreden vanwege systeemoverhead.

Het algoritme stopt wanneer de verstreken tijd de waarde RecursionTimeout heeft overschreden

Als de RecursionTimeout verloopt, reageert de DNS-server terug naar de client met een serverfout.

Notitie

We verzenden de serverfout niet direct na de vervaldatum RecursionTimeout , maar alleen wanneer het tijd is om de volgende voorwaardelijke doorstuurserver uit te proberen.

Dit betekent dat met standaardinstellingen een Windows DNS-server maximaal twee voorwaardelijke doorstuurservers kan opvragen. Er is onvoldoende tijd om de derde voorwaardelijke doorstuurserver te gebruiken. In feite, met standaardinstellingen, zal de Windows DNS-server:

  • Een query uitvoeren op de eerste doorstuurserver na 0 seconden
  • Een query uitvoeren op de tweede doorstuurserver na 5,5 seconden

Op de achtste seconde verloopt RecursionTimeout , dus we bereiken niet het punt waarop de derde voorwaardelijke doorstuurserver wordt opgevraagd (wat zou zijn gebeurd na 5,5 + 6 = 11,5 seconden).

Vervolgens verzenden we het antwoord serverfout na 11,5 seconden.

Voorbeeld:

DNS-server met IP-adres 192.168.0.1 is geconfigureerd met vijf voorwaardelijke doorstuurservers (10.0.0.1-10.0.0.5) voor de zone Microsoft.com.

Client heeft IP-adres 10.0.0.31 en voert query's uit op Microsoft.com.

Bij een netwerkopname zien we de volgende netwerkmonitoruitvoer (opmerking: 10.0.0.3, 10.0.0.4 en 10.0.0.5 hebben nooit een query uitgevoerd):

Time Time Offset TimeDelta Source Destination Details
6:50:32.5481816 0.4306857 0.00000000 10.0.0.33 192.168.0.1 DNS:QueryId = 0x245A, QUERY (Standaardquery), Query voor microsoft.com van het type HostInvoegtoepassing op klasse Internet
6:50:32.5484341 0.4309382 0.0002525 192.168.0.1 10.0.1 DNS:QueryId = 0x252B, QUERY (Standaardquery), Query voor microsoft.com van het type HostInvoegtoepassing op klasse Internet
6:50:38.1695163 6.0520204 5.62108222 192.168.0.1 10.0.2 DNS:QueryId = 0x252B, QUERY (Standaardquery), Query voor microsoft.com van het type HostInvoegtoepassing op klasse Internet
6:50:44.1856567 12.0681608 6.0161404 192.168.0.1 10.0.0.33 DNS:QueryId = 0x245A, QUERY (Standaardquery), Antwoord - Serverfout

Verwijzingen