Empêcher VPN de changer DNS sur l'aperçu du développeur Windows 7/8


10

J'ai un client qui utilise une connexion VPN, mais il configure automatiquement mes paramètres DNS sur un serveur DNS inexistant, ce qui signifie que chaque résolution DNS expire jusqu'à ce que l'alternative soit essayée, ce qui ralentit vraiment tout le trafic Internet.

Existe-t-il un moyen d'empêcher une application de remplacer mes paramètres DNS (sans activer l'UAC)?

Sinon, existe-t-il un moyen de configurer une sorte de routage local qui dit «lorsqu'une demande DNS pour l'adresse IP A arrive, utilisez réellement l'adresse IP B»?

J'utilise l'aperçu du développeur Windows 8 (mais je pense que cela devrait fonctionner de la même manière que Windows 7).

Merci

Réponses:


18

Je ne pense pas qu'il existe un moyen de l' empêcher de se produire, en dehors de l'attribution statique des serveurs DNS sur la connexion VPN.

Pour modifier l'ordre dans lequel les serveurs DNS sont interrogés, on est censé être en mesure de modifier l'ordre de liaison de l'interface selon /superuser//a/314379/120267 , mais cela ne semble pas affecter les connexions VPN dans mes tests personnels sur Windows 7; J'ai confirmé que ma connexion VPN est toujours ajoutée en haut de la HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage\Bindliste, quels que soient les paramètres de l'ordre de liaison de l'interface.

Cependant, vous pouvez réinitialiser les modifications DNS une fois la connexion VPN établie.

Collecte d'informations

Ouvrez une invite de commande ( Start-> Run...-> cmd) puis exécutez netsh interface ipv4 show dnsservers. Vous verrez une sortie similaire à la suivante:

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
    ...

Vous avez besoin du nom d'interface pour le VPN, et éventuellement du premier serveur DNS de votre connexion non VPN . Dans cet exemple, ce sont respectivement Mon VPN et 192.168.0.1 .


Tout configurer

Option 1: désactiver le DNS VPN

En supposant que vous n'avez pas du tout besoin des serveurs DNS de votre VPN, vous pouvez simplement exécuter ce qui suit dans l'invite de commande:

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

Si vous réexécutez netsh interface ipv4 show dnsservers, vous verrez que les serveurs DNS associés au VPN ont été supprimés; les serveurs DNS de votre connexion non VPN seront utilisés pour résoudre les noms d'hôte.


Option 2: supplément VPN DNS

Si vous avez besoin des serveurs DNS de votre VPN pour résoudre les noms d'hôte intranet, vous pouvez exécuter ce qui suit dans l'invite de commande:

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

Dans ce cas, netsh interface ipv4 show dnsserversindique que le premier serveur DNS de votre connexion non VPN a été ajouté en haut de la liste des serveurs DNS de votre VPN. Il sera utilisé pour résoudre les noms d'hôte en premier, et en cas d'échec, retomber sur l'utilisation des serveurs DNS habituels de votre VPN.


Vous êtes un héros monsieur, merci pour la réponse détaillée, cela semble bien fonctionner! J'ai essayé de jouer avec netsh mais je n'ai pas réussi à aller aussi loin ...
Wiebe Tijsma

1

J'avais un problème similaire; la connexion à un serveur VPN remplacerait le DNS de mon poste de travail (client VPN distant) afin que le DNS du LAN local soit masqué. J'ai décrit le problème plus en détail du côté de Stackoverflow avant de me faire remarquer que j'aurais dû le publier ici à la place.

Après avoir lu ce fil, il est évident que le remplacement ne peut pas être empêché à l'aide de la configuration du client OpenVPN. Ma solution a été d'ajouter un fichier batch dans le répertoire de configuration OpenVPN qui s'exécute lorsque la connexion OpenVPN est établie. Si le fichier OVPN est appelé company.ovpn, le fichier exécuté sur connect doit être nommé company_up.bat.

J'ai augmenté le fichier depuis la version que j'ai publiée dans ma question dans StackOverflow plus tôt ce soir. Maintenant, cela ressemble à ceci:

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: Un hack pour attendre quelques secondes avant de continuer. La dernière version (2.3) du client OpenVPN ignorerait le DNS et routerait les modifications si elle était exécutée sans délai.

2: définissez le DNS de la connexion VPN pour pointer vers l'hôte local. J'ai un résolveur (j'utilise SimpleDNS Plus ) en cours d'exécution sur l'hôte local qui transmet les requêtes au domaine de l'entreprise au serveur DNS de l'entreprise via le VPN, et tout le reste au serveur DNS LAN local. Notez que je ne pouvais pas utiliser un résolveur LAN local pour transmettre les requêtes du domaine de l'entreprise au DNS de l'entreprise via le VPN, car le point de terminaison VPN est sur l'hôte local. Le nom de la connexion ("Connexion au réseau local 4") a été déterminé à l'invite de commande via "ipconfig / all".

3: Le serveur VPN de l'entreprise est configuré pour acheminer tout le trafic sortant via le VPN tout en restreignant les connexions SSH sortantes (vers Internet). Cela entrait en conflit avec mon flux de travail, et je supprime d'abord la route "0.0.0.0 netmask 0.0.0.0" ...

4: .. puis j'ajoute à nouveau la route 0.0.0.0/0 pour pointer vers la passerelle LAN locale, et définit sa métrique (poids) à 1000 comme fourre-tout pour tout le trafic qui n'est pas acheminé autrement.

5: Sans "exit 0" OpenVPN crache un avertissement d'erreur du script a échoué (avec un état de sortie 1).

J'espère que cela est utile pour quelqu'un .. cela fonctionne assez bien pour moi (pas besoin de faire des ajustements de route ou DNS manuellement chaque fois que j'ouvre une connexion).


0

Existe-t-il un moyen d'empêcher une application de remplacer mes paramètres DNS (sans activer l'UAC)?

Au moins, il n'y a pas de moyen facile de le faire.

Sinon, existe-t-il un moyen de configurer une sorte de routage local qui dit «lorsqu'une demande DNS pour l'adresse IP A arrive, utilisez réellement l'adresse IP B»?

Vous pouvez ajouter des entrées au fichier hosts ( C:\Windows\System32\drivers\etc\hosts). Ce fichier contient des mappages des noms d'hôte aux adresses IP et est préféré aux requêtes DNS.


Eh bien, je connais le fichier hosts, mais tout est basé sur l'adresse IP, donc cela ne fonctionne pas malheureusement ...
Wiebe Tijsma

Oh, ok, maintenant je comprends votre question. Et non, vous ne pouvez pas rediriger les demandes d'une IP vers une autre.
Michael

0

Pouvez-vous vérifier l'état de la case à cocher «Utiliser la passerelle par défaut sur le réseau distant». Cela se trouve en ouvrant les propriétés de votre connexion VPN et accédez à l'onglet Réseau et sélectionnez TCP / IP v4 ou TCP / IP V6, puis sélectionnez les propriétés, puis avancé. Cela peut être activé, ce qui pourrait signifier que tout le trafic Internet est acheminé via la connexion VPN.Il n'est pas toujours possible de le désactiver et de toujours faire ce que vous voulez avec le VPN, mais il peut être désactivé, cela pourrait accélérer l'accès à Internet.

Si cela n'aide pas, il y a un onglet DNS et vous pouvez essayer d'y ajouter vos serveurs DNS. J'ai essayé cela, mais je m'attendrais à ce que ces paramètres remplacent les paramètres automatiques.


Ce n'est pas vérifié, donc il n'achemine pas tout le trafic Internet via VPN (lorsque le nom est finalement résolu, la connexion est assez rapide). J'ai essayé de modifier les paramètres DNS là-bas, mais malheureusement, tout est revenu automatiquement aux paramètres DNS invalides lorsque je redémarre la connexion :(
Wiebe Tijsma

Si vous ne pouvez pas empêcher la modification du DNS, est-il possible de le faire échouer plus rapidement en utilisant un pare-feu pour bloquer les requêtes DNS à cette adresse?
sgmoore

0

Malheureusement, netsh ne peut pas supprimer les serveurs DNS attribués par DHCP. Mais cela peut être fait en effaçant le paramètre DhcpNameServer dans

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

clé d'enregistrement.


0

À partir de 2017, cela est désormais possible s'il est basé sur OpenVPN

Ajoutez une ligne à votre fichier de configuration client de

pull-filter ignorer "DNS dhcp-option"

et il ignorera toutes les lignes de configuration poussées qui commencent par le texte cité.

Les trois mots-clés d'action sont accept ignore reject. Je n'ai pas découvert de cas d'utilisation pour le rejet.


0

Je supprime simplement cette option de la configuration VPN client

setenv opt block-outside-dns

Il a résolu le problème

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.