83 votes

Ubuntu 18.04 pas de résolution DNS lors de la connexion à OpenVPN

Lorsque je me connecte à un réseau VPN via Gnome Network-manager, je perds la résolution DNS et, en pratique, je ne peux pas accéder aux ressources à l'intérieur du réseau VPN ou à l'extérieur.

Lorsque j'utilisais Ubuntu 16.04 et que j'utilisais le VPN, le message " /etc/resolv.conf/ "contient les serveurs DNS du réseau (VPN) auquel je me suis connecté. Maintenant, il contient toujours les entrées suivantes :

nameserver 127.0.0.53
search myprovider.com

D'après ce que j'ai compris 127.0.0.53 est l'adresse du stub DNS utilisé par l'application system-resolved .

Je soupçonne qu'il s'agit d'un bug car le VPN fonctionnait bien dans Ubuntu 16.04. Existe-t-il un moyen de définir les serveurs DNS de mon réseau lorsque j'utilise un service VPN ?

Mise à jour :

J'ai essayé de me connecter au réseau OpenVPN avec le fichier de configuration joint à la fin du post, mais j'obtiens l'erreur suivante :

 Authenticate/Decrypt packet error: cipher final failed

J'ai vérifié que le serveur utilise la compression lzo et je l'ai également activée. La connexion reste active mais je ne peux naviguer vers aucune page à l'intérieur ou à l'extérieur du VPN.

Dans le fichier de configuration ci-dessous, j'ai inclus les solutions postées dans les réponses

 client
 dev tun
 proto udp
 remote openvpn.bibsys.no 1194
 remote my-server-2 1194
 resolv-retry infinite
 nobind
 user myuser
 group myuser
 persist-key
 persist-tun
 ca ca-cert.pem
 cert openvpn.crt
 key openvpn.key
 cipher AES-256-CBC
 comp-lzo yes
 script-security 2
 up /etc/openvpn/scripts/update-systemd-resolved
 down /etc/openvpn/scripts/update-systemd-resolved
 down-pre

117voto

Qlimax Points 1279

Problème

Le dossier /etc/resolv.conf n'est pas mis à jour par le /etc/openvpn/update-resolv-conf script car resolvconf n'est pas installé par défaut sur ubuntu 18.04.

En fait, l'une des premières lignes de ce script vérifie la présence de la balise /sbin/resolvconf exécutable :

[ -x /sbin/resolvconf ] || exit 0

Installation de resolvconf via apt-get n'est pas une solution car le /etc/openvpn/update-resolv-conf Le script met à jour le fichier /etc/resolv.conf avec l'entrée DNS poussée mais l'appareil tun semble l'ignorer.

Solution

  1. Ubuntu 18.04 utilise systemd-resolved donc tout ce que vous avez à faire est d'installer l'assistant openvpn script pour systemd-resolved via

    sudo apt install openvpn-systemd-resolved

    ou avec ces instructions GitHub

  2. Mettez à jour votre config.ovpn en ajoutant ces lignes :

    script-security 2
    up /etc/openvpn/update-systemd-resolved
    down /etc/openvpn/update-systemd-resolved
    down-pre

    Qu'au lieu d'additionner des montants de /etc/openvpn/update-resolv-conf à la conf.

  3. Pour éviter les fuites de données DNS, vous devez ajouter cette ligne à la fin du fichier config.ovpn (selon ce commentaire sur le problème de systemd ):

    dhcp-option DOMAIN-ROUTE .

49voto

Erik Edin Points 151

J'ai trouvé une solution sur cet article de blog . Bien qu'il y ait deux solutions mentionnées, je préfère utiliser la seconde car elle signifie que mes DNS sont définis par le serveur OpenVPN (la première solution signifie que j'utilise les mêmes serveurs DNS que je sois connecté ou non au serveur OpenVPN).

En bref :

  • sudo mkdir -p /etc/openvpn/scripts
  • sudo wget https://raw.githubusercontent.com/jonathanio/update-systemd-resolved/master/update-systemd-resolved -P /etc/openvpn/scripts/
  • sudo chmod +x /etc/openvpn/scripts/update-systemd-resolved

Ensuite, éditez votre fichier client OpenVPN (e.g. client.ovpn) en changeant les scripts haut/bas en :

script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
up /etc/openvpn/scripts/update-systemd-resolved
down /etc/openvpn/scripts/update-systemd-resolved

(J'ai commenté les paramètres originaux haut/bas).

7voto

Max Points 95

En fait, il existe une solution beaucoup plus simple à ce problème. Le problème concerne le trafic DNS et la façon dont Ubuntu 18 le gère. Par défaut, la redirection d'IP est désactivée, ce dont OpenVPN a besoin pour fournir un réseau correct. Tout ce que vous avez à faire est d'exécuter la commande suivante :

sudo nano /etc/sysctl.conf

Une fois que vous avez ouvert ce fichier, cherchez la ligne qui contient net.ipv4.ip_forward . Si cette ligne est commentée, supprimez le signe # au début de la ligne (si elle n'est pas commentée, vous avez un autre problème). Sauvegardez le fichier et redémarrez votre instance de serveur OpenVPN.

Ce correctif ne nécessite aucune modification du code client ou OpenVPN suite à la mise à jour vers Ubuntu 18. Testé et confirmé comme fonctionnant.

Toutefois, cela suppose évidemment que vous puissiez administrer le serveur. Et malheureusement, le bug existe pour beaucoup qui se connectent simplement avec 18.04 à un serveur OpenVPN qui est administré par quelqu'un d'autre...

4voto

vskubriev Points 797

Testé sur Ubuntu 18.04 le 13 septembre 2018.

Il existe une autre commande utile pour configurer ce dont vous avez besoin via la ligne de commande. Vous pouvez contrôler votre connexion VPN à la fois avec la ligne de commande et l'interface graphique.

sudo nmcli connection add type vpn vpn-type openvpn con-name la.vpn.contoso.com ifname --

ifname -- est requis par défaut, mais n'affecte rien.

sudo nmcli connection modify la.vpn.contoso.com ipv4.dns 172.16.27.1
sudo nmcli connection modify la.vpn.contoso.com ipv4.dns-search int.contoso.com
sudo nmcli connection modify la.vpn.contoso.com ipv4.never-default yes

never-default ne doit pas utiliser la passerelle distante comme route par défaut

Et une touche finale beaucoup plus intéressante :

nmcli connection modify la.vpn.contoso.com vpn.data 'ca = /tmp/la.vpn.contoso.com/you/ca.crt, key = /tmp/you.key, dev = tun, cert = /tmp/you.crt, cert-pass-flags = 1, comp-lzo = adaptive, remote = la.vpn.contoso.com:1194, connection-type = tls'

Ensuite, vous pouvez contrôler le vpn avec l'interface graphique ou utiliser les commandes suivantes :

sudo nmcli --ask connection up la.vpn.contoso.com
sudo nmcli connection down la.vpn.contoso.com

1voto

Coco Points 11

Je suis également touché. Dans mon cas, j'utilise OpenVPN avec un serveur de noms interne (qui est à l'intérieur du VPN). Cela fonctionnait jusqu'à Ubuntu 17.10 (avec hosts: files dns en /etc/nsswitch.conf ).

/etc/resolv.conf a été mis à jour correctement par les scripts d'openvpn (à travers des appels à /etc/openvpn/update-resolv-conf dans le fichier de configuration du client openvpn).

Cependant, la résolution de noms pour les hôtes à l'intérieur du VPN ne fonctionnait plus (ou du moins sporadiquement...). Je suppose que le cache DNS local récupérait les noms, mais après un temps assez long).

Ce qui semble aider, ou même résoudre le problème (bien qu'il soit trop tôt pour le dire) est d'installer le paquet ci-dessous :

sudo apt install openvpn-systemd-resolved

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X