WireGuard sur VPS : créez votre VPN personnel sécurisé pas à pas

WireGuard sur VPS : créez votre VPN personnel sécurisé pas à pas
WireGuard sur VPS permet de créer un VPN personnel en installant WireGuard sur un serveur Linux, en générant une paire de clés pour le serveur et chaque appareil, puis en ouvrant un port UDP — généralement le 51820/UDP — afin d’établir un tunnel chiffré. Le résultat attendu est une connexion VPN utilisable depuis un ordinateur ou un téléphone, avec une adresse IP de sortie correspondant au VPS si tout le trafic est routé dans le tunnel.
WireGuard est un protocole VPN qui crée une interface réseau virtuelle et associe des clés publiques à des adresses autorisées dans le tunnel. Ce tutoriel WireGuard vise une installation sur Ubuntu ou Debian, avec un client Windows, macOS, Android ou iOS. La méthode reste volontairement explicite : clés, pare-feu, routage, NAT et contrôles de fonctionnement sont traités séparément pour éviter une configuration qui semble active mais ne transporte aucun trafic.
En bref
🔒 Un serveur WireGuard nécessite une clé privée serveur, une clé publique pour chaque client et un réseau VPN interne distinct de votre réseau local.
📡 Le port d’écoute habituel est 51820 en UDP. Le pare-feu du VPS et, si nécessaire, celui du fournisseur cloud doivent l’autoriser.
🧭 Pour faire sortir le trafic Internet par le VPS, activez le transfert IPv4 et une règle de NAT vers l’interface Internet du serveur.
⚠️ Un VPN personnel chiffre le trajet entre l’appareil et le VPS. Il ne rend pas anonyme et ne remplace ni les mises à jour ni la sécurisation du serveur.
Comment fonctionne un VPN personnel avec WireGuard ?
Un VPN personnel WireGuard établit un tunnel chiffré entre un client et un VPS accessible depuis Internet. Le client reçoit une adresse privée dans le tunnel, par exemple 10.66.66.2, tandis que le serveur utilise 10.66.66.1. WireGuard encapsule ensuite les paquets dans UDP et n’accepte que les pairs dont les clés et les adresses autorisées correspondent à sa configuration.

WireGuard utilise des primitives cryptographiques modernes, dont Curve25519, ChaCha20, Poly1305, BLAKE2 et le protocole Noise. Son modèle évite la gestion de certificats souvent rencontrée avec d’autres solutions VPN : une paire de clés est créée pour chaque participant. La clé privée ne quitte jamais l’appareil qui l’a générée ; seule la clé publique est copiée dans la configuration du pair distant.
Le mécanisme de « cryptokey routing » relie une clé publique à une liste d’adresses IP autorisées. Dans une configuration simple, le serveur associe la clé publique du téléphone à l’adresse 10.66.66.2/32. Cette précision compte : deux clients ne doivent jamais recevoir la même adresse VPN, sous peine de routage incohérent.
Un tunnel affiché comme « actif » ne prouve pas que le trafic circule : le handshake récent, le routage et la sortie DNS doivent être vérifiés séparément.
Quels prérequis préparer avant d’installer WireGuard sur un VPS ?
Pour installer WireGuard sur un VPS, prévoyez un serveur Linux à jour, un accès SSH administrateur, une adresse IPv4 publique et un appareil client compatible. WireGuard fonctionne notamment sur Linux, Windows, macOS, BSD, Android et iOS. Comptez environ une heure si vous découvrez le routage IPv4 et le pare-feu, davantage si la console réseau de votre hébergeur ajoute ses propres règles.

Le tutoriel utilise Ubuntu ou Debian avec les paquets officiels. Les noms d’interface réseau, les règles de pare-feu et les commandes de maintenance varient selon la distribution. Avant toute modification réseau, conservez une session SSH ouverte et vérifiez que vous disposez d’un accès de secours via la console du fournisseur de VPS.
| Élément | Exemple utilisé | Rôle | Point de vigilance |
|---|---|---|---|
| Adresse VPN du serveur | 10.66.66.1/24 |
Passerelle du réseau WireGuard | Ne pas choisir un sous-réseau déjà utilisé chez vous |
| Adresse VPN du client | 10.66.66.2/32 |
Identifiant réseau unique du premier client | Une adresse différente par appareil |
| Port WireGuard | 51820/UDP |
Réception des paquets chiffrés | À ouvrir dans tous les pare-feux concernés |
| Interface Internet du VPS | eth0 ou ens3 |
Sortie vers Internet pour le NAT | À identifier, jamais à supposer |
Relevez le nom de l’interface qui porte la route par défaut avant d’écrire les règles NAT :
ip route show default
La ligne affichée contient généralement dev eth0, dev ens3 ou un autre nom. Remplacez eth0 dans les exemples suivants par cette valeur. La commande ne modifie rien ; elle sert uniquement à éviter de masquer le trafic vers une mauvaise interface.
- Un VPS Ubuntu ou Debian maintenu à jour.
- Un accès SSH avec un compte administrateur ou
sudo. - Un port UDP autorisé dans le pare-feu du VPS et dans le panneau réseau de l’hébergeur.
- Un client WireGuard officiel installé depuis la page de téléchargement de WireGuard.
- Un plan d’adressage qui ne chevauche ni votre réseau domestique ni celui d’un réseau professionnel.
Le VPS reste une machine exposée à Internet. Avant d’y installer un serveur WireGuard, appliquez une méthode pour sécuriser un VPS Linux dès l’installation : mises à jour, accès SSH par clé, compte administrateur limité et pare-feu restrictif réduisent la surface d’attaque avant d’ajouter le VPN.
Installer et configurer WireGuard sur le serveur : les étapes
La configuration d’un serveur WireGuard suit une séquence stricte : installer les paquets, générer les clés, créer l’interface wg0, activer le routage puis ouvrir le port UDP. Les commandes ci-dessous ciblent Ubuntu et Debian. Elles doivent être exécutées une à une, en vérifiant chaque résultat, et non collées aveuglément dans une session de production.
Étape 1 : mettre à jour le VPS et installer WireGuard
Connectez-vous au VPS par SSH, mettez les paquets à jour, puis installez WireGuard et le paquet de gestion de pare-feu UFW si vous choisissez de l’utiliser. La commande apt est propre à Debian et Ubuntu ; sur une autre distribution, consultez la documentation de son gestionnaire de paquets.
sudo apt update
sudo apt upgrade
sudo apt install wireguard ufw
Le résultat attendu est l’installation de la commande wg et de l’outil wg-quick. Contrôlez la présence de WireGuard avec wg --version. Une mise à jour peut nécessiter un redémarrage selon les composants du système effectivement mis à niveau.
Étape 2 : générer et protéger les clés du serveur
Créez le répertoire de configuration avec des permissions restrictives, puis générez une clé privée et sa clé publique associée. Ne publiez jamais le contenu de server_private.key, même dans une capture d’écran ou un dépôt Git ; la clé publique peut, elle, être partagée avec les clients.
sudo install -m 700 -d /etc/wireguard
cd /etc/wireguard
sudo sh -c 'wg genkey | tee server_private.key | wg pubkey > server_public.key'
sudo chmod 600 server_private.key
sudo cat server_public.key
Le résultat attendu est une chaîne encodée affichée par la dernière commande. Copiez cette clé publique dans un emplacement de travail temporaire et sûr. La clé privée serveur doit rester lisible uniquement par l’administrateur système et le service WireGuard.
Étape 3 : créer l’interface wg0 du serveur
Ouvrez le fichier /etc/wireguard/wg0.conf avec un éditeur de texte, par exemple sudo nano /etc/wireguard/wg0.conf. Remplacez uniquement les valeurs placées entre chevrons. Ne copiez pas une clé fictive : insérez la valeur réellement lue dans server_private.key.
[Interface]
Address = 10.66.66.1/24
ListenPort = 51820
PrivateKey = <COLLEZ_LA_CLE_PRIVEE_DU_SERVEUR>
Le réseau 10.66.66.0/24 est un exemple de réseau privé. Il convient tant qu’il ne recouvre pas un réseau déjà joint par le client. Le port 51820 est le port UDP par défaut souvent utilisé par WireGuard ; le changer est possible, mais ne renforce pas à lui seul la sécurité et impose de modifier aussi le client et le pare-feu.
Étape 4 : activer le routage IPv4 et le NAT
Pour qu’un appareil connecté puisse naviguer sur Internet via le VPS, Linux doit transmettre les paquets entre l’interface wg0 et l’interface Internet. Ajoutez d’abord l’activation persistante du transfert IPv4 dans un fichier dédié :
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-wireguard-forwarding.conf
sudo sysctl --system
Ajoutez ensuite les règles NAT dans la section [Interface] du fichier wg0.conf. Remplacez eth0 par l’interface trouvée avec ip route show default. Le résultat attendu est une configuration qui masque les adresses privées du tunnel derrière l’adresse publique du VPS.
PostUp = ufw route allow in on wg0 out on eth0
PostUp = ufw route allow in on eth0 out on wg0
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = ufw route delete allow in on wg0 out on eth0
PostDown = ufw route delete allow in on eth0 out on wg0
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Ces lignes s’appuient sur UFW et iptables. Elles ne conviennent pas telles quelles à une machine administrée uniquement avec nftables ou un pare-feu centralisé par le fournisseur. Dans ce cas, adaptez les règles à votre politique réseau plutôt que de cumuler plusieurs systèmes de filtrage.
Étape 5 : ouvrir les ports nécessaires sans couper SSH
Autorisez explicitement SSH avant d’activer UFW, puis ouvrez le port WireGuard en UDP. L’ouverture du port 51820/UDP ne donne pas accès à SSH ; elle rend seulement l’écoute WireGuard joignable. Vérifiez également le groupe de sécurité, firewall cloud ou ACL proposé par votre hébergeur.
sudo ufw allow OpenSSH
sudo ufw allow 51820/udp
sudo ufw enable
sudo ufw status verbose
Le résultat attendu est une règle SSH et une règle UDP visibles dans l’état UFW. Une gestion de port reste utile dans d’autres contextes : ce guide pour accéder à un service local via le port 8080 rappelle notamment qu’un port ouvert ne suffit pas si le service, le routage ou le pare-feu ne correspondent pas.
Étape 6 : démarrer le tunnel et l’activer au redémarrage
Démarrez l’interface après avoir relu le fichier de configuration, puis activez son lancement automatique. En cas d’erreur, ne modifiez pas plusieurs paramètres à la fois : récupérez le message du service et corrigez la ligne concernée.
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0
sudo wg show
Le résultat attendu est une interface wg0 avec l’adresse 10.66.66.1/24 et le port d’écoute choisi. À ce stade, aucun client n’est encore autorisé : l’absence de pair dans sudo wg show est normale.
Comment configurer le premier client WireGuard ?
Un client WireGuard doit posséder sa propre paire de clés, une adresse VPN unique et la clé publique du serveur. La configuration client indique aussi l’adresse publique ou le nom de domaine du VPS dans Endpoint. Le serveur, lui, reçoit la clé publique du client et l’adresse VPN réservée à cet appareil.

AllowedIPs.Générez les clés du premier client sur l’appareil client lorsque c’est possible. Pour un client Linux, les commandes suivantes créent les fichiers dans le répertoire courant. Sur Windows, macOS, Android ou iOS, l’application officielle peut générer les clés lors de la création ou de l’importation d’un tunnel.
- Générez la clé privée et la clé publique du client, puis conservez la clé privée hors de tout canal de partage.
- Ajoutez la clé publique du client et son adresse
10.66.66.2/32danswg0.confsur le VPS. - Créez le fichier client avec sa clé privée, la clé publique du serveur et l’adresse publique du VPS.
- Redémarrez l’interface serveur ou ajoutez le pair via
wg set, puis importez le fichier dans l’application client.
Étape 7 : générer les clés du client Linux
Sur un client Linux, exécutez les commandes suivantes dans un dossier protégé. Le résultat attendu est une clé publique à transférer vers le serveur et une clé privée qui reste sur le client. Pour un téléphone, évitez de générer une clé sur le VPS puis de l’envoyer par messagerie.
umask 077
wg genkey | tee client1_private.key | wg pubkey > client1_public.key
cat client1_public.key
Étape 8 : déclarer le client sur le VPS
Ajoutez ce bloc à la fin de /etc/wireguard/wg0.conf sur le serveur. Remplacez la valeur de PublicKey par la clé lue dans client1_public.key. La valeur 10.66.66.2/32 désigne un seul hôte ; elle évite qu’un client annonce tout le sous-réseau VPN.
[Peer]
PublicKey = <COLLEZ_LA_CLE_PUBLIQUE_DU_CLIENT>
AllowedIPs = 10.66.66.2/32
Rechargez ensuite l’interface sans oublier que cette opération coupe brièvement les connexions qui passeraient déjà par ce tunnel :
sudo wg-quick down wg0
sudo wg-quick up wg0
sudo wg show
Étape 9 : créer et importer la configuration client
Créez un fichier nommé, par exemple, client1.conf. Remplacez les trois valeurs entre chevrons. L’option AllowedIPs = 0.0.0.0/0 envoie tout le trafic IPv4 dans le tunnel ; elle correspond au cas d’usage « adresse IP avec VPN ». Pour un accès au seul réseau VPN, utilisez plutôt 10.66.66.0/24.
[Interface]
PrivateKey = <CLE_PRIVEE_DU_CLIENT>
Address = 10.66.66.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = <CLE_PUBLIQUE_DU_SERVEUR>
Endpoint = <IP_PUBLIQUE_OU_NOM_DU_VPS>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
PersistentKeepalive = 25 aide certains clients placés derrière un routeur NAT à conserver un chemin de retour vers le serveur. Cette valeur n’est pas obligatoire pour tous les scénarios. Pour réduire les dépendances à un DNS public, vous pouvez aussi étudier le choix d’un serveur DNS local libre, mais un résolveur DNS auto-hébergé demande lui aussi maintenance et contrôle des fuites.
Sur Windows et macOS, ouvrez l’application WireGuard officielle puis importez le fichier .conf. Sur Android et iOS, l’import peut passer par un fichier ou un code QR généré localement. Ne conservez pas ce code QR dans une galerie partagée : il contient la clé privée du client.
Comment vérifier que la connexion WireGuard fonctionne réellement ?
Une connexion WireGuard fonctionnelle présente un handshake récent sur le serveur, une adresse VPN joignable entre client et serveur, puis une sortie Internet conforme au mode de routage choisi. Commencez par le handshake : il confirme que les clés, l’endpoint et le port UDP communiquent. Vérifiez ensuite le trafic, car un handshake valide n’active pas automatiquement le NAT ou le DNS.
Sur le VPS, lancez sudo wg show après avoir activé le tunnel client. La section du pair doit afficher latest handshake avec une valeur récente et des compteurs de transfert qui progressent. Un handshake absent indique généralement un problème d’adresse endpoint, de port UDP bloqué ou de clé publique incorrecte.
- Depuis le client, testez d’abord la passerelle VPN :
ping 10.66.66.1. - Testez ensuite une adresse Internet :
ping 1.1.1.1. - Enfin, ouvrez un site de vérification d’adresse IP et confirmez que l’IP publique affichée est celle du VPS si
0.0.0.0/0est utilisé. - Si les adresses IP fonctionnent mais pas les noms de domaine, examinez la ligne
DNSde la configuration client.
Un VPN sur VPS est aussi utile pour réduire l’exposition directe de services personnels. Par exemple, un serveur SSH peut rester accessible uniquement depuis le réseau WireGuard une fois le tunnel validé. Cette restriction doit être préparée avec prudence : testez l’accès VPN et gardez une console de secours avant de retirer toute règle SSH publique.
Le bon ordre de diagnostic est simple : handshake, adresse VPN, routage Internet, puis résolution DNS. Inverser cet ordre fait perdre du temps.
WireGuard, OpenVPN ou IPsec : quelle solution choisir ?
WireGuard convient à un VPN personnel lorsque vous cherchez une configuration par clés, un faible nombre de composants et des clients disponibles sur les principaux systèmes. OpenVPN reste présent dans de nombreux environnements existants et peut être imposé par une infrastructure déjà en place. IPsec répond souvent à des besoins d’intégration réseau ou d’équipements professionnels, mais sa mise en œuvre peut demander plus de paramètres.
| Solution | Configuration courante | Cas adapté | Limite à anticiper |
|---|---|---|---|
| WireGuard | Clés publiques et privées, UDP, interface virtuelle | VPN personnel, appareils mobiles, accès distant | Le routage et le pare-feu restent à administrer |
| OpenVPN | Certificats ou identifiants, profils client | Compatibilité avec un existant OpenVPN | Gestion des certificats plus lourde |
| IPsec | Politiques IPsec et paramètres de négociation | Interconnexion de réseaux et équipements compatibles | Diagnostic et configuration souvent plus complexes |
Le bon arbitrage ne repose pas sur une promesse de performance universelle. WireGuard réduit surtout la friction de configuration pour un petit parc d’appareils, à condition de maîtriser les clés et les règles de routage. Si votre entreprise ou votre routeur impose OpenVPN ou IPsec, changer de protocole peut ajouter une charge d’intégration inutile.
Erreurs fréquentes avec WireGuard sur VPS et corrections
Les incidents WireGuard les plus courants ne viennent pas du chiffrement, mais d’un détail de réseau ou d’une clé mal placée. Une méthode de dépannage utile consiste à modifier un seul paramètre à la fois, à relever la sortie de wg show et à documenter l’adresse VPN affectée à chaque appareil.
- Oublier le pare-feu du fournisseur. UFW peut autoriser
51820/UDPalors que le firewall cloud le bloque encore. Vérifiez les deux couches avant de modifier les clés. - Réutiliser la même adresse client. Deux pairs avec
10.66.66.2/32créent une ambiguïté de routage. Attribuez une adresse et un bloc[Peer]distincts par appareil. - Utiliser la mauvaise interface de sortie. Une règle NAT vers
eth0échoue si le VPS sort réellement viaens3. Consultez la route par défaut avant de rédigerPostUp. - Mettre une clé privée dans le mauvais fichier. La clé privée du client ne doit jamais se retrouver dans la configuration serveur, et inversement. Comparez les noms de fichiers avant de redémarrer l’interface.
- Déduire un problème WireGuard d’un problème DNS. Un ping vers
1.1.1.1qui fonctionne alors qu’un nom de domaine échoue pointe d’abord vers le résolveur DNS, pas vers le tunnel.
Une connexion instable sur mobile peut aussi être liée aux changements d’adresse réseau entre Wi-Fi et données cellulaires. WireGuard gère le roaming entre adresses IP, mais un client derrière NAT peut avoir besoin de PersistentKeepalive. Si les coupures persistent, contrôlez les journaux système, l’état du réseau mobile et les restrictions d’économie d’énergie de l’application.
Entretenir et sécuriser le serveur WireGuard
Un serveur WireGuard n’est pas un dispositif « installer puis oublier ». Le protocole réduit la surface applicative, mais le VPS conserve un système d’exploitation, des comptes, un port UDP exposé et une configuration réseau à maintenir. Les mises à jour du système et la revue périodique des pairs autorisés font partie du fonctionnement normal.
Ajoutez un appareil en créant une nouvelle paire de clés et une nouvelle adresse VPN, par exemple 10.66.66.3/32. Pour retirer un appareil perdu ou inutilisé, supprimez son bloc [Peer] du serveur puis rechargez l’interface. La suppression d’un pair côté serveur est la mesure décisive : désinstaller l’application sur le téléphone ne révoque pas sa clé.
- Appliquez les mises à jour de sécurité du système et redémarrez quand le noyau le requiert.
- Conservez une liste locale des appareils, de leurs clés publiques et de leurs adresses VPN.
- Limitez les ports publics au strict nécessaire : SSH administré et UDP WireGuard, selon votre besoin réel.
- Sauvegardez les fichiers de configuration chiffrés, sans les déposer dans un dépôt public.
- Examinez régulièrement
sudo wg showet les journaux de l’interface après une modification.
WireGuard ne fournit pas nativement un serveur UPnP pour créer automatiquement des redirections de ports. Sur un VPS doté d’une adresse publique, cette fonction est généralement inutile : le port UDP est ouvert dans le pare-feu du serveur et dans les règles cloud. IPv6 peut aussi être configuré dans un déploiement avancé, mais il faut alors appliquer une politique de filtrage IPv6 explicite plutôt que supposer que l’absence de NAT protège les clients.
Sources utiles à consulter
La documentation officielle de WireGuard décrit le protocole, les plateformes prises en charge, le modèle de clés et le fonctionnement des interfaces virtuelles. La page d’installation officielle de WireGuard permet de récupérer les clients et paquets adaptés au système utilisé.
Pour les règles d’accès et le durcissement général, consultez la documentation de votre distribution Linux, de votre fournisseur de VPS et de son pare-feu réseau. Toute modification qui limite SSH ou change la politique de filtrage doit être validée avec une console de secours opérationnelle.
À retenir
- 🔒 WireGuard repose sur des clés privées locales et des clés publiques échangées entre pairs.
- 📡 Le port 51820 en UDP doit être autorisé sur le VPS et dans le firewall cloud.
- 🧭 Le transfert IPv4 et le NAT sont nécessaires pour une sortie Internet via le VPS.
- 📄 Chaque appareil reçoit une adresse VPN et une paire de clés distinctes.
- ⚠️ Un VPN personnel chiffre le tunnel, sans garantir anonymat ni sécurité totale.
Questions fréquentes sur WireGuard sur VPS
WireGuard est-il adapté à un débutant ?
WireGuard est plus lisible qu’une solution reposant sur plusieurs certificats, mais un VPN sur VPS demande des bases de réseau. Le débutant doit au minimum comprendre les clés, les adresses privées, le port UDP, le pare-feu et le rôle du NAT avant de modifier un serveur exposé.
Combien d’appareils peut-on connecter à un serveur WireGuard ?
Un serveur WireGuard peut gérer plusieurs appareils, à condition de créer une paire de clés et une adresse VPN unique pour chacun. La limite pratique dépend ensuite des ressources du VPS, de la bande passante disponible et de l’usage réel des clients.
Un VPN personnel WireGuard rend-il anonyme ?
Non. Un VPN personnel chiffre le trafic entre votre appareil et le VPS, puis fait sortir ce trafic avec l’adresse IP publique du VPS lorsque le routage complet est activé. Le fournisseur du VPS, les services consultés et les traces de connexion restent des éléments à considérer selon le contexte.
Peut-on utiliser WireGuard sur Android ou iPhone ?
Oui. WireGuard dispose de clients pour Android et iOS, ainsi que pour Windows, macOS et Linux. Importez un fichier de configuration ou un code QR généré de façon sécurisée, puis évitez de partager ce contenu car il contient la clé privée du client.
Comment révoquer un appareil qui a perdu son téléphone ?
Supprimez immédiatement le bloc [Peer] correspondant de la configuration serveur, puis rechargez l’interface WireGuard. Générez une nouvelle paire de clés si vous souhaitez autoriser un appareil de remplacement ; ne réutilisez pas la clé de l’ancien appareil.