web-dev-qa-db-fra.com

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 ou à l'extérieur du réseau VPN.

Lorsque j'utilisais Ubuntu 16.04 et le VPN, le fichier "/etc/resolv.conf/" contenait les serveurs DNS du réseau (VPN) que j'avais 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 le system-resolved.

Je soupçonne que c'est un bogue parce que le VPN fonctionnait bien sous Ubuntu 16.04. Est-il possible de configurer 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 message, mais le message d'erreur suivant s'affiche:

 Authenticate/Decrypt packet error: cipher final failed

J'ai vérifié que le serveur utilise la compression lzo et je l'ai également activé. La connexion reste active mais je ne peux accéder à 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
31
orestis

J'ai trouvé une solution sur cet article de blog . Bien que deux solutions soient mentionnées, je préfère utiliser la seconde car cela signifie que mon DNS est défini 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 (par exemple, client.ovpn) en modifiant les scripts up/down 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 réglages originaux haut/bas).

20
Andy Turfer

Problème

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

En fait, l'une des premières lignes de ce script recherche l'exécutable /sbin/resolvconf:

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

L'installation de resolvconf via apt-get n'est pas une solution car le script /etc/openvpn/update-resolv-conf met à jour le fichier /etc/resolv.conf avec l'entrée DNS transmise, mais le périphérique tun semble l'ignorer.

Solution

  1. Ubuntu 18.04 utilise systemd-resolved, vous n'avez donc qu'à installer le script d'assistance openvpn pour systemd-resolved via

    Sudo apt install openvpn-systemd-resolved
    

    ou avec ces instructions GitHub

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

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

    Cela au lieu d’ajouter /etc/openvpn/update-resolv-conf à la conf.

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

    dhcp-option DOMAIN-ROUTE .
    
34
Qlimax

En fait, il existe une solution beaucoup plus facile à ce problème. Le problème est lié au trafic DNS et à la manière dont Ubuntu 18 le gère. Par défaut, le transfert IP est désactivé, ce dont OpenVPN a besoin pour fournir un réseau adéquat. Tout ce que vous avez à faire est d’exécuter la commande suivante:

Sudo nano /etc/sysctl.conf

Une fois ce fichier ouvert, recherchez la ligne contenant 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). Enregistrez le fichier, puis redémarrez votre instance de serveur OpenVPN.

Ce correctif ne nécessite aucune modification du code client ou OpenVPN après la mise à niveau vers Ubuntu 18. Testé et confirmé en état de fonctionner.

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

3
Max

Testé sur Ubuntu le 18.04 au 13 septembre 2018.

Il existe une autre commande utile pour configurer ce dont vous avez besoin via une ligne de commande. Mais dans mon cas, vous pouvez contrôler votre connexion VPN avec une ligne de commande et une 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 devrait pas utiliser la passerelle distante comme route par défaut

Et beaucoup plus intéressé touche finale:

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 vpn avec une interface graphique ou utiliser les commandes suivantes:

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

1
vskubriev

Je suis aussi touché. Dans mon cas, j'utilise OpenVPN avec un serveur de noms interne (situé à l'intérieur du VPN). Cela a fonctionné jusqu'à Ubuntu 17.10 (avec "hosts: files dns" dans /etc/nsswitch.conf).

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

Cependant, la résolution de noms pour les hôtes du VPN ne fonctionnait plus (ou du moins de façon sporadique ... Je suppose que le cache DNS local choisissait les noms, mais après un temps assez long).

Ce qui semble aider, voire résoudre le problème (bien que ce soit trop tôt pour le dire) est d'installer le paquet ci-dessous:

Sudo apt install openvpn-systemd-résolu

Dans quelques jours, j'aurai plus d'expérience pour savoir si cela résout mon problème ou non.

Si vous êtes également concerné, essayez ceci et postez des commentaires!

À votre santé,

Michael.

0