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

40

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

Lorsque j’utilisais Ubuntu 16.04 et le VPN, le /etc/resolv.conf/fichier " " 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.53c'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 indiqué 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
orestis
la source
1
Lors du débogage d'un problème similaire à celui-ci qui ne pouvait pas être résolu exactement de la même manière, j'ai utilisé resolvectl statuset resolvectl helptrouvé ma solution spécifique.
notbad.jpeg

Réponses:

27

J'ai trouvé une solution sur ce 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 haut / bas d'origine).

Andy Turfer
la source
Si vous utilisez l’utilitaire gnome openvpn, où le fichier config.ovpn doit-il être stocké?
orestis
1
config.ovpnn'est pas "trouvé" - c'est le fichier de configuration du client utilisé pour la connexion. Vous le générez ou bien il vous est envoyé par votre fournisseur OpenVPN (et il pourrait ne pas s'appeler config.ovpn- il pourrait s'appeler n'importe quoi, comme client.ovpn).
Andy Turfer
Cela fonctionne parfaitement.
Ahsanul Haque le
2
Je reçoisWARNING: Failed running command (--up/--down): external program fork failed
tête de pierre
Malheureusement, cela n'a pas fonctionné pour un vpn qui utilise TCP, les sites situés en dehors de vpn ne sont pas résolus. J'ai donc commencé à utiliser client.pritunl.com/#install trouvé utile
Saisurya
49

Problème

Le fichier /etc/resolv.confn'est pas mis à jour par le /etc/openvpn/update-resolv-confscript car il resolvconfn'est pas installé par défaut sur Ubuntu 18.04.

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

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

L'installation de resolvconf via apt-getn'est pas une solution, car le /etc/openvpn/update-resolv-confscript met à jour le /etc/resolv.conffichier 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-resolvedvia

    sudo apt install openvpn-systemd-resolved
    

    ou avec ces instructions GitHub

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

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

    Cela au lieu de monter et descendre de /etc/openvpn/update-resolv-confla conf.

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

    dhcp-option DOMAIN-ROUTE .
    
Qlimax
la source
1
Merci beaucoup d'avoir travaillé pour moi sur Ubuntu 18.04. Et je veux préciser, ce paramètre script-security 2est toujours nécessaire avant les lignes haut / bas, sinon le programme tombe en panne avec une erreur (OpenVPN 2.4.4)
lucidyan
Heureux que cela ait aidé :) A changé la dernière phrase de la réponse, ce qui script-security 2 n'était pas nécessaire dans mon cas . C'est peut-être parce que je lance le client openvpn en tant que root (avec sudo)
Qlimax
1
@ Qlimax Savez-vous comment importer ces paramètres dans le client gnome openvpn?
Orestis
2
@orestis vous devez installer ce paquet. sudo apt-get install network-manager-openvpn-gnome Vous devriez alors pouvoir importer des fichiers de configuration .ovpn dans le gestionnaire de réseau gnome. askubuntu.com/questions/187511/… L' interface utilisateur a changé au fil du temps, vous devriez être en mesure de constater que, dans les paramètres-> réseau-> vpn
Qlimax le
1
Surpris, cela fonctionne pour beaucoup d'entre vous: j'ai un ovpn.config, oui, mais NetworkManager ne semble pas l'utiliser. Avez-vous édité le fichier et le réimporté, notamment pour remplacer les scripts up / downs. Parce que je vois ce binaire opaque / usr / lib / NetworkManager / nm-openvpn-service-openvpn-helper utilisé pour lequel je n'ai pas trouvé de documentation. Si la réimportation de ovpn.config est nécessaire, veuillez modifier la réponse.
Harald
5

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 qui le 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). 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é fonctionnant.

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

Max
la source
n'a pas fonctionné pour moi. comment avez-vous déterminé que c'était là le problème, dans votre cas?
hwjp
ATTENTION: vous n'avez pas besoin d'activer ip_forward sur le client openvpn , JAMAIS! c'est un risque de sécurité. Sur le serveur openvpn , vous en aurez peut-être besoin, selon la configuration utilisée et c'est probablement pourquoi ce commentaire est affiché .
higuita
C'était pour moi. Question étrange. Merci.
Kevin C
2

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

vskubriev
la source
0

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.

Michael Opdenacker
la source
Finalement, cela ne semble pas être une solution. J'ai encore le problème. Je suppose que quelque chose d'autre l'a fait fonctionner ...
Michael Opdenacker
1
Peut-être que vous supprimez votre réponse? Il semble que la décision a déjà été trouvée ci
lucidyan