Connexion OpenVPN automatique entre deux serveurs

Connexion OpenVPN automatique entre deux serveurs

Je possède un NAS Synology chez moi depuis plusieurs années…. Mon DS412 va bientôt fêter ses 10 ans et j’avoue qu’il n’est plus aussi rapide qu’au début; nombreuses mises à jour ont fait de ce NAS un serveur de fichier qui reste correct, mais qui ne sais plus trop servir des services rapidement – notamment, tout ce qui est service WEB.

Je possède aussi depuis quelques mois, un serveur privé virtuel (aka « VPS ») qui fonctionne sous Linux Debian 10 et sur lequel je fais fonctionner différents services WEB : TTRSS, Nexcloud, etc…

Sauf que sous Nextcloud, j’aurais aimé pouvoir accéder à tous mes fichiers situés sur mon NAS. Voici une solution à partir de laquelle on va exploiter le partage de fichier que propose le NAS via le protocole NFS (et non pas SAMBA/NetBIOS/ciFS), sommaire :

  1. Les VPN disponible
  2. Le choix d’OpenVPN
  3. Mise en place
    1. Installer la méthode de partage de fichier sur le NAS
    2. Récupération de la configuration OpenVPN
    3. Ouverture du Firewall de la BOX Opérateur
    4. Installation et paramétrage d’OpenVPN sur le VPS
    5. Lancement du service
    6. Montage des dossiers distant sur le VPS
  4. Conclusion

Les VPN disponible

Les NAS Synology intègrent 3 types de VPN : L2TP/IPSec, PPTP et OpenVPN.

Pour avoir accès à ces VPN, il faut installer dans le NAS Synology le paquet « VPN Server » dans le centre de paquet. Si ce paquet n’est pas installé, lancez alors l’installation de celui-ci

On a ainsi accès aux 3 types de VPN disponible au sein de ce paquet.

PPTP (Point-to-point tunneling protocol – RFC 26371), protocole de tunnel point-à-point, est un protocole d’encapsulation PPP sur IP conçu par Microsoft. Il permet de mettre en place des réseaux privés virtuels (VPN) au-dessus d’un réseau public. Layer 2 Tunneling Protocol (L2TP) et IPsec sont des protocoles inspirés de PPTP et chargés de le remplacer. Cependant, le protocole PPTP continue d’être utilisé car il est implémenté nativement sur les machines Windows depuis Windows XP & 2000. Toute machine Microsoft est donc capable de mettre en place un tunnel PPTP avec une machine distante sans devoir ajouter de mécanisme supplémentaire.

L2TP signifie Layer 2 Tunneling Protocol et ne fournit aucun cryptage par lui-même. Cependant, L2TP VPN utilise généralement un protocole d’authentification, IPSec (Internet Protocol Security), pour le cryptage renforcé et l’authentification, ce qui lui confère un avantage ultime sur certains protocoles largement utilisés tels que PPTP. L2TP / IPSec utilise les ports UDP 1701.

OpenVPN permet à des pairs de s’authentifier entre eux à l’aide d’une clé privée partagée à l’avance, de certificats électroniques ou de couples de noms d’utilisateur/mot de passe. Il utilise de manière intensive la bibliothèque d’authentification OpenSSL ainsi que le protocole SSLv3/TLSv1. Disponible avec une multitude d’environnements tel que Solaris, OpenBSD, FreeBSD, NetBSD, Linux (Debian, Redhat, Ubuntu, etc.), Mac OS X, Windows 2000, XP, Vista, 7, 8 et 10, il offre de nombreuses fonctions de sécurité et de contrôle.

Le chois d’OpenVPN

Parmi ces trois VPN, OpenVPN semble être la solution multi-plateforme : la solution est disponible sur une large palette de système d’exploitation, allant de Windows à la famille des BSD et en passant par Linux comme MacOS.

Mise en place

Installer la méthode de partage de fichier sur le NAS

Pour que notre NAS puisse partager ses fichier au sein d’un système fonctionnant sous Linux, on utilisera NFS – contrairement aux partages de type SAMBA, alias « SMB » qui sont plutôt orientés Windows.

Dans le panneau de configuration, se rendre dans le menu « Dossier partagé » puis éditez le dossier que vous souhaitez partager avec votre VPS pour accéder aux paramètres de celui-ci :

Une boite de dialogue s’ouvre et propose différents onglets : cliquez sur l’onglet « Autorisations NFS »

Dans mon cas, j’ai déjà intégrer 2 types de partage NFS, un sur mon réseau local 192.168.0.x et un autre sur le réseau 10.8.0.x qui sera celui que notre VPN créera.

Pour ajouter votre configuration, cliquez sur le bouton « Créer » qui fera apparaître une nouvelle boite de dialogue : dans le champs « Nom d’hôte ou IP », indiquez « 10.8.0.0/24 »

Le réseau 10.8.0.x est celui que votre VPN va créer et c’est l’adresse que votre VPS recevra : à aucun moment, votre VPN donnera une adresse IP de votre réseau local à votre serveur VPS. Il faut donc définir un partage sur ce type de réseau 10.8.0.x

Configuration OpenVPN

Par défaut, OpenVPN n’est pas actif dans une configuration fraîchement installée. Pour cela, il faut se rendre dans la section « OpenVPN » dans le menu de droite et cocher la case « Activer le serveur OpenVPN« ; cliquez sur le bouton « Appliquer » situé en bas de la boite de dialogue.

Information de sécurité

Dans la section « OpenVPN », ne cochez pas l’option « Autoriser aux clients l’accès au serveur LAN » : en cas de compromission du serveur VPS, il ne sera pas possible au hacker de visiter votre LAN / réseau privé.

On choisira également les utilisateurs qui auront la possibilité de se connecter en VPN :

Récupération de la configuration OpenVPN

Pour récupérer la configuration OpenVPN, cliquez sur le bouton « Exporter la configuration ».

Un fichier « openvpn.zip » sera proposé en téléchargement; il contient 4 fichiers :

  • VPNConfig.ovpn
  • README.txt
  • ca_bundle.crt
  • ca.crt

Ouverture du Firewall de la BOX Opérateur

La configuration OpenVPN proposée par Synology utilise le protocole UDP (et non TCP): il faudra donc configurer le NAT de la BOX opérateur pour que les connexions entrantes UPD sur le port 1194 soient redirigées vers votre NAS Synology. Pour cela, ajouter simplement une nouvelle entrée que l’on nommera « OpenVPN » :

Si vous n’utilisez pas OpenVPN en dehors de cet article, autre que pour connecter votre VPS à votre NAS, je vous conseille de limiter l’accès à votre NAT OpenVPN à la seule adresse de votre VPS.

Dans mon cas, l’adresse de mon VPS fini par .84.128

Installation et paramétrage d’OpenVPN sur le VPS

Installer OpenVPN sur votre VPS en lançant la commande :

  • sur CentOS / RedHat

yum install openvpn

  • sur Debian / Ubuntu

apt install openvpn

Envoyez le fichier openvpn.zip vers votre VPS et dans le dossier /etc/openvpn. Dé-zipper le fichier dans ce dossier.

Avant de se lancer OpenVPN, il faut commencer par éditer le fichier VPNConfig.ovpn : dans ce fichier, renseignez l’adresse IP ou le nom DNS publique de votre NAS Synology

Pour permettre la communication entre vos deux serveurs, il faut que votre NAS soit accessible depuis Internet : vous devrez non seulement ouvrir les bons ports sur la BOX de votre opérateur, mais en plus, vous devrez mettre en place un DDNS (voir section « Accès externe » dans le panneau de configuration du NAS)

Personnellement, j’ai renseigné le nom DNS (défini dans mon DDNS) que j’ai configuré dans mon NAS : xxx.synology.me

…ou « xxx » est un nom personnel que je ne donnerais pas ici 😉

Cette configuration VPN ne contient pas le USER et son Password qui devra se connecter; pour cela, on va encore modifier le fichier VPNConfig.ovpn :

    • ajouter la ligne suivante dans le fichier : auth-user-pass credentials
    • créer le fichier « credentials » dans le dossier /etc/openvpn et indiquer dans celui-ci :
<USER>
<PASSWORD>
Indiquer votre USER à la place du champs et votre mot de passe à la place de \<USER> et \<PASSWORD>

Lancement du service

Le lancement du service OpenVPN se réalise facilement mais pour que ce dernier prenne la configuration automatiquement, il faut commencer par renommer le fichier « VPNConfig.ovpn » en tant que « VPNConfig.conf ».

Que cela soit sous Debian ou RedHat, le lancement des configurations OpenVPN se fait sur un nom de fichier qui se termine par « .conf« . SystemD demande ce type d’extension pour être pris en compte.

Pour lancer le VPN, on exécute :

systemctl start openvpn@VPNConfig && systemctl status openvpn@VPNConfig

Vous lancez ainsi la connexion et vérifiez que tout se passe bien. Vous pouvez également lancer la commande « ifconfig » ou « ip a » pour vérifier qu’une nouvelle interface réseau est bien apparue et a bien reçu une adresse IP de type 10.8.0.x

Si l’interface TUN est correctement montée avec association d’une adresse IP de type 10.8…. vous pouvez alors activer par défaut cette configuration

systemctl enable openvpn@VPNConfig

Montage des dossiers distant sur le VPS

Maintenant que notre NAS est accessible à notre VPS, il nous est possible de lancer la commande « showmount » pour connaître les points de montage NFS :

root@monVPS:/etc/openvpn# showmount -e 10.8.0.1
Export list for 10.8.0.1:
/volume1/music       10.8.0.0/8,192.168.0.0/16
/volumeUSB2/usbshare 192.168.0.0/16
/volume1/hyperviseur 192.168.0.0/16
/volume1/DA          192.168.0.0/16
/volume1/Games       192.168.0.0/16
/volume1/DGFip       192.168.0.0/16
/volume1/photo       192.168.0.0/16
/volume2/Videos      192.168.0.0/16
/volume1/Programme   192.168.1.1/16
/volume1/video       192.168.0.0/16

Si la commande « showmount » n’est pas reconnu sur votre VPS, c’est que les outils NFS ne sont pas installés. Pour les installer, faites :

  • Sous Debian / Ubuntu : apt install nfs-common
  • Sous RedHat / CentOS : yum install nfs-common

On voit dans le retour de la commande, que le dossier « music » est partagé sur les réseaux 192.168.0.0 mais également sur le réseau 10.8.0.0. Nous allons donc pouvoir monter le dossier « music » au sein de notre VPS puisque ce dernier à récupéré une adresse en 10.8.0.x via le VPN.

Pour « monter » une ressource de fichier dans le VPS en utilisant le protocole NFS, il faut savoir ou l’on va « déposer » l’accès aux fichiers du NAS; dans mon exemple, je vais placer les fichiers du dossier « music » du NAS dans le dossier /mnt/music du VPS. On

On crée le dossier /mnt/music :

mkdir -p /mnt/music

Une fois le dossier défini et créé, on commence par tester si le partage est fonctionnel :

mount -t nfs -o defaults,auto,noatime,nolock,bg,intr,tcp,user 10.8.0.1:/volume1/music /mnt/music/

Si aucune erreur n’est remontée, on se rend dans le dossier /mnt/music pour vérifier que tout est bien là 😉

Si vous recevez au retour de la commande mount le message « mount.nfs: access denied by server while mounting 10.8.0.1:/volume1/music » cela signifie que votre partage n’a pas été fait ou correctement fait. Revoyez le chapitre qui en parle.

Maintenant que l’on accède correctement à notre partage et qu’il est disponible au sein du VPS, on va fixer le montage afin qu’il soit disponible après un reboot du serveur VPS. Pour cela, éditer le fichier /etc/fstab avec votre éditeur de texte préféré (vi, nano, joe, vim, etc…) :

# Montage Synology
10.8.0.1:/volume1/music                    /mnt/music              nfs defaults,auto,noatime,nolock,bg,intr,tcp,user        0 0

Conclusion

Nous avons fait le tour des choses… Dans le cas d’un Nextcloud, si vous souhiatez avoir accès aux fichiers de ce partage, il faudra monter la ressource « music » ailleurs que dans /mnt et activer la reconnaissance des fichiers au sein de l’application… Mais cela est un autre problème que l’on évoquera plus tard.

Comments

No comments yet. Why don’t you start the discussion?

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.