Installation d'un serveur VPN sur Linux

Installation d'un serveur VPN sur Linux

3 avril 2020
Réseau privé entre amis.


Introduction

La mise en place d'un VPN, acronyme de Virtual Private Network (réseau privé virtuel) permet de connecter des ordinateurs distants via Internet dans un "pseudo réseau privé". L'utilisation d'un VPN permet plusieurs utilisations :

  • Accès à un réseau local (entreprise, maison, ...) à distance
  • Interconnecter des machines distantes via Internet
  • Redirection du traffic web à travers un serveur distant Nous allons voir comment mettre en place et configurer un serveur OpenVPN (version open source). A noter qu'il existe aussi maintenant une version payante de OpenVPN, appelé OpenVPN Access Server. Cette version payante propose, entre autre, une interface web graphique permettant de facilité la configuration du serveur. Mais si vous n'avez pas peur des lignes de commandes, la version gratuite open source peut vous suffire ! 😉

Installation du serveur

L'installation d'OpenVPN peut être rapidement fastidieuse. Heureuseuement, l'utilisateur Nyr maintient un script automatique très facile d'emploi sur GitHub : https://github.com/Nyr/openvpn-install. L'URL https://git.io/vpn est un raccourci vers son script.

wget https://git.io/vpn -O openvpn-install.sh
chmod +x openvpn-install.sh
sudo ./openvpn-install.sh

Au premier lancement du script vous pourrez choisir de faire l'installation d'OpenVPN.

Ajout d'un utilisateur

Lors des lancements suivant du script openvpn-install.sh, vous pourrez ajouter ou supprimer des utilisateurs. Chaque utilisateur aura sa propre clé et son propre certificat client. Un fichier de connexion client .ovpn sera généré.

IP statique pour les clients VPN

Par défaut, les clients qui vont se connecter auront une IP dynamique. Il est cependant possible de fixer une ip statique selon le nom du client. Prenons par exemple le cas d'un client qui s'appelle laptop-client dont on veut fixer l'adresse IP à 10.8.0.100 au sein du réseau VPN.

  1. Premiere étape, la création du dossier de configuration ccd :
sudo mkdir /etc/openvpn/server/ccd
  1. Ensuite il faut configurer le serveur VPN pour qu'il utilise ce dossier. Pour cela on va modifier le fichier /etc/openvpn/server/server.conf avec la commande client-config-dir :
...
server 10.8.0.0 255.255.255.0
client-config-dir /etc/openvpn/server/ccd
...
  1. Dernière étape, il faut créer un fichier de configuration avec exactement le nom du client dans le dossier ccd. Voici le contenu du fichier /etc/openvpn/server/ccd/laptop-client :
ifconfig-push 10.8.0.100 255.255.255.0

Rediriger uniquement le traffic VPN

Par défaut, une fois le client connecté au VPN : tout son traffic (web, mail, ...) va utiliser notre serveur VPN comme passerelle Internet. Selon les cas, ce n'est pas souhaitable.

Pour désactiver cette focntionalité de passerelle il suffit de commenter ou supprimer les lignes suivantes dans le fichier /etc/openvpn/server/server.conf :

# push "redirect-gateway def1 bypass-dhcp"
# push "dhcp-option DNS 1.1.1.1"
# push "dhcp-option DNS 1.0.0.1"

Installation d'un client Linux

L'installation se fait simplement via le paquet openvpn :

sudo apt install openvpn

Il faudra récupérer sur la machine cliente, le fichier de connexion .ovpn, dans notre desktop-client.ovpn.

Ensuite deux possibilités :

  1. Connexion manuel au VPN
  2. Connexion automatique au VPN lors du lancement de la machine

Connexion manuel au VPN

sudo openvpn --client --config desktop-client.ovpn

Il sera necessaire de laisser le terminal ouvert pour que la connexion VPN reste active !

Connexion automatique au VPN

Pour une connexion automatique au lancement du service openvpn@client, il suffit de copier le fichier .ovpn dans le fichier /etc/openvpn/client.conf.

sudo cp desktop-client.ovpn /etc/openvpn/client.conf

Pour désactiver le lancement automatique du service au lancement de la machine :

sudo update-rc.d -f openvpn remove

Sources