Verhindern Sie, dass VPN das DNS in der Windows 7/8-Entwicklervorschau ändert


10

Ich habe einen Kunden, der eine VPN-Verbindung verwendet, meine DNS-Einstellungen jedoch automatisch für einen nicht vorhandenen DNS-Server konfiguriert. Dies bedeutet, dass bei jeder DNS-Auflösung eine Zeitüberschreitung auftritt, bis die Alternative ausprobiert wird, wodurch der gesamte Internetverkehr wirklich verlangsamt wird.

Gibt es eine Möglichkeit, zu verhindern, dass eine Anwendung meine DNS-Einstellungen überschreibt (ohne die Benutzerkontensteuerung zu aktivieren)?

Gibt es eine Möglichkeit, ein lokales Routing einzurichten, das besagt: "Wenn eine DNS-Anfrage für die IP-Adresse A eingeht, verwenden Sie tatsächlich die IP-Adresse B".

Ich verwende die Windows 8 Developer Preview (aber ich vermute, dass sie genauso funktionieren sollte wie Windows 7).

Vielen Dank

Antworten:


18

Ich glaube nicht, dass es eine Möglichkeit gibt, dies zu verhindern , abgesehen von der statischen Zuweisung der DNS-Server auf der VPN-Verbindung.

Um die Reihenfolge zu ändern, in der DNS-Server abgefragt werden, sollte man in der Lage sein, die Reihenfolge der Schnittstellenbindung gemäß /superuser//a/314379/120267 zu ändern. Dies scheint jedoch keine Auswirkungen auf die VPN-Verbindungen in zu haben meine persönlichen Tests unter Windows 7; Ich habe bestätigt, dass meine VPN-Verbindung HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage\Bindunabhängig von den Einstellungen für die Schnittstellenbindungsreihenfolge konsistent ganz oben auf der Liste steht.

Sie können die DNS-Änderungen jedoch zurücksetzen, nachdem die VPN-Verbindung hergestellt wurde.

Informationen sammeln

Öffnen Sie eine Eingabeaufforderung ( Start-> Run...-> cmd) und dann laufen netsh interface ipv4 show dnsservers. Sie sehen eine Ausgabe ähnlich der folgenden:

Configuration for interface "My VPN"
    Statically Configured DNS Servers:    11.22.33.44
                                          55.66.77.88
   ...

Configuration for interface "Local Network Connection"
    DNS servers configured through DHCP:  192.168.0.1
                                          192.168.0.2
    ...

Sie benötigen den Schnittstellennamen für das VPN und optional den ersten DNS-Server Ihrer Nicht-VPN-Verbindung . In diesem Beispiel handelt es sich um Mein VPN bzw. 192.168.0.1 .


Alles einrichten

Option 1: Deaktivieren Sie VPN DNS

Angenommen, Sie benötigen die DNS-Server Ihres VPN überhaupt nicht, können Sie einfach Folgendes an der Eingabeaufforderung ausführen:

netsh interface ipv4 delete dnsservers name="<Interface Name>" address=all validate=no

Eg: netsh interface ipv4 delete dnsservers name="My VPN" address=all validate=no

Wenn Sie netsh interface ipv4 show dnsserverserneut ausführen , werden Sie feststellen, dass die dem VPN zugeordneten DNS-Server entfernt wurden. Die DNS-Server Ihrer Nicht-VPN-Verbindung werden zum Auflösen von Hostnamen verwendet.


Option 2: VPN-DNS ergänzen

Wenn Sie die DNS-Server Ihres VPN zum Auflösen von Intranet-Hostnamen benötigen, können Sie an der Eingabeaufforderung Folgendes ausführen:

netsh interface ipv4 add dnsservers name="<Interface Name>" address=<Non-VPN DNS server> index=1 validate=no

Eg: netsh interface ipv4 add dnsservers name="My VPN" address=192.168.0.1 index=1 validate=no

In diesem Fall netsh interface ipv4 show dnsserverswird angezeigt, dass der erste DNS-Server Ihrer Nicht-VPN-Verbindung oben in der Liste der DNS-Server Ihres VPN hinzugefügt wurde. Es wird verwendet, um zuerst Hostnamen aufzulösen. Wenn dies nicht erfolgreich ist, können Sie die regulären DNS-Server Ihres VPN verwenden.


Sie sind ein Held, Sir, danke für die ausführliche Antwort, es scheint gut zu funktionieren! Ich habe versucht, mit
Netsh herumzuspielen,

1

Ich hatte ein ähnliches Problem; Wenn Sie eine Verbindung zu einem VPN-Server herstellen, wird das DNS meiner Workstation (Remote-VPN-Client) überschrieben, sodass das lokale LAN-DNS verdeckt wird. Ich habe das Problem auf der Stackoverflow-Seite ausführlicher beschrieben, bevor ich darauf hingewiesen wurde, dass ich es stattdessen hier hätte posten sollen.

Nach dem Lesen dieses Threads ist es offensichtlich, dass das Überschreiben mit der OpenVPN-Clientkonfiguration nicht verhindert werden kann. Meine Lösung bestand darin, eine Batchdatei im OpenVPN-Konfigurationsverzeichnis hinzuzufügen, die ausgeführt wird, wenn die OpenVPN-Verbindung hergestellt wird. Wenn die OVPN-Datei company.ovpn heißt, muss die Datei, die bei connect ausgeführt wird, company_up.bat heißen.

Ich habe die Datei seit der Version, die ich heute Abend in StackOverflow zu meiner Frage gepostet habe, erweitert. Jetzt sieht es so aus:

1: ping 127.0.0.1 -n 2 > nul
2: netsh interface ip set dns "Local Area Connection 4" static 127.0.0.1
3: route delete 0.0.0.0
4: route add -p 0.0.0.0/0 172.20.20.1 metric 1000
5: exit 0

1: Ein Hack, der einige Sekunden warten muss, bevor Sie fortfahren. Die neueste Version (2.3) des OpenVPN-Clients ignoriert die DNS- und Routenänderungen, wenn sie unverzüglich ausgeführt wird.

2: Stellen Sie den DNS der VPN-Verbindung so ein, dass er auf den lokalen Host verweist. Auf dem lokalen Host läuft ein Resolver (ich verwende SimpleDNS Plus ), der die Abfragen über das VPN an die Unternehmensdomäne an den Unternehmens-DNS-Server und alles andere an den lokalen LAN-DNS-Server weiterleitet. Beachten Sie, dass ich keinen lokalen LAN-Resolver verwenden konnte, um die Abfragen für die Unternehmensdomäne über das VPN an das Unternehmens-DNS weiterzuleiten, da sich der VPN-Endpunkt auf dem lokalen Host befindet. Der Verbindungsname ("Local Area Connection 4") wurde an der Eingabeaufforderung über "ipconfig / all" ermittelt.

3: Der Firmen-VPN-Server ist so konfiguriert, dass der gesamte ausgehende Datenverkehr über das VPN weitergeleitet wird, während gleichzeitig ausgehende SSH-Verbindungen (zum Internet) eingeschränkt werden. Dies widersprach meinem Workflow und ich lösche zuerst die Route "0.0.0.0 netmask 0.0.0.0" ...

4: .. und dann füge ich die Route 0.0.0.0/0 erneut hinzu, um auf das lokale LAN-Gateway zu verweisen, und setze ihre Metrik (Gewichtung) auf 1000 als Sammelbegriff für den gesamten Verkehr, der nicht anderweitig geleitet wird.

5: Ohne "exit 0" gibt OpenVPN eine Fehlerwarnung aus, dass das Skript fehlgeschlagen ist (mit einem Exit-Status 1).

Hoffentlich ist dies für jemanden nützlich. Es funktioniert ziemlich gut für mich (keine Notwendigkeit, Routen- oder DNS-Anpassungen jedes Mal manuell vorzunehmen, wenn ich eine Verbindung öffne).


0

Gibt es eine Möglichkeit, zu verhindern, dass eine Anwendung meine DNS-Einstellungen überschreibt (ohne die Benutzerkontensteuerung zu aktivieren)?

Zumindest gibt es dafür keinen einfachen Weg.

Gibt es eine Möglichkeit, ein lokales Routing einzurichten, das besagt: "Wenn eine DNS-Anfrage für die IP-Adresse A eingeht, verwenden Sie tatsächlich die IP-Adresse B".

Sie können der Hosts-Datei ( C:\Windows\System32\drivers\etc\hosts) Einträge hinzufügen . Diese Datei enthält Zuordnungen von Hostnamen zu IP-Adressen und wird DNS-Anforderungen vorgezogen.


Nun, ich weiß über die Hosts-Datei Bescheid, aber dies ist alles IP-Adresse basiert, so dass das leider nicht funktioniert ...
Wiebe Tijsma

Oh, ok, jetzt bekomme ich deine Frage. Und nein, Sie können Anforderungen nicht von einer IP auf eine andere umleiten.
Michael

0

Können Sie den Status des Kontrollkästchens "Standard-Gateway im Remote-Netzwerk verwenden" aktivieren? Dies finden Sie, indem Sie die Eigenschaften Ihrer VPN-Verbindung öffnen und auf der Registerkarte Netzwerk die Option TCP / IP v4 oder TCP / IP V6 auswählen. Wählen Sie dann Eigenschaften aus und erweitern Sie sie. Dies kann aktiviert sein, was bedeuten kann, dass der gesamte Internetverkehr über die VPN-Verbindung geleitet wird. Es ist nicht immer möglich, dies zu deaktivieren und dennoch das zu tun, was Sie mit dem VPN möchten. Es kann jedoch deaktiviert werden und den Internetzugang beschleunigen.

Wenn dies nicht hilft, gibt es dort eine DNS-Registerkarte, und Sie können versuchen, Ihre DNS-Server dort hinzuzufügen. Ich habe dies versucht, aber ich würde erwarten, dass diese Einstellungen die automatischen Einstellungen überschreiben.


Es wird nicht überprüft, daher wird nicht der gesamte Internetverkehr über VPN weitergeleitet (wenn der Name endgültig aufgelöst ist, ist die Verbindung schnell genug). Ich habe versucht, die DNS-Einstellungen dort zu ändern, aber leider wird alles automatisch auf die ungültigen DNS-Einstellungen zurückgesetzt, wenn ich die Verbindung neu
starte

Wenn Sie nicht verhindern können, dass das DNS geändert wird, können Sie es dann schneller zum Scheitern bringen, indem Sie eine Firewall verwenden, um DNS-Anforderungen an diese Adresse zu blockieren?
sgmoore

0

Leider kann netsh keine von dhcp zugewiesenen DNS-Server löschen. Dies kann jedoch durch Löschen des Parameters DhcpNameServer in erfolgen

HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\{id}

Registrierungsschlüssel.


0

Ab 2017 ist dies nun möglich, wenn es auf OpenVPN basiert

Fügen Sie Ihrer Client-Konfigurationsdatei von eine Zeile hinzu

Pull-Filter ignorieren "DHCP-Option DNS"

und es werden alle Push-Konfigurationszeilen ignoriert, die mit dem zitierten Text beginnen.

Die drei Aktionsschlüsselwörter sind accept ignore reject. Ich habe keinen Anwendungsfall für die Ablehnung gefunden.


0

Ich entferne diese Option einfach aus der Client-VPN-Konfiguration

setenv opt block-out-dns

Das Problem wurde behoben

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.