J'ai configuré la connexion PPTP VPN sur Ubuntu 16.04.3 LTS via NetworkManager (plug-in nm-pptp-ppp) et tout fonctionne. Ma configuration:
J'ai commenté #dns=dnsmasq
dans /etc/NetworkManager/NetworkManager.conf
, j'ai lancé Sudo dpkg-reconfigure resolvconf
et Sudo resolvconf -u
.
Sans connexion VPN, mon /etc/resolv.conf
contient la ligne suivante:
nameserver 192.168.3.1
où 192.168.3.1 est l'adresse IP de mon routeur.
Après cela, la connexion VPN /etc/resolv.conf
devient:
nameserver 192.168.1.1
nameserver 192.168.3.1
Mais pour autant que je sache, il ne devrait contenir que 192.168.1.1.
Est-il possible de supprimer par programme l'IP (192.168.3.1) de mon routeur de /etc/resolv.conf
?
Je veux dire par répartiteur NetworkManager ou similaire.
Il semble que je n'ai pas le problème de fuite DNS avec ma configuration actuelle.
P.S. Je comprends que ma question a peut-être déjà été abordée, mais des doublons possibles ne répondent pas à mes besoins.
Mise à jour 1. Sur mon autre ordinateur portable 16.04, je devais également désactiver systemd-resolved.service
avec:
Sudo systemctl stop systemd-resolved.service
Sudo systemctl disable systemd-resolved.service
Update 2 J'ai écrit un simple dispatch direct sale et je l'ai placé dans /etc/NetworkManager/dispatcher.d/03vpn
:
#!/bin/sh -e
RESOLV_CONF=`readlink /etc/resolv.conf`
ROUTER_IP="nameserver 192.168.3.1"
logger -t DNS-antileak "start"
# disable local router IP in /etc/resolv.conf
if [ "$2" = "vpn-up" ]; then
sed -i "s/$ROUTER_IP/#$ROUTER_IP/g" $RESOLV_CONF
logger -t DNS-antileak "disabled $ROUTER_IP on vpn-up"
fi
if [ "$2" = "vpn-down" ]; then
sed -i "s/#$ROUTER_IP/$ROUTER_IP/g" $RESOLV_CONF
logger -t DNS-antileak "enabled $ROUTER_IP on vpn-down"
fi
logger -t DNS-antileak "end"
exit 0
Il peut être activé avec
Sudo chown root:root /etc/NetworkManager/dispatcher.d/03vpn
Sudo chmod 755 /etc/NetworkManager/dispatcher.d/03vpn
Je l'ai testé avec les connexions OpenVPN et PPTP.
J'ai aussi trouvé d'autres tests de fuite de DNS: Whoer et WhatLeaks .
Il s'agit d'un bogue bien connu de NetworkManager, en particulier # 121111 . Cela remonte à Ubuntu 13.04 jusqu’à 16.04 et dans une moindre mesure à Ubuntu 16.10.
Il semble que je n'ai pas de problème de fuite de DNS avec ma configuration actuelle.
Alors considérez-vous plutôt chanceux. :) La plupart des utilisateurs (y compris moi-même) ont connu de graves fuites DNS et ont essayé différentes solutions pour les résoudre.
Voici quelques approches suggérées dans le rapport de bug (résumé):
Faites une copie de sauvegarde de ce fichier NetworkManager:
Sudo cp /usr/lib/NetworkManager/nm-openvpn-service-openvpn-helper /usr/lib/NetworkManager/nm-openvpn-service-openvpn-helper.orig
Ajoutez les 3 lignes suivantes au fichier.
#!/bin/bash /etc/openvpn/update-resolv-conf $@ /usr/lib/NetworkManager/nm-openvpn-service-openvpn-helper.orig $@
Ensuite:
Sudo chmod +x /usr/lib/NetworkManager/nm-openvpn-service-openvpn-helper
Mise en garde: vous devez exécuter la commande suivante après avoir déconnecté le VPN.
Sudo script_type=down dev=tun0 /etc/openvpn/update-resolv-conf
Modifiez votre connexion VPN (via NM) et configurez un DNS statique, par exemple à l'aide de serveurs Google:
8.8.8.8, 8.8.4.4
De cette façon, la demande DNS est envoyée via une adresse IP externe et est donc acheminée à l'aide du VPN.
Ensuite, configurez également votre connexion sans fil pour utiliser ces serveurs DNS statiques.
Exécutez
openvpn
via la ligne de commande.
(... d'autres solutions encombrantes dont je ne discuterai pas ici ...)
Supprimer ce fichier de configuration:
Sudo rm -rf /etc/resolv.conf
Ajoutez cette ligne à la section
[main]
de/etc/NetworkManager/NetworkManager.conf
:dns=dnsmasq
Si le package
dnsmasq
est installé, vous devez vous assurer que le servicednsmasq
n'est pas activé, sinon cela ne fonctionnera pas. Vous devriez également redémarrer.
Ce bug a été corrigé dans Ubuntu 17.04 . Plutôt que d'essayer des correctifs aléatoires sur votre système, il est probablement préférable de procéder simplement à une mise à niveau. :)