Condividi tramite


NET: DNS: timeout di risoluzione di server d'inoltro e server d'inoltro condizionali

Questo articolo descrive il comportamento di fallback e timeout esistente quando uno o più indirizzi IP dei server DNS vengono configurati come server d'inoltro o server d'inoltro condizionale in un server DNS.

Numero KB originale: 2834250

Riepilogo

Controllare NET: DNS: Timeout di risoluzione client DNS per altre informazioni sui timeout di risoluzione client DNS.

Analogamente ai client DNS, la configurazione di server DNS con più server d'inoltro o server d'inoltro condizionale aggiunge ulteriore tolleranza di errore all'infrastruttura DNS. L'aggiunta di più server DNS come server d'inoltro o server d'inoltro condizionale consente di continuare a risolvere i nomi DNS in caso di errori dell'unico server configurato, del collegamento di rete sottostante o dell'infrastruttura di rete di supporto.

Tuttavia, l'aggiunta della tolleranza di errore nei server è ancora più critica perché esiste potenzialmente un'operazione transitiva eseguita da alcuni server per conto di una pluralità di client che ora sono in sospeso. Le risorse vengono quindi utilizzate per tempi incrementalmente più lunghi.

Assicurarsi di ottimizzare correttamente i parametri se si desidera usare tre o più server d'inoltro/server d'inoltro condizionale perché le impostazioni predefinite potrebbero non essere ottimizzate per questa elevata quantità di server.

Qual è il comportamento predefinito di un server DNS quando più di due server DNS sono configurati come server d'inoltro

Per comprendere come funziona, le variabili chiave sono:

  • RecursionTimeout : per quanto tempo il DNS (Domain Name System) attende che i server remoti rispondano a una query client ricorsiva prima di terminare la ricerca.

    Viene salvato nel Registro di sistema in HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\**RecursionTimeoute configurabile via dnscmd /config /RecursionTimeout <value>.

    Il valore predefinito è:

    • 15 secondi in Windows Server 2003

    • 8 secondi in Windows Server 2008, 2008 R2 e 2012

      RecursionTimeout è definito a livello di server DNS ed è indipendente dalla zona specifica sottoposta a query.

  • ForwardingTimeout : per quanto tempo il DNS (Domain Name System) attende ogni server nell'elenco in Server d'inoltro per rispondere a una query.

    Viene salvato nel Registro di sistema HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\**ForwardingTimeout in e configurabile tramite dnscmd /config /ForwardingTimeout <value>.

    Il valore predefinito è:

    • 5 secondi in Windows Server 2003

    • 3 secondi in Windows Server 2008, 2008R2 e 2012

      ForwardingTimeout è definito a livello di server DNS ed è indipendente dalla zona specifica sottoposta a query.

Quando il server DNS riceve una query per un record in una zona per cui non è autorevole e deve usare i server d'inoltro, il comportamento predefinito è il seguente:

Tempo (secondi dall'inizio) Azione
0 Il client esegue query sul server DNS. Il server DNS inoltra immediatamente la query al primo server d'inoltro
<forwarding_timeout> Dopo <forwarding_timeout> secondi, se il primo server d'inoltro non ha risposto, il server DNS esegue una query sul secondo server d'inoltro.
2 * <forwarding_timeout> +1 Dopo <forwarding_timeout> +1 secondi in più, se il secondo server d'inoltro non ha risposto, il server DNS esegue una query sul terzo server d'inoltro.
... ...
N * <forwarding_timeout> +(N-1) Dopo forwarding_timeout + 1 secondi in più, se il server d'inoltro N non ha risposto, il server DNS esegue una query sul server d'inoltro (N+1).After <forwarding_timeout> + 1 more seconds, if the Nth forwarder didn't reply, the DNS server queries the (N+1)th forwarder.

Nota

Oltre al ritardo configurato, può verificarsi un ritardo aggiuntivo di mezzo secondo a causa del sovraccarico del sistema.

L'algoritmo si arresta quando il tempo trascorso supera il valore RecursionTimeout

Se RecursionTimeout scade, il server DNS risponderà al client con un errore del server.

Nota

L'errore del server non viene inviato immediatamente dopo la scadenza di RecursionTimeout, ma solo quando è il momento di provare il server d'inoltro successivo.

Se il server riesce a contattare tutti i server d'inoltro prima della scadenza di RecursionTimeout senza ottenere risposte, tenterà di usare gli hint radice per la risoluzione dei nomi (impostazione predefinita, a meno che la ricorsione non sia stata disabilitata a livello di server).

Ciò significa che con le impostazioni predefinite, un server 2008R2 sarà in grado di eseguire query al massimo 3 server d'inoltro. Non ci sarà abbastanza tempo per arrivare per usare il quarto server d'inoltro. Infatti, con le impostazioni predefinite in 2008R2 il server:

  • Eseguire una query sul primo server d'inoltro dopo 0 secondi
  • Eseguire query sul secondo server d'inoltro dopo 3,5 secondi
  • Eseguire query sul terzo server d'inoltro dopo 3,5 + 4 = 7,5 secondi

All'ottavo secondo, RecursionTimeout scade, quindi non raggiungeremo il punto in cui viene eseguita una query sul quarto server d'inoltro (che si sarebbe verificato dopo 3,5 + 4 + 4 = 11,5 secondi).

La risposta di errore del server verrà inviata dopo 11,5 secondi.

Esempio:

Il server DNS con indirizzo IP 192.168.0.1 è configurato con cinque server d'inoltro (10.0.0.1-10.0.0.5).

Il client ha l'indirizzo IP 10.0.0.31 ed esegue una query per Microsoft.com

In un'acquisizione di rete viene visualizzato l'output di Monitoraggio di rete seguente (nota 10.0.0.4 e 10.0.0.5 non è mai stato sottoposto a query):

Time Offset Time (Ora offset ora) Dettagli destinazione origineDelta
6:33:51.7507293 0.2731738 0.0000000 10.0.0.31 192.168.0.1 DNS:QueryId = 0xF03, QUERY (query standard), Query per microsoft.com il tipo Host Addr nella classe Internet
6:33:51.7510021 0.2734466 0.0002728 192.168.0.1 10.0.0.1 DNS:QueryId = 0xBD57, QUERY (query standard), Query per microsoft.com il tipo Host Addr nella classe Internet
6:33:55.2997074 3.8221519 3.5487053 192.168.0.1 10.0.0.2 DNS:QueryId = 0xBD57, QUERY (query standard), Query per microsoft.com il tipo Host Addr nella classe Internet
6:33:59.2931644 7.8156089 3.9934570 192.168.0.1 10.0.0.3 DNS:QueryId = 0xBD57, QUERY (query standard), Query per microsoft.com il tipo Host Addr nella classe Internet
6:34:03.3112753 11.8337198 4.0181109 192.168.0.1 10.0.0.31 DNS:QueryId = 0xF03, QUERY (query standard), Risposta - Errore del server

Qual è il comportamento predefinito di un server DNS quando più di due server DNS sono configurati come server d'inoltro condizionale

Analogamente ai server d'inoltro, esistono due variabili chiave per i server d'inoltro condizionali. È ancora disponibile RecursionTimeout (che funziona a livello di server), ma in questo scenario si usa ForwarderTimeout anziché ForwardingTimeout. Si noti in particolare che ForwarderTimeout funziona in base alla zona e ha valori predefiniti diversi:

  • RecursionTimeout : per quanto tempo il DNS (Domain Name System) attende che i server remoti rispondano a una query client ricorsiva prima di terminare la ricerca.

    Viene salvato nel Registro di sistema in HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout

    È configurabile tramite dnscmd /config /RecursionTimeout <value>.

    Il valore predefinito è:

    • 15 secondi in Windows Server 2003

    • 8 secondi in Windows Server 2008 e 2008R2

      RecursionTimeout è definito a livello di server DNS ed è indipendente dalla zona specifica sottoposta a query

  • ForwarderTimeout : per quanto tempo il DNS (Domain Name System) attende ogni server nell'elenco di server d'inoltro condizionali per rispondere a una query.

    Poiché i server d'inoltro condizionali sono configurati per zone specifiche, anche ForwarderTimeout dipende dalla zona.

    Viene salvato nel Registro di sistema in HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\Zones\ <zone_name>\ForwarderTimeout.

    Il valore predefinito è 5 secondi in Windows Server 2003, 2008, 2008R2 e 2012.

    Questa è anche l'impostazione che è possibile visualizzare nell'interfaccia utente grafica di Inoltro condizionale.

Quando il server DNS riceve una query per un record in una zona per cui non è autorevole ed è configurato per l'uso di server d'inoltro condizionale, il comportamento predefinito è il seguente:

Tempo (secondi dall'inizio) Azione
0 Il client esegue query sul server DNS. Il server DNS inoltra immediatamente la query al primo server d'inoltro condizionale
<forwarder_timeout> Dopo <forwarder_timeout> secondi, se il primo server d'inoltro condizionale non ha risposto, il server DNS esegue una query sul secondo server d'inoltro condizionale
2 * <forwarder_timeout> +1 Dopo <forwarder_timeout> +1 secondi in più, se il secondo server d'inoltro condizionale non ha risposto, il server DNS esegue una query sul terzo server d'inoltro condizionale
... ...
N * <forwarder_timeout> +(N-1) Dopo <forwarder_timeout> +1 secondi in più, se il server d'inoltro condizionale Nth non ha risposto, il server DNS esegue una query sull'inoltro condizionale (N+1)th

Nota

Oltre al ritardo configurato, può verificarsi un ritardo aggiuntivo di mezzo secondo a causa del sovraccarico del sistema

L'algoritmo si arresta quando il tempo trascorso ha superato il valore RecursionTimeout

Se RecursionTimeout scade, il server DNS risponderà al client con un errore del server.

Nota

L'errore del server non viene inviato immediatamente dopo la scadenza di RecursionTimeout , ma solo quando è il momento di provare l'inoltro condizionale successivo.

Ciò significa che con le impostazioni predefinite, un server 2008 R2 sarà in grado di eseguire query al massimo su 2 server d'inoltro condizionale. Non ci sarà abbastanza tempo per arrivare per usare il terzo server d'inoltro condizionale. Infatti, con le impostazioni predefinite in 2008R2 il server:

  • Eseguire una query sul primo server d'inoltro dopo 0 secondi
  • Eseguire una query sul secondo server d'inoltro dopo 5,5 secondi

All'ottavo secondo, RecursionTimeout scade, quindi non raggiungeremo il punto in cui viene eseguita una query sul terzo server d'inoltro condizionale (che si sarebbe verificato dopo 5,5 + 6 = 11,5 secondi).

La risposta di errore del server verrà inviata dopo 11,5 secondi.

Esempio:

Il server DNS con indirizzo IP 192.168.0.1 è configurato con cinque server d'inoltro condizionali (10.0.0.1-10.0.0.5) per la zona Microsoft.com.

Il client ha l'indirizzo IP 10.0.0.31 ed esegue query per Microsoft.com.

In un'acquisizione di rete viene visualizzato l'output di Monitoraggio di rete seguente (nota 10.0.0.3, 10.0.0.4 e 10.0.0.5 mai sottoposta a query):

Time Offset Time (Ora offset ora) Dettagli destinazione origineDelta
6:50:32.5481816 0.4306857 0.00000000 10.0.0.33 192.168.0.1 DNS:QueryId = 0x245A, QUERY (query standard), Query per microsoft.com il tipo Host Addr nella classe Internet
6:50:32.5484341 0.4309382 0.0002525 192.168.0.1 10.0.0.1 DNS:QueryId = 0x252B, QUERY (query standard), Query per microsoft.com il tipo Host Addr nella classe Internet
6:50:38.1695163 6.0520204 5.6210822 192.168.0.1 10.0.0.2 DNS:QueryId = 0x252B, QUERY (query standard), Query per microsoft.com il tipo Host Addr nella classe Internet
6:50:44.1856567 12.0681608 6.0161404 192.168.0.1 10.0.0.33 DNS:QueryId = 0x245A, QUERY (query standard), Risposta - Errore del server

Riferimenti