Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo consente di risolvere i problemi di risoluzione dei nomi client DNS (Domain Name System).
I problemi di risoluzione DNS (Domain Name System) possono verificarsi per le tre cause principali seguenti:
- Problemi o configurazioni del client DNS.
- Problemi o configurazioni del server DNS.
- Dispositivi o configurazioni intermedi tra un client DNS e un server DNS o tra un server DNS e resolver esterni (ad esempio hint radice, server d'inoltro e server d'inoltro condizionale), che potrebbero richiedere ulteriori indagini.
Note
Questo articolo è incentrato sui problemi di risoluzione DNS causati da problemi o configurazioni del client DNS. Per informazioni sui problemi del server DNS, vedere Risoluzione dei problemi relativi ai server DNS.
I problemi di risoluzione DNS possono verificarsi negli scenari seguenti:
Scenario 1: La regola del firewall blocca le connessioni in uscita sulla porta UDP 53
Si supponga che sia presente una regola del firewall in uscita che blocca le connessioni in uscita sulla porta UDP (User Datagram Protocol) 53.
In questo caso, quando si esegue il Resolve-DnsName contoso.com
cmdlet di PowerShell con Wireshark in esecuzione, viene visualizzato l'errore seguente:
resolve-dnsname : contoso.com : This operation returned because the timeout period expired
At line:1 char:1
+ resolve-dnsname contoso.com
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationTimeout: (contoso.com:String) [Resolve-DnsName], Win32Exception
+ FullyQualifiedErrorId : ERROR_TIMEOUT,Microsoft.DnsClient.Commands.ResolveDnsName
Quando si controlla la traccia wireshark, non è presente alcun traffico DNS in uscita verso il controller di dominio (DC).
In questo caso, esaminare le regole di Windows Firewall e controllare eventuali prodotti di sicurezza di terze parti per le eliminazioni di pacchetti sulla porta UDP o TCP (Transmission Control Protocol) 53.
Se si nota una richiesta di risoluzione DNS senza risposta, è utile raccogliere le tracce wireshark da un commutatore usando il mirroring delle porte per verificare che il pacchetto UDP DNS abbia lasciato il computer client. Le richieste sono simili alle seguenti:
139 3.149039 10.0.1.10 10.0.1.2 DNS 71 Standard query 0xcdc6 A contoso.com
140 3.149192 10.0.1.10 10.0.1.2 DNS 71 Standard query 0x8168 AAAA contoso.com
Si tratta di richieste di query standard per l'host A e l'host AAAA senza risposta. La verifica della traccia può isolare il problema. Se viene visualizzato il pacchetto UDP sul commutatore, significa che il pacchetto ha già lasciato il computer client e il problema è oltre il computer client.
Scenario 2: Esiste una voce per il nome di dominio nel file Hosts
Si supponga che il file Hosts che si trova in C:\Windows\System32\drivers\etc abbia una voce per il nome di dominio che si desidera risolvere. Ad esempio:
192.168.1.10
contoso.com
In questo caso, quando si risolve il nome contoso.com
di dominio con Wireshark in esecuzione, viene visualizzato l'output seguente:
PS C:\Windows\System32\drivers\etc> Resolve-DnsName contoso.com
Name Type TTL Section IPAddress
---- ---- --- ------- ---------
contoso.com A 60440 Answer 192.168.1.10
Inoltre, non è possibile rilevare traffico in Wireshark.
Il motivo è che il client DNS usa la sequenza seguente per la risoluzione dei nomi:
- Controllare la cache.
- Controllare il file Hosts.
- Inviare la query al server DNS.
Poiché è presente una voce nel file Hosts, il servizio client DNS non esegue query sul server DNS.
Scenario 3: il client punta a un server DNS non corretto o non raggiungibile
Si supponga che il server DNS nella scheda di interfaccia di rete (NIC) del client DNS sia configurato con l'INDIRIZZO IP di un server DNS non raggiungibile. La configurazione IP client è simile all'esempio seguente:
IPv4 Address. . . . . . . . . . . : 10.0.1.10<Preferred>
Default Gateway . . . . . . . . . : 10.0.1.1
DNS Servers . . . . . . . . . . . : 192.168.0.1
Poiché il server DNS non è raggiungibile, il client non riceve una risposta, causando il timeout della query. Questo timeout può essere osservato in Wireshark. Query standard DNS senza risposta:
439 14.482923 10.0.1.10 192.168.0.1 DNS 71 Standard query 0xa384 A contoso.com
440 14.482923 10.0.1.10 192.168.0.1 DNS 71 Standard query 0x4fe0 AAAA contoso.com
In questo caso, quando si esegue il Resolve-DnsName contoso.com
cmdlet di PowerShell, viene visualizzato l'output seguente:
PS C:\Windows\System32\drivers\etc> Resolve-DnsName contoso.com
Resolve-DnsName : contoso.com : This operation returned because the timeout period expired
At line:1 char:1
+ Resolve-DnsName contoso.com
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationTimeout: (contoso.com:String) [Resolve-DnsName], Win32Exception
+ FullyQualifiedErrorId : ERROR_TIMEOUT,Microsoft.DnsClient.Commands.ResolveDnsName
Scenario 4: nella scheda di interfaccia di rete sono configurati diversi server DNS, alcuni dei quali non raggiungibili
Si supponga che le impostazioni DNS del client siano configurate con alcuni server DNS non raggiungibili come indicato di seguito:
DNS Servers . . . . . . . . . . . : 192.168.0.1
172.16.1.1
192.168.1.20
10.0.1.2
In questo caso, quando si esegue una risoluzione DNS usando il Resolve-DnsName contoso.com
cmdlet di PowerShell, tutti gli indirizzi del server DNS ad eccezione 10.0.1.2
di non sono raggiungibili.
Per impostazione predefinita, il client DNS inizierà a inviare questa query ai server DNS configurati in un ordine specifico e attenderà una risposta entro un periodo di tolleranza specifico.
Questo processo può essere visualizzato in Wireshark con il filtro dns.qry.name == contoso.com
.
L'output di Wireshark mostra che il completamento della query richiede quasi quattro secondi. Dal punto di vista della rete, questa durata può essere lunga e potrebbe causare un timeout di alcune applicazioni.
30 03:56:58.634623 10.0.1.10 192.168.0.1 DNS 71 Standard query 0x9f32 A contoso.com
33 03:56:59.643171 10.0.1.10 172.16.1.1 DNS 71 Standard query 0x9f32 A contoso.com
38 03:57:02.646443 10.0.1.10 192.168.0.1 DNS 71 Standard query 0x9f32 A contoso.com
42 03:57:02.646556 10.0.1.10 172.16.1.1 DNS 71 Standard query 0x9f32 A contoso.com
43 03:57:02.646573 10.0.1.10 192.168.1.20 DNS 71 Standard query 0x9f32 A contoso.com
47 03:57:02.646684 10.0.1.10 10.0.1.2 DNS 71 Standard query 0x9f32 A contoso.com
Note
In questo scenario, l'uso nslookup
di non è applicabile e avrà sempre esito negativo. Questo perché nslookup
usa nslookup.exe per contattare solo il server DNS primario configurato, che in questo caso è 192.168.0.1
.
Scenario 5: Elenco di ricerca suffisso DNS lungo
Si supponga che l'elenco di ricerca del suffisso DNS nel client DNS sia configurato come segue:
Note
contoso.com
è il suffisso DNS corretto.
DNS Suffix Search List. . . . . . : microsoft.com
ms.com
azure.com
ms.local
contoso.local
contoso.com
In questo caso, quando si esegue una risoluzione dei nomi usando il Resolve-DnsName internal
cmdlet di PowerShell, il client DNS aggiungerà i suffissi DNS in ordine, causando potenzialmente ritardi se la query necessaria è inferiore all'elenco. Usando il filtro dns.qry.name contains internal
in Wireshark, la query viene visualizzata come segue:
116 04:33:38.164251 10.0.1.10 10.0.1.2 DNS 82 Standard query 0xc557 A internal.microsoft.com
120 04:33:38.177186 10.0.1.10 10.0.1.2 DNS 75 Standard query 0x0a4b A internal.ms.com
124 04:33:38.453625 10.0.1.10 10.0.1.2 DNS 78 Standard query 0x4245 A internal.azure.com
128 04:33:38.466154 10.0.1.10 10.0.1.2 DNS 77 Standard query 0xfaca A internal.ms.local
131 04:33:38.471033 10.0.1.10 10.0.1.2 DNS 82 Standard query 0xa9d6 A internal.contoso.local
136 04:33:38.476248 10.0.1.10 10.0.1.2 DNS 80 Standard query 0x611f A internal.contoso.com
Note
Se è necessario testare una query specifica, è possibile aggiungere un punto finale (.) alla fine. Ad esempio, internal.contoso.com.
Misurare il tempo impiegato da una query di risoluzione DNS
Per misurare il tempo impiegato per il completamento di una query di risoluzione DNS, eseguire il cmdlet di PowerShell seguente:
Note
Un risultato inferiore a un secondo è considerato accettabile.
(Measure-Command {Resolve-DnsName -Name contoso.com -Server <IP Address> -DnsOnly}).TotalMilliseconds
Dichiarazione di non responsabilità sulle informazioni di terze parti
I prodotti di terzi citati in questo articolo sono prodotti da società indipendenti da Microsoft. Microsoft non rilascia alcuna garanzia implicita o esplicita relativa alle prestazioni o all'affidabilità di tali prodotti