web-dev-qa-db-fra.com

openvpn via la ligne de commande: permission refusée pour mettre à jour resolv.conf

Cela pourrait être un doublon de cette question , mais je ne suis pas assez compétent en matière de réseautage pour pouvoir le dire avec certitude.

J'utilise un service VPN nommé Cyberghost pour rester privé sur Internet. Après avoir été confronté à des fuites DNS lors de l'utilisation de network-manager, j'ai essayé d'utiliser la ligne de commande et d'implémenter les correctifs mis en ligne. Aparantly block-outside-dns ne fonctionne que sous Windows. J'ai donc suivi ce tutoriel et ajouté les lignes

script-security 2
up /etc/resolv.conf
down /etc/resolv.conf

au fichier .ovpn fourni par cyberghost.

Lorsque vous essayez de vous connecter en utilisant

Sudo openvpn --config /home/username/CG/DE/DE.ovpn

cependant j'obtiens l'erreur suivante:

Options error: --up script fails with '/etc/resolv.conf': Permission denied
Options error: Please correct this error.
Use --help for more information.

Se connecter sans la commande up and down fonctionne bien mais provoque des fuites DNS. Je ne rencontre pas de problèmes lors de l'édition manuelle de resolv.conf avec les privilèges de Sudo; par conséquent, je ne suis pas sûr de savoir pourquoi openvpn ne devrait pas avoir l'autorisation de le faire.

Merci pour vos pensées et votre aide,

Alex


Système: Kubuntu 17.04

openvpn 2.4.0-4ubuntu1.3

Le fichier .ovpn complet est le suivant:

client

remote 1-de.cg-dialup.net 443

dev tun 

proto udp

auth-user-pass /home/username/CG/DE/auth.txt




resolv-retry infinite 

redirect-gateway def1

persist-key

persist-tun

nobind

cipher AES-256-CBC

auth MD5

ping 5

ping-exit 60

ping-timer-rem

explicit-exit-notify 2

script-security 2

remote-cert-tls server

route-delay 5

tun-mtu 1500 

fragment 1300

mssfix 1300

verb 4

comp-lzo


ca /home/username/CG/DE/ca.crt

cert /home/username/CG/DE/client.crt

key /home/username/CG/DE/client.key

script-security 2
up /etc/resolv.conf
down /etc/resolv.conf
2
Alex

Peu importe si c'est ce que vous voulez ou devez vraiment faire, voici ce qui suit:

_up /etc/resolv.conf
down /etc/resolv.conf
_

n'est pas comment cette fonctionnalité fonctionne. Au lieu de cela, le package _openvpn-systemd-resolved_ met à jour le fichier _/etc/resolv.conf_ de manière dynamique en spécifiant un script exécutable après les commandes up et down de votre client openvpn (comme indiqué dans le fichier lié (et incomplet)). !) "Didacticiel"). Mais aussi, notez qu'il existe différentes versions de cette fonctionnalité; les versions ultérieures utilisent dbus , que je référence; le version précédente vient d'utiliser des scripts et des fichiers temporaires. C'est pourquoi il y a une certaine incohérence entre les articles/docs/tutoriels.

Donc, en supposant que ce paquet soit installé (soit via _apt-get_ ou apt):

_Sudo apt-get install openvpn-systemd-resolved
_

et vérifier que le service est en cours d’exécution (si ce n’est pas le cas: activez-le et démarrez-le manuellement):

_Sudo service systemd-resolved status
_

alors, il devrait y avoir un script installé en tant que _/etc/openvpn/update-resolv-conf_ (ou éventuellement dans _/etc/openvpn/scripts/_ dans d'autres distributions) qui modifie le _/etc/resolv.conf_ pour vous.

Ainsi, votre client openvpn (qui sur les clients autres que Windows devrait, par convention, porter le suffixe "_.conf_" et sera lu automatiquement si, dans _/etc/openvpn_; mais sous Windows, ils utilisent généralement _.ovpn_ pour l'association de fichier appropriée w/openvpn) - la configuration du client openvpn contiendrait, par exemple,

_script-security 2
setenv PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
_

Ensuite, vous remarquerez que c’est le script _/etc/openvpn/update-systemd-resolved_ qui doit être exécutable (il s’agit par défaut), et _/etc/resolv.conf_ sera un simple fichier texte mis à jour avec le correct domain, nameserver, search entrées (c'est pas un script exécutable).

Le dernier élément à lier est de modifier _/etc/nsswitch.conf_ pour contenir quelque chose comme ce qui suit (en remplacement de l'entrée _hosts:_ existante):

_# Use systemd-resolved first, then fall back to /etc/resolv.conf
hosts: files resolve dns myhostname
_

Voir la page liée github update-systemd-resolue pour plus de détails et d’options.

1
michael

La seule solution à laquelle je peux penser est en cours d'exécution

Sudo -s

Puis courir

openvpn --config file.ovpn

Si cela ne fonctionne pas, essayez de courir

Sudo chown root /etc/resolv.conf

ou

Sudo chown $USER /etc/resolv.conf

et en dernier recours

Sudo chmod 777 /etc/resolv.conf

N'utilisez chmod 777 que si rien d'autre ne fonctionne, car cela pourrait créer une faille de sécurité.

0
NerdOfLinux