Frage Wie entscheidet Windows, welcher DNS-Server beim Auflösen von Namen verwendet werden soll?


Welchen Algorithmus verwendet Windows, um zu entscheiden, welcher DNS-Server abgefragt wird, um Namen aufzulösen?

Nehmen wir an, ich habe mehrere Schnittstellen, alle aktiv, einige ohne DNS-Server angegeben, einige gesagt, um es automatisch zu bestimmen, und einige damit manuell angegeben (in der Schnittstelle ipv4 UND Schnittstelle ipv6).

Ich frage nach einer Antwort auf diese allgemeine Frage in der Hoffnung, dass ich weiß, wie man ein spezifischeres Problem in Windows Vista löst - ich habe zwei Schnittstellen, eine niedrigere Metrik und einen DNS-Server, der manuell angegeben wird. nslookup verwendet DIESE DNS-Server und löst die Namen korrekt auf. Alle anderen Anwendungen lösen jedoch den Namen nicht auf, wenn ich nicht manuell einen DNS-Server für die andere Schnittstelle angeben, den die Anwendungen dann verwenden. Nslookup verwendet auch den DNS-Server, der für diese andere Schnittstelle angegeben wurde, sobald sie angegeben ist.

Vielen Dank


38
2017-11-13 02:46


Ursprung




Antworten:


Wenn ich mich nicht irre, wird dies durch die NIC-Bindungsreihenfolge in den erweiterten Einstellungen im Netzwerkverbindungsordner bestimmt. Sie können es überprüfen, indem Sie die Bindungsreihenfolge der verschiedenen NICs ändern und nslookup als Test ausführen.

Um auf meine Antwort zu erweitern, zitierend der Artikel, den Evan verlinkt hat, hier ist ein Auszug aus besagtem Artikel:

Der DNS-Clientdienst fragt die DNS-Server in der folgenden Reihenfolge ab:

  1. Der DNS-Clientdienst sendet die Namensabfrage an den ersten DNS-Server in der Liste der DNS-Server des bevorzugten Adapters und wartet eine Sekunde auf eine Antwort.

  2. Wenn der DNS-Clientdienst innerhalb einer Sekunde keine Antwort vom ersten DNS-Server erhält, sendet er die Namensabfrage an die ersten DNS-Server aller noch in Betracht kommenden Adapter und wartet zwei Sekunden auf eine Antwort.

  3. Wenn der DNS-Clientdienst innerhalb von zwei Sekunden keine Antwort von einem DNS-Server erhält, sendet der DNS-Clientdienst die Abfrage an alle DNS-Server auf allen noch in Betracht kommenden Adaptern und wartet weitere zwei Sekunden auf eine Antwort.

  4. Wenn der DNS-Client-Dienst weiterhin keine Antwort von einem DNS-Server erhält, sendet er die Namensabfrage an alle DNS-Server auf allen noch in Betracht kommenden Adaptern und wartet vier Sekunden auf eine Antwort.

  5. Wenn der DNS-Clientdienst keine Antwort von einem DNS-Server erhält, sendet der DNS-Client die Abfrage an alle DNS-Server auf allen noch in Betracht kommenden Adaptern und wartet acht Sekunden auf eine Antwort.

Der bevorzugte Adapter in Schritt 1 ist der Adapter, der in der Bindungsreihenfolge zuerst aufgeführt wird.


23
2017-11-13 04:08



Dieser Prozess hat sich in Windows 10 geändert, obwohl ich den neuen Prozess nicht kenne Ich weiß, dass das oben genannte nicht auf Windows 10 zutrifft, siehe diesen Blog - blogs.technet.microsoft.com/networking/2015/08/14/ ... - Robert


In Windows 10 (und Windows Server 2016) müssen Sie die Metrik jeder Schnittstelle in der gewünschten Reihenfolge aktualisieren.

  1. Gehe zu Systemsteuerung> Netzwerk und Internet> Netzwerkverbindungen
  2. Klicken Sie mit der rechten Maustaste auf die gewünschte Verbindung (Verbindung mit höherer Priorität)
  3. Klicken Sie auf Eigenschaften> Internetprotokoll Version 4
  4. Klicken Sie auf Eigenschaften> Erweitert
  5. Deaktivieren Sie "Automatische Metrik"
  6. Geben Sie 10 in 'Schnittstellenmetrik' ein
  7. OK klicken

Verweise:

Ich verwendete 10 für mein LAN, 20 für WLAN und 100 für VPN-Schnittstellen (ich bevorzuge lokale DNS bei der Arbeit, dies kann für andere umgekehrt sein). Merken niedrigere Metrik = höhere Priorität.

Siehe diesen Artikel im Microsoft Support für Eine Erläuterung der automatischen Metrikfunktion für IPv4-Routen.


11
2017-09-26 20:06



+1 Für mich unter Windows 10 war dies die einzige Lösung, danke. - GµårÐïåñ


Diese Seite beschreibt den Algorithmus, mit dem Windows DNS-Abfragen durchführt. Es ist nicht tief genug, um Ihnen alle Antworten zu geben, die Sie suchen, aber einige Zeit mit einem Sniffer und dieser Artikel sollte alles sein, was Sie brauchen, um zu bestimmen, was in Ihrer spezifischen Situation passiert.


8
2017-11-13 04:41





Ich hatte genau das gleiche Problem. Ich habe einen Tag damit verbracht, es herauszufinden. Jetzt weiß ich es und es funktioniert wie ein Zauber.

Wenn Sie mehrere Netzwerkkarten haben und wenn Sie in jedem DNS-Server angeben. Wissen Sie, welcher DNS-Server zuletzt verwendet wird?

Nun, Sie können es durch Übung überprüfen.

nslookup 192.168.3.6

Sie sehen also den Server, den Ihr PC tatsächlich benutzt

Die Frage ist - Von was hängt es ab, was DNS-Server Windows verwenden und wie wir es ändern können.

Wir brauchen es besonders, wenn wir VPN-Clients verwenden.

Das Antworten von qwerty2010 ist richtig und richtig. Aber Sie können es nur verwenden, wenn Sie NIC in der Systemsteuerung haben - Netzwerk und Sharing Center - Adaptereinstellungen ändern - Liste der NICs

Nur wenn Sie die nic sehen, die für Ihren VPN-Client verantwortlich ist, können Sie eine grafische Methode verwenden, um Windows anzuzeigen, welchen DNS-Server (den Sie auf einer bestimmten nic angeben) verwenden möchten.

Also gehst du Network und Sharing Center -> Adaptereinstellungen ändern -> Erweitert -> Erweiterte Einstellungen -> und verschiebst die NIC mit DNS, die du verwenden möchtest. (UP müssen Sie es hochheben).

Wenn Sie zum Beispiel Shrew vpn client verwenden, haben Sie keine Nics.

Wie geht's.

Sie öffnen die Registrierung.

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

Und Sie suchen in den Unterordnern 0000, 0001 etc den Ordner mit

DriverDesc = Shrew Soft Virtual Adapter

fein. Dann kopierst du in die Zwischenablage

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

Jetzt gehst du

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

und du öffnest dich key = Bind. Sie werden die Liste so sehen

\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}

Alles, was Sie tun müssen, ist an die Spitze

\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}

Das ist alles. Es ist nicht notwendig, neu zu starten.

Jetzt verwenden Ihre Windows DNS in sprew vpn nic angegeben, wenn Sie VPN-Verbindung verwenden.


2
2017-10-29 08:40





Da dies Ihnen oder anderen helfen kann, können Sie die Windows Round-Robin-Nutzung der aufgelisteten DNS deaktivieren, um die DNS-Nutzung vorhersehbarer zu machen. Versuchen Sie die Einstellung RoundRobin=0 in dem HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DNS\Parameters (Referenz) um die DNS Round-Robing zu deaktivieren.

Es gibt auch ein "Timeout" zum Rotieren der Server, Sie können auch versuchen, es zu setzen Null:

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

0
2017-09-24 14:05



Gemäß der genannten "Referenz" (Link) gilt dies für die Konfiguration des DNS-Servers, indem mehrere IP-Adressen für einige abgefragte FQDN in Sortierreihenfolge von Abfrage zu Abfrage gesendet werden. Dies hat nichts mit der Frage zu tun, wie ein DNS-Resolver (Client) den DNS-Server auswählt, der abgefragt werden soll. - cepharum


Es entscheidet nicht zufällig. Sie sind mit einem Router verbunden, der die IP-Adresse von einer Firma erhält, die über DNS-Server verfügt. Sie erhalten Ihre Anfrage, es sei denn, Sie ändern die IP manuell zu einem anderen DNS, zum Beispiel: OpenDns. Oder vielleicht entscheiden Sie sich für Ihre eigenen DNS-Server. Das funktioniert auch. Geben Sie einfach die IP-Adressen im Netzwerkcenter ein und alles sollte gut sein. Und ja, Sie müssen diese manuell einstellen.

Sie können auch eine Datei anpassen C:\Windows\System32 "Hosts" ohne Erweiterung genannt. Sie können URL-Anfragen umleiten, anstatt sie an das Standard-DNS zu senden. An einen lokalen Server (der laufen und Port 80 hören muss)


-11
2017-11-13 03:54



Grundsätzlich ist alles, was Sie hier gesagt haben, falsch - MDMarra
Und eine zusätzliche -1, um sogar die schwärende Gräuel zu erwähnen, die die Hosts-Datei ist. - Maximus Minimus
Weg zum informativen MarkM - KdgDev
@WebDevHobo - Es gibt wirklich zu viel, um einen Kommentar zu korrigieren, aber ich werde auf die großen Punkte eingehen. 1) Das OP hat einen Computer mit mehreren Schnittstellen (höchstwahrscheinlich separate NICs), und jeder hat einen anderen DNS definiert. Im Zusammenhang mit der Frage, er läuft klar ein paar interne DNS-Server oder hat ein paar bevorzugte externe DNS-Server - die Box ist wahrscheinlich multi-homed. 2) Sie müssen die Adresse eines internen DNS-Servers nicht manuell festlegen, wenn Sie DHCP in der DHCP-Serverkonfiguration für diesen Adresspool verwenden. 3) Der Pfad zur hosts Datei ist c: \ windows \ system32 \ drivers \ etc - MDMarra
Und die HOSTS-Datei sollte in dieser Situation oder praktisch nie verwendet werden, es sei denn, Sie machen lokale Entwicklung und verwenden HOST-Header oder ähnliches und benötigen einen FQDN, um lokal zu beheben. Der Server muss Port 80 nicht ausführen, unabhängig davon, ob die Datei HOSTS für die Namensauflösung oder ein DNS-Server verwendet wird. Einfach anhängen: Portnummer an das Ende der URL. HOSTS kümmert sich nicht um den Port, genau wie DNS nicht - es ist eine Möglichkeit, einen Hostnamen in eine IP-Adresse zu übersetzen und nicht mehr. - MDMarra