Un mémo sur comment installer un VPN avec Yunohost et OpenVPN sous Debian 8 Jessie.
Cet article décrit étapes par étapes l’installation et la configuration d’un serveur OpenVPN avec Yunohost sur un serveur VPS sous Debian Jessie.
Voici les caractéristiques du futur serveur OpenVPN :
- tunnel chiffré en 2048 bit (rapide)
- auth-nocache
- cipher AES-256-CBC
- auth SHA512
- tls-version-min 1.2
- tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384
- Signature HMAC
- Clé DH en 4096 bits
Activer l’interface réseau TUN/TAP sur un VPS
- La première étape consiste à vérifier/activer dans le panel d’administration l’interface réseau TUN/TAP :
- Ensuite, vérifier que le système d’exploitation du VPS prend en charge le module « tun » :
lsmod | grep tun
Si aucune réponse, comme dans mon cas alors suivre les étapes suivantes sinon aller directement au chapitre « Installation de Yunohost ».
modprobe tun
reboot
Installation de Yunohost
- Mise à jour et installation des paquets git et dialog (si pas installés) :
apt update && apt upgrade apt install git dialog
git clone https://github.com/YunoHost/install_script /tmp/install_script cd /tmp/install_script && ./install_yunohost
A la fin de l’installation de Yunohost, l’installateur propose directement de passer à l’étape de post-installation pour configurer le domaine par défaut et le compte administrateur.
- Demande de confirmation pour exécuter de suite le script de post-install :
- Renseigner le domaine et le mot de passe administrateur pour Yunohost :
Configuration de Yunohost pour préparer l’arrivée d’OpenVPN
- Éditer le fichier
/etc/hosts
afin d’ajouter le futur FQDN associé à l’adresse public du VPS :
nano /etc/hosts
1.2.3.4 vpn.domaine.tld
Pour la configuration du Yunohost, j’utilise ici la moulinette de Yunohost (L’inerface web d’administration est très simple à comprendre).
- Ajout du sous domaine vpn.domaine.tld
yunohost domain add vpn.domaine.tld
yunohost user create fred
Installation d’OpenVPn avec Yunohost
Attention : OpenVPN ne fait pas encore parti des applications officielles maintenues par Yunohost, suivre dans l’ordre les étapes suivantes :
- Création d’un sous domaine chez votre registrar :
vpn 8600 IN CNAME domaine.tld.
nb : domaine.tld est le domaine du yunohost. - Ajout du sous domaine vpn.domaine.tld dans yunohost
yunohost domain add vpn.domaine.tld
nb : Ne pas encore installer les certificats Let’s Encrypt !
/etc/yunohost/certs/vpn.domain.tld
vers /etc/yunohost/certs/vpn.domain.tld.Autosign
:cp -r /etc/yunohost/certs/vpn.domain.tld/ /etc/yunohost/certs/vpn.domain.tld.Autosign/
yunohost domain cert-install vpn.domane.tld
yunohost app install https://github.com/YunoHost-Apps/openvpn_ynh
nb : il est possible d’installer OpenVPN via l’interface web d’administration de Yunohost :
nb2 : indiquer bien l’adresse IP public du serveur Yunohost, sinon le script d’installation n’aboutit pas.
openssl dhparam -out /etc/yunohost/certs/vpn.domain.tld.Autosign/dh.pem 4096
nb : changer vpn.domain.tld par le votre
nano /etc/openvpn/yunohost.conf
- Modifier comme suit :
ca /etc/yunohost/certs/vpn.domain.tld.Autosign/ca.pem cert /etc/yunohost/certs/vpn.domain.tld.Autosign/crt.pem key /etc/yunohost/certs/vpn.domain.tld.Autosign/key.pem dh /etc/yunohost/certs/vpn.domain.tld.Autosign/dh.pem
nb : changer vpn.domain.tld par le votre
/etc/openvpn/handler.sh
en commentant les lignes 36 à 39 et 42 :public_ip4=$(get_ip 3) # if [ -n "$public_ip4" ]; then # $SUDO iptables -t nat -A PREROUTING -d $public_ip4 -j DNAT --to-destination $private_ip4 # $SUDO iptables -t nat -A POSTROUTING -s ${private_ip4}/32 ! -d ${private_ip4}/32 -j SNAT --to-source $public_ip4 # else iface=$(ip r|awk '/default/ { print $5 }') $SUDO iptables -t nat -A POSTROUTING -s $private_ip4 -o "${iface}" -j MASQUERADE # fi
nb : je fais cette modification, car dans mon cas j’obtiens un problème de routage au niveau du NAT via iptables et le serveur n’est plus joignable.
chmod +x /etc/openvpn/handler.sh
yunohost service stop openvpn yunohost service start openvpn
chmod 666 /var/log/openvpn/*.log
Profiter du cache DNS de Yunohost pour la connetcion VPN
A ce stade le VPN est fonctionnel mais les requêtes DNS passent encore par le fournisseur de la connexion Internet, si pas modifié par un perso comme Unbound par exemple.
Par défaut, sur le serveur Yunohost la gestion DNS se fait via DNSMasq, mais ce dernier ne fait qu’office de cache DNS. L’équipe de Yunohost à quand même bien fait les choses, car ils ont choisi des serveur DNS neutres et ça c’est top !
La liste des serveurs DNS configuré dans un Yunohost :
cat /etc/resolv.dnsmasq.conf
nameserver 91.239.100.100 nameserver 85.214.20.141 nameserver 89.233.43.71 nameserver 89.234.186.18 nameserver 84.200.69.80 nameserver 141.255.128.101 nameserver 141.255.128.100 nameserver 213.73.91.35 nameserver 89.234.141.66 nameserver 80.67.188.188 nameserver 80.67.169.12 nameserver 80.67.169.40 nameserver 84.200.70.40
Donc l’idée dans cette partie de ce tutoriel est de configurer DNSmasq pour qu’il écoute aussi sur l’interface réseau du VPN et configurer le serveur VPN pour qu’il fournisse comme serveur DNS le Yunohost chez le client.
Configuration de DNSmasq
- Éditer le fichier de configuration
/etc/dnsmasq.conf
:
nano /etc/dnsmasq.conf
listen-address=10.8.0.1
systemctl restart dnsmasq
Configurer le serveur OPenVPN pour utiliser DNSmasq
- Partie serveur :
- Éditer le fichier de configuration du serveur OpenVPN :
nano /etc/openvpn/yunohost.conf
- Dé commenter la ligne (supprimer le ; devant la ligne):
push "dhcp-option DNS 10.8.0.1"
yunohost service stop openvpn
yunohost service start openvpn
- Éditer le fichier client .ovpn :
nano /var/www/openvpn/vpn.domiane.tld.ovp
dhcp-option DNS up /etc/openvpn/update-resolv-conf down /etc/openvpn/update-resolv-conf
nb : sur le distribution GNU/Linux installer le paquet openvpn-update-resolv-conf
Test de connexion au serveur OpenVPN de Yunohost
- Ouvrir un navigateur internet, saisir l’url de son serveur Yunohost et se connecter :
- Cliquer sur le gros bouton carré « Op » :
- Cliquer sur le troisième lien pour télécharger le fichier client d’OpenVPN :
- Enregistrer le fichier client .ovpn
- Se rendre dans le répertoire ou se trouve le fichier client et se connecter au serveur OpenVPN :
sudo openvpn vpn.domaine.tld.ovpn
Enter Auth Username: **** Enter Auth Password: ***********
drill @10.8.0.1 memo-linux.com
Ressource
- Pour la partie OpenVPN : https://forum.yunohost.org/t/installation-tips-for-installation-of-openvpn-on-yunohost/3704/2
J’adore Yunohost, Je le mis sur mon serveur dédié. Maintenant je peu aussi profiter de OPENVPN. Merci.
Si un se jour t’arrive faire un tuto pour faire cohabiter Yunohoste et EMBY (https://emby.media/), Tu ferras pleins de heureux. C’est un super mediacenter, sauf la gestion des port de yunohost fout le bazar. Donc impossible de l’utiliser les deux. Sauf si qq sais comment les configurer.
Salut tonton79,
je prend de plus en plus goût à Yunohost, c’est vraiment un produit sympa mais certains choix sont discutable comme DNSmasq ou des certificats limites… Après je me doute que ce n’est pas évident un tel projet et qu’il faut prendre des décisions…
Concernant EMBY, je ne connaissais pas… je vais voir comment tourne ce soft :-)
Hello,
Merci pour le chouette tuto!
En effet kload (l’actuel mainteneur de l’app, à moins de temps pour s’en occuper), je viens d’intégrer tes modifs dans openvpn_ynh via la pull-request là: https://github.com/YunoHost-Apps/openvpn_ynh/pull/18 (comme ça tout le monde peut bénéficier des modifs).
Surtout n’hésite pas à soumettre des patchs/modifications! Thx!
merci Fred
voili voilou pourquoi openvpn ne se lançait pas sur mon client malgré l ensemble des parametres ok….
…………pas de TUN lancer sur le vps…..
un reboot aura suffit
Mise à jour de l’article
Bonjour,
voulant utiliser openvpn sur mon serveur yunohost, je suis tombé sur votre tuto et j’aurai aimé avoir une précision.
Une fois la commande « openssl dhparam -out /etc/yunohost/certs/vpn.domain.tld.Autosign/dh.pem 4096 » lancé, combien de temps faut-il pour qu’elle génère la clé ? cela va faire 24h qu’elle tourne et elle n’a pas fini.
c’est pour vérifier que ça ne tourne pas dans le vide à cause d’une éventuel problème.
cordialement,
merci
Bonjour ma’og,
24h ça fait un peu long ! chez moi c’est environ 20 minutes
A savoir : j’ai actualisé certaines actions pour être compatible avec la nouvelle version de Yunohost
Bonjour Fred !
Merci pour ce super tuto !
Toujours heureux de lire tes articles, comme d’habitude.
J’ai une question : l’appli OpenVPN pour yunohost semble être abandonnée ? Pas de mise a jour depuis plus d’un an.
Des nouvelles ? Elle fonctionne toujours ?
Merci beaucoup et bonne continuation
Bonjour Damien,
chez moi c’est toujours en production et ça fonctionne :)
Je l’ai installé de nouveau sur une nouvelle instance de yunohost, faut faire un peu de débugage pour que ça fonctione… j’ai essayé ici de décrire les étapes pour que ça fonctionne du premier coup…
Bonjour,
Pour mon installation j’ai du en plus
– installer pip
– faire un « chmod go+w /var/log/openvpn »
– ajouter
« dhcp-option DNS
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf »
à « /var/www/openvpn/vpn.domiane.tld.conf » car j’utilise network-manager pour gérer mes connexions
Mais sinon ça marche bien
Merci pour ce tuto !