Créer un VPN WireGuard sécurisé sur Ubuntu pour accéder à son réseau local

Créer un VPN WireGuard sécurisé sur Ubuntu pour accéder à son réseau local

Entre les Wi-Fi publics non sécurisés et les restrictions réseau à l’étranger, rien ne vaut un accès direct à son propre réseau local. Grâce à WireGuard et un simple serveur Ubuntu, vous pouvez vous connecter à distance comme si vous étiez physiquement chez vous. Imprimante, domotique, disques partagés, tout devient accessible via une connexion chiffrée, rapide et discrète. Voici comment créer votre propre VPN personnel ou professionnel.

Pourquoi créer son propre VPN WireGuard ?

Mettre en place son propre serveur VPN avec WireGuard sur Ubuntu, c’est bien plus qu’un simple projet technique : c’est reprendre le contrôle total sur ses connexions, ses données et son réseau. Contrairement aux VPN commerciaux qui promettent l’anonymat mais vous imposent leurs règles (et parfois leurs limites), un serveur WireGuard auto-hébergé vous offre une solution personnalisée, transparente, et hautement sécurisée, les avantages sont multiples :

  • Sécurité renforcée : le chiffrement moderne de WireGuard repose sur des protocoles sécurisés (Curve25519, ChaCha20…) et une base de code ultra-légère, réduisant considérablement les risques de vulnérabilité.
  • Confidentialité maîtrisée : aucun tiers n’intervient dans le transit de vos données.
  • Accès distant à votre réseau local : que vous soyez à l’autre bout du monde ou simplement en déplacement, vous pouvez retrouver tous vos appareils comme si vous étiez chez vous : NAS, imprimantes, box domotique, caméras IP, etc.
  • Contournement des restrictions réseau : dans certains lieux (hôtels, entreprises, pays), l’accès à certains services peut être bloqué. Grâce à votre propre VPN, vous faites transiter tout votre trafic via votre domicile comme si vous n’aviez jamais quitté votre canapé.

Face à des alternatives comme OpenVPN (plus lourd, plus complexe à configurer) ou PPTP (dépassé et peu sécurisé), WireGuard se démarque par sa sa rapidité et sa robustesse.

Prérequis pour créer votre VPN WireGuard

Avant de commencer, assurez-vous d’avoir :

  • Un serveur Ubuntu 22.04+ (serveur ou PC Single Board)
  • Une connexion Internet avec IP publique
  • Le port UDP 51820 redirigé vers le serveur (via votre box/routeur)

Installation de WireGuard sur Ubuntu

La première étape pour mettre en place votre VPN consiste à installer WireGuard, un protocole VPN moderne, rapide et sécurisé.

Commencez par mettre à jour votre système afin de garantir que tous les paquets sont à jour :

sudo apt update && sudo apt upgrade -y

Ensuite, installez WireGuard ainsi que ses outils :

sudo apt install wireguard wireguard-tools -y

Le routage IP est indispensable pour permettre aux clients du VPN d’accéder à Internet via votre serveur. Activez-le à l’aide de la commande suivante :

echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Configuration de base du serveur WireGuard

Créez les clés privées et publiques du serveur. Ces clés sont nécessaires pour établir un canal de communication chiffré :

cd /etc/wireguard
umask 077
sudo wg genkey | tee server_private.key | wg pubkey > server_public.key

Ensuite, récupérez la clé privée (vous en aurez besoin pour la configuration) :

cat /etc/wireguard/server_private.key

Créez le fichier de configuration principal de l’interface VPN :

sudo nano /etc/wireguard/wg0.conf

Collez le contenu suivant en remplaçant <COLLEZ_ICI_LE_CONTENU_DE_server_private.key> par votre clé privée :

[Interface]
Address = 10.10.0.1/24
PrivateKey = <COLLEZ_ICI_LE_CONTENU_DE_server_private.key>
ListenPort = 51820
SaveConfig = true

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Remarque : si votre interface réseau principale n’est pas eth0 (dans le cas d’un VPS par exemple), pensez à la remplacer par le nom correct (vous pouvez le vérifier avec la commande ip route show default | grep '^default' | awk '{print $5}').

Lancez le service WireGuard et configurez-le pour qu’il démarre automatiquement au démarrage du système :

sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0

Vérifiez que le VPN fonctionne correctement :

sudo wg show

Installation de Docker et Docker Compose

Pour utiliser une interface de gestion graphique comme WGDashboard, Docker est requis. Procédez à son installation :

sudo apt install docker.io docker-compose -y
sudo systemctl enable docker
sudo systemctl start docker

Installation du binaire Docker Compose (en fonction de l’architecture)

Créez d’abord le répertoire où sera placé le binaire Docker Compose :

sudo mkdir -p /usr/local/lib/docker/cli-plugins

Puis téléchargez la version adaptée à votre système :

  • Pour les systèmes ARM64 (Raspberry Pi, serveurs ARM, etc.) :
sudo curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-aarch64 -o /usr/local/lib/docker/cli-plugins/docker-compose
  • Si vous êtes sur un PC ou VPS (x86_64) :
sudo curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose

Rendez le binaire exécutable :

sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

Vérifiez les versions installées :

docker --version
docker compose version

Déploiement de l’interface WGDashboard avec Docker Compose

Créez un nouveau dossier pour contenir les fichiers de configuration de WGDashboard :

mkdir ~/wg-dashboard && cd ~/wg-dashboard
nano docker-compose.yml

Collez le contenu suivant dans le fichier docker-compose.yml :

version: "3.8"

services:
wg-dashboard:
container_name: wg-dashboard
image: ghcr.io/donaldzou/wgdashboard:latest
ports:
- "10086:10086"
volumes:
- ./data:/app/db
- /etc/wireguard:/etc/wireguard
restart: unless-stopped
environment:
- WG_CONF_DIR=/etc/wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
network_mode: "host"

Lancer l’interface web

Démarrez le conteneur :

docker compose up -d

Puis vérifiez que le conteneur est bien en cours d’exécution :

docker ps

Accéder à l’interface Web de WGDashboard

Une fois WGDashboard installé et fonctionnel, il est possible de le gérer depuis une interface web accessible via un simple navigateur. Pour cela, saisissez l’adresse suivante dans la barre d’adresse de votre navigateur :

http://<IP-de-votre-serveur>:10086

Par défaut, l’interface est protégée par un identifiant et un mot de passe initialement définis sur :

  • Utilisateur : admin
  • Mot de passe : admin

Dès la première connexion, vous serez invité à personnaliser ces identifiants afin de sécuriser l’accès.

Il est également recommandé d’activer l’authentification à deux facteurs (2FA), disponible dans les paramètres, pour renforcer la protection contre les accès non autorisés.

Créer un client VPN (Peer)

Depuis l’interface principale, vous verrez s’afficher la connexion VPN en cours.

Pour ajouter un nouveau client, cliquez sur cette connexion, puis sur l’onglet intitulé « Peer ».

Vous pourrez alors créer un nouveau client VPN en lui attribuant un nom (par exemple : Poste de travail, Portable, Smartphone, etc.).

Une fois le peer créé, WGDashboard génère automatiquement le fichier de configuration correspondant. Vous pourrez ensuite le télécharger au format .conf.

Ce fichier est conçu pour être directement utilisé par les clients WireGuard, mais il nécessite parfois une légère modification, en particulier si votre serveur utilise une adresse IPv6.

Prenons un exemple de fichier généré automatiquement :

[Interface]
PrivateKey = MEWI0s1Va/Hmv9bIjMThg1HShP8XIs069hDOafLtgWM=
Address = 10.10.0.2/32
MTU = 1420
DNS = 9.9.9.9

[Peer]
PublicKey = itwr+yW2BpsVJgCMPiNXA5HglNwgoydEyHh1RGCxPRQ=
AllowedIPs = 0.0.0.0/0
Endpoint = 2a01:e0a:4b7:2500:dea6:32ff:fe02:4409:51820
PersistentKeepalive = 21

Dans cet exemple, l’adresse du champ Endpoint est une adresse IPv6. Or, pour être correctement interprétée par le client WireGuard, cette adresse doit obligatoirement être encadrée par des crochets. Sans cela, le client refusera de l’importer ou affichera une erreur.

Le fichier corrigé devrait donc ressembler à ceci :

[Interface]
PrivateKey = MEWI0s1Va/Hmv9bIjMThg1HShP8XIs069hDOafLtgWM=
Address = 10.10.0.2/32
MTU = 1420
DNS = 9.9.9.9

[Peer]
PublicKey = itwr+yW2BpsVJgCMPiNXA5HglNwgoydEyHh1RGCxPRQ=
AllowedIPs = 0.0.0.0/0
Endpoint = [2a01:e0a:4b7:2500:dea6:32ff:fe02:4409]:51820
PersistentKeepalive = 21

Ce simple ajustement permet d’éviter les erreurs d’importation du fichier dans le client WireGuard.

⚠️ Ce fichier contient les clés privées et les informations de connexion au serveur VPN. Il permet un accès direct à votre réseau local. Par conséquent, ne le partagez jamais avec des tiers. Dans cet exemple, il s’agit d’un environnement de test. Le serveur a depuis été désactivé.

Installer le client WireGuard

Pour établir la connexion VPN, il vous faut maintenant installer le client WireGuard sur l’appareil que vous souhaitez connecter (ordinateur, smartphone, etc.).

Rendez-vous sur le site officiel de WireGuard et téléchargez le client adapté à votre système d’exploitation (Windows, macOS, Linux, Android ou iOS).

Installez l’application, puis ouvrez-la.

Cliquez sur « Importer un tunnel à partir d’un fichier » et sélectionnez le fichier .conf que vous avez préalablement modifié.

Une fois importé, cliquez sur « Activer » pour établir la connexion VPN.

Créez un VPN WireGuard sécurisé sur Ubuntu et accédez à votre réseau local à distance. Guide complet avec interface web, Docker et configuration pas à pas.

Une fois la connexion activée, l’ensemble de votre trafic passera par le tunnel WireGuard. Vous pouvez vérifier que la connexion est bien active en consultant votre adresse IP publique via un service en ligne tel que ifconfig.me. Si tout est correctement configuré, l’adresse IP affichée sera celle de votre serveur VPN, et non celle de votre connexion Internet habituelle.

Cet article vous a-t-il été utile ?

Cet article a plu à 1 personnes ! Et vous ?

À propos de l'auteur

Adrien Piron

Professionnel de l’assistance informatique depuis plusieurs années, j’ai fondé Assistouest pour répondre aux besoins des utilisateurs : diagnostic, dépannage et maintenance.

S’abonner
Notification pour
guest
0 Commentaires
Le plus populaire
Le plus récent Le plus ancien
Commentaires en ligne
Afficher tous les commentaires
× zoom plus modale