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.
yunohost service stop openvpn yunohost service start openvpn
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.con
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