Faire tourner votre propre VPN avec WireGuard
WireGuard est un protocole VPN intégré au noyau Linux qui permet de monter votre propre serveur VPN en quelques commandes. Votre propre VPN fait sortir votre trafic par une adresse IP que vous contrôlez. Il ne vous rend pourtant pas anonyme : les sites que vous visitez voient l'adresse IP de votre serveur.
Cet article explique à quoi sert votre propre VPN et ce qu'il ne résout pas, les étapes d'installation manuelle, et la voie plus simple avec une interface web.
À quoi sert votre propre VPN ?
- Wi-Fi public : sur le réseau d'un café ou d'un hôtel, votre trafic voyage chiffré jusqu'à votre serveur.
- Une IP turque depuis l'étranger : comme le serveur est à Istanbul, vous pouvez sortir avec une adresse IP turque quand vous êtes à l'étranger.
- Accès au réseau privé : vous atteignez les appareils que vous reliez au même VPN, et les services du serveur, comme si vous étiez tous sur le même réseau local.
- Une adresse de sortie fixe : même si l'IP de votre domicile change, la sortie de votre VPN reste la même.
Qu'est-ce qu'il ne résout pas ?
- Il ne vous rend pas anonyme. Les sites voient l'adresse IP de votre serveur, et cette adresse est liée à votre compte.
- Certains services bloquent les adresses IP de centres de données. Ne supposez pas que tous les services s'ouvriront à travers votre VPN.
- Il ne propose pas de sorties dans de nombreux pays. Votre serveur se trouve à un seul endroit, qui est Istanbul chez Seturack.
- Il n'a pas été conçu pour donner accès à Internet à d'autres personnes. Si vous fournissez un accès à Internet à des tiers via votre serveur, les obligations de la loi n° 5651 sont les vôtres selon le contrat de service. Utilisez le VPN principalement pour vos propres appareils, et lisez le contrat de service avant de donner accès à quelqu'un d'autre.
Pourquoi on aime WireGuard
- Il est entré dans le noyau Linux avec la version 5.6 : sur les distributions actuelles, vous n'avez donc pas besoin d'installer un pilote à part.
- Il n'y a pas de mots de passe. Chaque extrémité est reconnue par sa propre paire de clés privée et publique.
- La configuration est courte et tient dans un seul fichier.
- Il utilise UDP. Le port que vous voyez le plus souvent dans les exemples et les outils est 51820.
Installation manuelle (Ubuntu, en tant que root)
- Installez le paquet :
apt install wireguard - Générez la paire de clés du serveur :
umask 077 && wg genkey | tee privatekey | wg pubkey > publickey - Laissez chaque appareil client générer sa propre clé. L'application WireGuard des téléphones et des ordinateurs le fait, et vous n'avez besoin que de sa clé publique.
- Écrivez
/etc/wireguard/wg0.confen suivant le tableau ci-dessous. - Activez le transfert IP :
echo 'net.ipv4.ip_forward=1' | tee /etc/sysctl.d/70-wireguard.confpuissysctl --system - Ouvrez le port dans le pare-feu :
ufw allow 51820/udp - Démarrez-le :
systemctl enable --now wg-quick@wg0
| Section | Ligne | Rôle |
|---|---|---|
| [Interface] | Address = 10.8.0.1/24 | L'adresse du serveur dans le réseau VPN |
| [Interface] | ListenPort = 51820 | Le port UDP sur lequel il écoute |
| [Interface] | PrivateKey = le contenu du fichier privatekey | La clé privée du serveur. Ne la partagez jamais |
| [Interface] | PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | Fait sortir le trafic des clients vers Internet. Remplacez eth0 par le nom de l'interface de votre serveur, que montre ip route show default |
| [Interface] | PostDown = les trois mêmes règles, avec -D au lieu de -A | Supprime les règles quand le VPN s'arrête |
| [Peer] | PublicKey = la clé publique du client | Identifie ce client |
| [Peer] | AllowedIPs = 10.8.0.2/32 | L'adresse VPN que vous donnez au client |
Écrivez d'abord les lignes [Interface] dans le fichier, puis les lignes [Peer]. Chaque client a son propre bloc [Peer].
Connecter un client
Sur le client, mettez votre propre clé privée, la ligne Address = 10.8.0.2/24 et une adresse DNS dans la section [Interface]. Dans la section [Peer], mettez la clé publique du serveur, la ligne Endpoint = SERVER_IP:51820 et la ligne AllowedIPs = 0.0.0.0/0. La dernière valeur envoie tout le trafic IPv4 dans le tunnel. Si vous voulez seulement atteindre le réseau VPN, écrivez plutôt 10.8.0.0/24. Pour les appareils derrière un NAT ou un pare-feu, la documentation officielle suggère PersistentKeepalive = 25.
Lancez wg show sur le serveur. Si le client s'est connecté, vous voyez une ligne « latest handshake ».
Tout le trafic ou seulement une partie ?
La valeur AllowedIPs sur le client décide quel trafic entre dans le tunnel. 0.0.0.0/0 y envoie tout le trafic IPv4, mais pas l'IPv6. Si votre appareil a de l'IPv6, ce trafic peut contourner le tunnel. Avec 0.0.0.0/0, ::/0, l'IPv6 entre aussi dans le tunnel et y est abandonné, car le serveur ne transporte pas d'IPv6, il ne peut donc pas fuir. Si vous voulez seulement atteindre certains réseaux, par exemple 10.8.0.0/24, n'écrivez que ceux-là. On appelle cela le split tunneling, et le reste du trafic sort par sa route normale. Pour atteindre un réseau à distance, le split tunneling suffit souvent. Le reste de votre trafic ne passe pas par le tunnel, il n'est donc pas ralenti.
La voie plus simple : wg-easy
wg-easy est un outil qui réunit le serveur WireGuard et la gestion des clients avec une interface web. Il ajoute et supprime des clients et affiche un QR code pour les téléphones. Il s'installe avec Docker Compose et utilise 51820/UDP. Un reverse proxy est recommandé si vous voulez ouvrir l'écran d'administration sur Internet en toute sécurité.
Le serveur WireGuard prêt à l'emploi de Seturack utilise wg-easy et est en service en 4 minutes environ. Dans le panneau, vous voyez l'adresse d'administration et le mot de passe. Le tunnel ne transporte que l'IPv4. Créez un client distinct pour chaque appareil, et si vous perdez un appareil, vous ne supprimez que son client. Les étapes de connexion sont dans l'article d'aide WireGuard.
Configurer vos appareils
WireGuard propose des applications officielles pour Windows, macOS, Android et iOS. Sous Linux, le paquet suffit. Sur un téléphone, vous ajoutez la configuration avec un QR code, et sur un ordinateur en important le fichier de configuration. Vous activez et désactivez le tunnel depuis l'application. Tant que le tunnel est actif, votre trafic Internet sort par votre serveur.
Quatre petites règles de sécurité
- Laissez seul root lire le fichier de configuration :
chmod 600 /etc/wireguard/wg0.conf - N'envoyez jamais votre clé privée à personne. La clé publique est la seule chose que vous partagez.
- Supprimez le bloc
[Peer]d'un appareil que vous avez perdu ou que vous ne voulez plus autoriser. - Gardez le serveur à jour. Les mises à jour du système d'exploitation et des applications vous reviennent après l'installation.
Comme le trafic de votre VPN passe par le serveur, le volume de trafic compte aussi. Le trafic illimité est inclus dans le prix Seturack.
Si la connexion ne s'établit pas
Certains réseaux bloquent le trafic UDP. Essayez un autre réseau, par exemple les données mobiles de votre téléphone. Vérifiez aussi que le port 51820/UDP est ouvert dans le pare-feu.
Si vous voulez commencer avec l'installation prête à l'emploi, voyez la page VPN WireGuard.
Commentaires0
Pas encore de commentaire
Soyez le premier à partager votre avis.
Veuillez vous connecter ou vous inscrire pour laisser un commentaire.