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\**RecursionTimeout
e configurabilevia 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 tramitednscmd /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 permicrosoft.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 permicrosoft.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 permicrosoft.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 permicrosoft.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 permicrosoft.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 permicrosoft.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 permicrosoft.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