Installer Wireguard sur un serveur Linux

Wireguard est le système de VPN qui a le vent en poupe. Il est plus rapide et plus simple qu’OpenVPN pour monter un VPN facilement. Les tutos d’installation de Wireguard sont très nombreux sur le net et lorsqu’on a un VPN gratuit, ça peut être sympa d’en faire profiter !

Wireguard a des applications clientes pour tout : PC, Mac, iOs, Android, …

Sil l’installation de Wireguard est simple, sa configuration et la gestion des clients qui vont se connecter au VPN nécessite un peu plus d’ajustements.

Cet article a pour objet de détailler la configuration (automatisée) de Wireguard et la gestion des utilisateurs en utilisant un script open source wgconf que j’ai écrit.

Ce script a pour objet de simplifier l’ensemble des opérations.

Pré-requis

Il faut :

  • disposer d’un petit serveur Linux (avec un bail statique) et d’un accès fibre optique : c’est indispensable pour avoir un débit correct
  • avoir une adresse IPv4 fixe
  • pouvoir se connecter “root”
  • ouvrir le port Wireguard sur votre box (par défaut 51820) pour le rediriger vers le serveur Linux qui héberge Wireguard

Le script n’a été testé que sous Ubuntu 20.04. La compatibilité avec les autres OS sera documentée au fur et à mesure des retours utilisateurs sur la page GitHub :

https://github.com/mikmer62/wgconf

Installation de Wireguard

L’installation de Wireguard est très simple. La page d’installation décrit le process pour toutes les plateformes.

Consulter la page d’installation Wireguard.

Les commandes d’installation de paquets ci-dessous doivent être adaptées pour votre distribution Linux.

En premier lieu, commencer par les commandes traditionnelles de mise à jour système, puis installez Wireguard :

apt update
apt upgrade
apt install wireguard

Installation des paquets complémentaires

Puis il faut installer deux paquets complémentaires :

apt install linux-headers
apt install qrencodea

Wireguard permet d’ajouter un tunnel sur un client (en particulier mobile) à partir d’un Qr Code. On va utiliser cette fonctionnalité.

Configuration Wireguard

C’est à partir de là qu’il est intéressant de simplifier la configuration et la gestion en utilisant le script que j’ai écrit à cet effet.

Le script est décrit plus précisément sur GitHub :

https://github.com/mikmer62/wgconf

Il faut ensuite créer le répertoire avec lequel on va travailler avec Wireguard. Par convention, on utilise /etc/wireguard.

mkdir /etc/wireguard

Télécharger le script de configuration et de gestion des utilisateurs (wgconf) dans le répertoire wireguard.

cd /etc/wireguard
wget https://raw.githubusercontent.com/mikmer62/wgconf/master/wgconf
chmod +x wgconf

Ajouter /etc/wireguard dans la variable PATH :

export PATH=$PATH:/etc/wireguard

Pour l’ajouter définitivement :

Aller dans le répertoire d'accueil root:
cd
puis ajouter à la fin du fichier .bashrc :
PATH=$PATH:/etc/wireguard

Revenir dans le répertoire wireguard :

cd /etc/wireguard

Initialisation du serveur VPN Wireguard

Il faut commencer par initialiser le serveur VPN Wireguard :

wgconf init

Cette opération va proposer des valeurs par défaut pour la configuration.

Il suffit de taper “Entrée” pour chaque valeur proposée. A l’issue de cette commande, seront créés dans /etc/wireguard :

Les fichiers :

  • wgconf.params qui contient les paramètres système de configuration du serveur VPN
  • wg0.conf qui contiendra la définition du serveur et des clients Wireguard

Les répertoires :

  • /etc/wireguard/keys qui contiendra les clés privées et publiques du serveur et des clients
  • /etc/wireguard/conf qui contiendra les fichiers de configuration des clients
  • /etc/wireguard/qrcode qui contiendra les qrcodes des clients en format jpg

Aide sur les commandes wgconf

Pour obtenir la liste des commandes wgconf, il suffit de taper :

wgconf ?

Ajout d’un nouveau client

Pour ajouter un nouveau client, il suffit de taper :

wgconf addcli nom_du_client

Le nom du client ne doit pas contenir d’espace. Après la création du client, le qrcode du nouveau client s’affiche.

Le nombre de clients est limité à 254. Sur un VPN personnel, ça semble raisonnable !

Les fichiers suivants seront créés :

  • /etc/wireguard/keys/nom_du_client_private_key
  • /etc/wireguard/keys/nom_du_client_public_key
  • /etc/wireguard/conf/nom_du_client.conf
  • /etc/wireguard/qrcode/nom_du_client.jpg

Le fichier /etc/wireguard/wg0.conf sera mis à jour avec le nouveau client.

Suppression d’un client

Il est possible de supprimer un client en tapant :

wgconf delcli nom_du_client

Tous les fichiers associés (clés, configuration, qrcode) seront supprimés et l’adresse IP de ce client sera réutilisée pour un autre client.

Le client sera supprimé du fichier /etc/wireguard/wg0.conf et évidemment, le client ne pourra plus utiliser le VPN.

Liste des clients

On peut obtenir la liste des clients gérés en tapant :

wgconf listcli
ou
wgconf listcli byip

La liste affiche le nom et l’adresse IP au sein du VPN des clients. Avec l’option “byip”, la liste est triée sur les adresses internes du VPN.

Liste des clés privées et publiques

On peut obtenir la liste des clés privées et publiques du serveur VPN (wgserver) et des clients en tapant :

wgconf listkeys

Attention, ces clés permettent d’effectuer le cryptage et ne doivent pas être révélées en dehors des qrcodes et des fichiers de configuration.

Affichage d’un fichier de configuration client

Pour mémoire, le fichier de configuration du client se trouve dans le répertoire conf :

/etc/wireguard/conf/nom_du_client.conf

Il est possible d’afficher le contenu de ce fichier en tapant :

wgconf showcli nom_du_client

Affichage d’un qrcode client

Pour mémoire, le qrcode du client se trouve dans le répertoire qrcode :

/etc/wireguard/qrcode/nom_du_client.jpg

Il est possible de l’afficher à l’écran en tapant :

wgconf showqrcode nom_du_client

Envoi des fichiers de configuration par mél

Cette option nécessite que le package mutt soit installé et configuré (ou de modifier le script pour l’utilisation d’un autre client mail).

Pour envoyer les fichiers de configuration, taper :

wgconf sendconf nom_du_client email@mail.fr

Le fichier nom_du_client.conf et le qrcode nom_du_client.jpg sont envoyés en pièces jointes à l’adresse mail spécifiée.

Suppression de la configuration complète

wgconf permet enfin de supprimer tous les fichiers de configuration et d’arrêter le serveur Wireguard avec la commande :

wgconf raz

Cette commande supprime définitivement le fichier de paramètres système et tous les fichiers clients. Elle arrête également Wireguard.

Elle ne doit être utilisée qu’en connaissance de cause !

Conclusion

Ce script permet de simplifier considérablement la gestion du VPN Wireguard.

Un scénario type de mise en place est le suivant :

wgconf init
wgconf addcli Patrick_iphone
wgconf addcli Patrick_ipad
wgconf addcli Louise_pcportable
wgconf addcli Sonia_samsung
wgconf addcli Sonia_imac

Puis Patrick vend son ipad donc on désactive le client :

wgconf delcli Patrick_ipad

Sonia a perdu par mégarde son fichier de configuration pour son samsung :

wgconf showcli Sonia_samsung
ou 
wgconf showqrcode Sonia_samsung

Et si mutt est installé sur votre Linux, pour envoyer les fichiers de configuration (fichier .conf + qrcode en jpg) pour son Samsung à Sonia :

sendconf Sonia_samsung sonia.xxx@yyyy.fr

Pour consulter les clients VPN alloués :

wgconf listcli byip

Plutôt simple non ?

Print Friendly, PDF & Email