In che modo Windows decide quale server DNS utilizzare per la risoluzione dei nomi?


41

Quale algoritmo utilizza Windows per decidere quale server DNS verrà interrogato per risolvere i nomi?

Diciamo che ho diverse interfacce, tutte attive, alcune senza server DNS specificato, alcune hanno detto di determinarlo automaticamente, altre specificate manualmente (nell'interfaccia ipv4 E interfaccia ipv6).

Sto chiedendo una risposta a questa domanda generale sperando di sapere come risolvere un problema più specifico in Windows Vista: ho due interfacce, una metrica inferiore e un server DNS specificato manualmente. nslookup utilizza QUESTO server DNS e risolve i nomi correttamente. Tuttavia, tutte le altre applicazioni non riescono a risolvere il nome a meno che non specifichi manualmente un server DNS per l'altra interfaccia, che le applicazioni quindi utilizzano. nslookup utilizza anche il server DNS specificato per questa altra interfaccia una volta specificato.

Grazie

Risposte:


27

Se non sbaglio, è determinato dall'ordine di associazione della NIC nelle Impostazioni avanzate nella cartella delle connessioni di rete. È possibile verificarlo modificando l'ordine di associazione delle varie NIC ed eseguendo nslookup come test.

Per espandere la mia risposta, citando l'articolo che Evan ha collegato , ecco un estratto da detto articolo:

Il servizio client DNS esegue una query sui server DNS nel seguente ordine:

  1. Il servizio client DNS invia la query del nome al primo server DNS nell'elenco di server DNS dell'adattatore preferito e attende un secondo per una risposta.

  2. Se il servizio client DNS non riceve una risposta dal primo server DNS entro un secondo, invia la query del nome ai primi server DNS su tutti gli adattatori che sono ancora in esame e attende due secondi per una risposta.

  3. Se il servizio client DNS non riceve una risposta da alcun server DNS entro due secondi, il servizio client DNS invia la query a tutti i server DNS su tutti gli adattatori che sono ancora in esame e attende altri due secondi per una risposta.

  4. Se il servizio client DNS non riceve ancora una risposta da alcun server DNS, invia la query del nome a tutti i server DNS su tutti gli adattatori che sono ancora in esame e attende quattro secondi per una risposta.

  5. Se il servizio client DNS non riceve una risposta da alcun server DNS, il client DNS invia la query a tutti i server DNS su tutti gli adattatori che sono ancora in esame e attende otto secondi per una risposta.

L'adattatore preferito nel passaggio 1 è l'adattatore elencato per primo nell'ordine di associazione.


4
Questo processo è cambiato in Windows 10, anche se non conosco il nuovo processo che so quanto sopra non si applica a Windows 10, consultare questo blog - blogs.technet.microsoft.com/networking/2015/08/14/…
Robert,

14

In Windows 10 (e Windows Server 2016) è necessario aggiornare la metrica di ciascuna interfaccia nell'ordine desiderato.

  1. Vai a Pannello di controllo> Rete e Internet> Connessioni di rete
  2. Fare clic con il tasto destro del mouse sulla connessione desiderata (Connessione a priorità superiore)
  3. Fare clic su Proprietà> Protocollo Internet versione 4
  4. Fai clic su Proprietà> Avanzate
  5. Deseleziona "Metrica automatica"
  6. Inserisci 10 in "Interfaccia metrica"
  7. Clicca OK

Riferimenti:

Ho usato 10 per la mia LAN, 20 per la WLAN e 100 per le interfacce VPN (preferisco il DNS locale al lavoro, questo potrebbe essere inverso per gli altri). Ricorda metrica inferiore = priorità più alta .

Consulta questo articolo nel Supporto tecnico Microsoft per una spiegazione della funzione di misurazione automatica delle route IPv4 .


+1 Per me su Windows 10, questa era l'unica soluzione, grazie.
GµårÐïåñ il

La modifica della metrica influisce solo sulla selezione del percorso. Non influisce su quale server DNS verrà utilizzato.
Jruv,

14 voti positivi e l'esperienza personale non sono d'accordo, sono d'accordo che non dovrebbe, ma gli sviluppatori di Microsoft sembrano averlo codificato in questo modo.
Jacob Evans,

8

Questa pagina descrive l'algoritmo utilizzato da Windows per eseguire query DNS. Non è abbastanza approfondito per darti tutte le risposte che stai cercando, ma un po 'di tempo con uno sniffer e questo articolo dovrebbe essere tutto ciò di cui hai bisogno per determinare cosa sta succedendo nella tua situazione specifica.


3

Ho avuto esattamente lo stesso problema. Ho trascorso una giornata cercando di capirlo. Ora lo so e funziona come un fascino.

Se si dispone di più schede di rete e se si specifica il server DNS in ciascuna di esse. Sai finalmente quale server DNS verrà utilizzato?

Bene, puoi verificarlo tramite la pratica.

nslookup 192.168.3.6

Quindi vedi il server effettivamente utilizzato dal tuo PC

La domanda è: da cosa dipende quali finestre del server DNS scelgono di usare e come possiamo cambiarlo.

Ne abbiamo particolarmente bisogno quando utilizziamo i client VPN.

La risposta di qwerty2010 è giusta e corretta. Ma puoi usarlo SOLO quando hai NIC nel pannello di controllo - rete e centro di condivisione - cambia le impostazioni dell'adattatore - elenco di schede di rete

Solo se vedi il nic che è responsabile per il tuo client VPN puoi usare il modo grafico di indicare a Windows quale server DNS (che è specificato su un nic particolare) che desideri utilizzare.

Quindi vai al Centro connessioni di rete e condivisione -> Modifica impostazioni adattatore -> Avanzate -> Impostazioni avanzate -> e vai SU con il DNS che desideri UTILIZZARE. (SU devi sollevarlo).

Tuttavia, se ad esempio utilizzi il client VPN di Shrew, non avrai alcuna scheda di rete.

Cosa fai.

Si apre il registro.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}

E guardi nelle sottocartelle 0000, 0001 ecc la cartella con

DriverDesc = Shrew Soft Virtual Adapter

bene. Quindi copia negli appunti

NetCfgInstanceId = {B498E7DE-7257-48F6-AD32-60E470030F05}

Adesso vai

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage]

e tu apri key = Bind. Vedrai l'elenco in questo modo

\Device\{1DF89CE3-CAAD-4EB7-A53F-AD16BC1D5EFD}
\Device\{70126DBE-B44D-4392-9417-0CABD6E384B1}
\Device\{D5127F8E-E7BB-4661-AE5A-A922614173D0}
\Device\{C44039AB-6801-4A9B-A736-3B12782FF411}
\Device\{85231D0F-CD05-4774-A983-632C5D83AC62}
\Device\{7E87BC81-8C58-4E05-9FA0-7897A6AA5CCE}
\Device\{3A1A3EFC-A9DE-4BCA-BAF6-81C7074487E0}
\Device\{8D41EDFC-04AC-4537-B5D5-0D54EB51A023}

Tutto quello che devi fare è mettere in cima

\Device\{B498E7DE-7257-48F6-AD32-60E470030F05}
\Device\{1DF89CE3-CAAD-4EB7-A53F-AD16BC1D5EFD}
\Device\{70126DBE-B44D-4392-9417-0CABD6E384B1}
\Device\{D5127F8E-E7BB-4661-AE5A-A922614173D0}
\Device\{C44039AB-6801-4A9B-A736-3B12782FF411}
\Device\{85231D0F-CD05-4774-A983-632C5D83AC62}
\Device\{7E87BC81-8C58-4E05-9FA0-7897A6AA5CCE}
\Device\{3A1A3EFC-A9DE-4BCA-BAF6-81C7074487E0}
\Device\{8D41EDFC-04AC-4537-B5D5-0D54EB51A023}

È tutto. Non è necessario riavviare.

Ora le tue finestre useranno il DNS specificato in shrew vpn nic quando usi la connessione vpn.


0

Poiché ciò potrebbe aiutare te o altri, è possibile disabilitare l'utilizzo round robin di Windows dei DNS elencati per rendere l'utilizzo del DNS più prevedibile. Prova a impostare RoundRobin=0in HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DNS\Parameters( riferimento ) per disabilitare il round robing DNS.

C'è anche un "timeout" per ruotare i server, puoi anche provare a impostarlo su zero :

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
 ServerPriorityTimeLimit=0

In base al "riferimento" (collegamento) menzionato, ciò si applica alla configurazione del server DNS nel fornire più indirizzi IP per alcuni FQDN interrogati nell'ordine di ordinamento ruotati da query a query. Ciò non ha nulla a che fare con la domanda su come un risolutore DNS (client) stia scegliendo un server DNS da interrogare.
Thomas Urban,

-13

Non decide in modo casuale. Sei connesso a un router che ottiene l'IP da un'azienda che ha server DNS. Ricevono la tua richiesta a meno che tu non modifichi manualmente l'IP in un altro DNS, ad esempio: OpenDns . O forse decidi di avere i tuoi server DNS. Anche questo funziona. Basta inserire gli indirizzi IP nel centro di rete e tutto dovrebbe andare bene. E sì, dovrai impostarli manualmente.

Puoi anche regolare un file in C:\Windows\System32"host" chiamato senza estensione. Ti consente di reindirizzare le richieste URL invece di essere inviate al DNS standard. A un server locale (che deve essere in esecuzione e in ascolto sulla porta 80)


18
Fondamentalmente tutto ciò che hai detto qui è sbagliato
MDMarra,

3
E un ulteriore -1 anche per menzionare l'abominio festante che è il file hosts.
Maximus Minimus,

Modo per essere informativo MarkM
KdgDev

4
@WebDevHobo - C'è davvero troppo da correggere in un commento, ma toccherò i punti importanti. 1) L'OP ha un computer con più interfacce (molto probabilmente schede di rete separate) e ognuna ha un DNS diverso definito su di esso. Nel contesto della domanda, sta chiaramente eseguendo alcuni server DNS interni o ha alcuni server DNS esterni preferiti: la casella è probabilmente multihome. 2) Non è necessario impostare manualmente l'indirizzo di un server DNS interno se lo si utilizza nella configurazione del server DHCP per quel pool di indirizzi. 3) Il percorso del file hosts è c: \ windows \ system32 \ drivers \ etc
MDMarra

3
E il file HOSTS non dovrebbe essere usato in questa situazione, o praticamente mai, a meno che tu non stia facendo uno sviluppo locale e usi le intestazioni HOST o qualcosa del genere e non hai bisogno di un nome di dominio completo per risolvere localmente. E non è necessario che il server esegua la porta 80 sia che si usi il file HOSTS per la risoluzione dei nomi sia un server DNS. Basta aggiungere: numero_porta alla fine dell'URL. HOSTS non si preoccupa della porta, proprio come il DNS non lo fa - è un modo di tradurre un nome host in un indirizzo IP e nient'altro.
MDMarra,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.