Wolkra

Guides

Installer un serveur VPN WireGuard

Installez un serveur VPN WireGuard sur Ubuntu 24.04 ou Debian 12 : clés, configuration wg0, transfert IP, NAT, pare-feu et configurations client pour téléphones et ordinateurs portables.

Mis à jour le 5 min de lecture

Pour installer un serveur VPN WireGuard, installez wireguard, générez une paire de clés pour le serveur et pour chaque client, écrivez /etc/wireguard/wg0.conf avec un sous-réseau privé, activez le transfert IP et le NAT, ouvrez un port UDP et démarrez wg-quick@wg0. Sur Ubuntu 24.04 ou Debian 12, cela prend une dizaine de minutes.

WireGuard est léger, rapide et intégré au noyau Linux. Il convient parfaitement à un VPN personnel avec une sortie en Allemagne, à l'accès à distance au réseau d'une entreprise ou à l'interconnexion de serveurs.

Ce qu'il vous faut

  • Un VPS avec une adresse IPv4 publique (l'IPv6 est un plus). Une offre 1 vCPU / 1 GB suffit largement. Un VPS à Francfort offre une faible latence dans toute l'Europe.
  • Un accès root ou sudo.
  • L'application WireGuard sur chaque client : Windows, macOS, Linux, Android ou iOS.

Dans les exemples :

Élément Valeur d'exemple
Adresse publique du serveur 203.0.113.10
Sous-réseau VPN 10.8.0.0/24
Adresse du serveur dans le tunnel 10.8.0.1
Premier client 10.8.0.2
Port UDP 51820

Remplacez-les par les vôtres. Vous préférez un raccourci ? Chez Wolkra, choisissez l'application WireGuard en un clic à la création du serveur et passez directement à l'étape 7.

1. Installer WireGuard

bash
sudo apt update
sudo apt install -y wireguard qrencode

qrencode permet d'afficher les configurations client sous forme de QR codes pour les téléphones.

2. Générer les clés du serveur

bash
sudo -i
cd /etc/wireguard
umask 077
wg genkey | tee server.key | wg pubkey > server.pub

umask 077 garantit que la clé privée n'est lisible que par root.

3. Trouver l'interface réseau publique

bash
ip route show default

Le mot qui suit dev est votre interface publique, généralement eth0 ou ens3. Les exemples utilisent eth0.

4. Écrire la configuration du serveur

Créez /etc/wireguard/wg0.conf :

ini
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <contents of server.key>

# NAT pour les clients VPN qui sortent vers Internet
PostUp   = iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Insérez la clé avec :

bash
sed -i "s|<contents of server.key>|$(cat server.key)|" wg0.conf
chmod 600 wg0.conf

Debian 12 et Ubuntu 24.04 s'appuient sur nftables, et la commande iptables passe par le backend nftables : les règles ci-dessus fonctionnent donc sur les deux.

5. Activer le transfert IP

bash
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-wireguard.conf
sysctl --system

6. Ouvrir le pare-feu et démarrer le tunnel

Avec UFW :

bash
ufw allow 51820/udp
ufw route allow in on wg0 out on eth0
ufw reload

ufw route allow laisse sortir vers Internet le trafic transféré depuis le tunnel. Sans cette règle, les clients se connectent mais n'ont pas d'accès à Internet.

Si vous utilisez un pare-feu Wolkra, ajoutez-y aussi une règle entrante pour UDP 51820.

Démarrez WireGuard et activez-le au démarrage :

bash
systemctl enable --now wg-quick@wg0
wg show

wg show doit afficher l'interface wg0 et son port d'écoute.

7. Ajouter un client

Générez les clés du client sur le serveur (ou sur l'appareil client, ce qui est un peu plus sûr car la clé privée ne le quitte jamais) :

bash
cd /etc/wireguard
wg genkey | tee laptop.key | wg pubkey > laptop.pub

Ajoutez le client comme pair au serveur en cours d'exécution et enregistrez la configuration :

bash
wg set wg0 peer "$(cat laptop.pub)" allowed-ips 10.8.0.2/32
wg-quick save wg0

wg-quick save réécrit l'état en cours dans wg0.conf, pour que le pair survive à un redémarrage.

8. Écrire la configuration du client

Créez laptop.conf :

ini
[Interface]
PrivateKey = <contents of laptop.key>
Address = 10.8.0.2/32
DNS = <your resolver>

[Peer]
PublicKey = <contents of server.pub>
Endpoint = 203.0.113.10:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
  • AllowedIPs = 0.0.0.0/0, ::/0 fait passer tout le trafic par le VPN (tunnel complet).
  • Pour un tunnel partiel (split tunnel) qui n'atteint que votre réseau privé, utilisez par exemple AllowedIPs = 10.8.0.0/24, 10.0.0.0/24.
  • PersistentKeepalive maintient le tunnel ouvert derrière les box Internet et les réseaux mobiles.
  • DNS est l'adresse d'un résolveur de confiance, par exemple un résolveur public ou un résolveur que vous faites tourner sur le serveur.

Importer sur un téléphone

bash
qrencode -t ansiutf8 < laptop.conf

Ouvrez l'application WireGuard, choisissez Scanner un QR code et pointez l'appareil vers le terminal.

Importer sur un ordinateur

Copiez laptop.conf sur l'appareil de façon sécurisée (par exemple avec scp) et importez-le dans l'application WireGuard, ou sous Linux :

bash
sudo cp laptop.conf /etc/wireguard/wg0.conf
sudo wg-quick up wg0

Sur un client Linux, wg-quick configure le DNS via resolvconf. S'il signale que la commande est introuvable, installez openresolv (Debian) ou supprimez la ligne DNS et configurez le DNS vous-même.

Supprimez ensuite la clé privée du client du serveur si vous l'y avez générée.

9. Tester le tunnel

Sur le client, connectez-vous et vérifiez l'adresse publique :

bash
curl -4 https://ifconfig.me

Elle doit afficher l'adresse du serveur. Sur le serveur :

bash
wg show

Un « latest handshake » récent et des compteurs de transfert qui augmentent indiquent que le pair est connecté.

Ajouter l'IPv6 au tunnel

Si votre serveur dispose d'une adresse IPv6, vous pouvez aussi fournir de l'IPv6 aux clients. Ajoutez une plage IPv6 privée (une adresse locale unique comme fd42:42:42::1/64) à l'Address du serveur, une adresse correspondante pour chaque client, activez net.ipv6.conf.all.forwarding=1 et ajoutez une règle de masquerade ip6tables sur le modèle de celle en IPv4. Sans cela, laissez ::/0 hors des AllowedIPs du client, sinon le trafic IPv6 sera abandonné plutôt que de fuir.

Dépannage

Symptôme À vérifier
Pas de handshake Port UDP ouvert dans UFW et dans le pare-feu cloud ? Endpoint et clé publique corrects ?
Handshake mais pas d'Internet ip_forward activé ? Règle NAT sur la bonne interface ? ufw route allow ajouté ?
Les sites se chargent lentement Essayez de réduire le MTU : ajoutez MTU = 1380 dans la section [Interface] du client
Fonctionne en Wi-Fi, pas en mobile Ajoutez PersistentKeepalive = 25

journalctl -u wg-quick@wg0 affiche les erreurs survenues au démarrage.

Trafic et coût

Un VPN double le trafic du serveur : les données arrivent d'Internet puis repartent vers le client. Avec une offre au trafic mesuré, la facture grimpe vite. Les serveurs Wolkra disposent d'une bande passante non mesurée, sans frais au GB, sur des ports partagés jusqu'à 10 Gbit/s dans le cadre d'un usage raisonnable. Notez que la politique d'utilisation acceptable s'applique toujours à tout ce qui transite par votre VPN.

Pour savoir pourquoi d'autres font tourner leur propre VPN, voir les cas d'usage de serveur VPN. Pour durcir l'hôte lui-même, suivez comment sécuriser un serveur Ubuntu, mais ignorez les réglages sysctl sur les redirections, qui entrent en conflit avec le routage.

Questions fréquentes

De quelle puissance de serveur ai-je besoin pour WireGuard ?

Très peu. WireGuard tourne dans le noyau, et un serveur avec 1 vCPU et 1 GB suffit largement pour un foyer ou une petite équipe.

Quel port WireGuard utilise-t-il ?

Le port UDP de votre choix. 51820 est la valeur par défaut courante ; ouvrez-le à la fois dans le pare-feu du serveur et dans un éventuel pare-feu cloud.

Un serveur VPN consomme-t-il beaucoup de trafic ?

Oui, chaque octet utilisé par un client passe par le serveur, à l'entrée comme à la sortie. Une offre à trafic non mesuré évite les frais au GB pour cela.

Existe-t-il un moyen plus simple que de configurer WireGuard à la main ?

Chez Wolkra, vous pouvez choisir l'application WireGuard en un clic à la création d'un serveur. Elle est prête quelques minutes après le démarrage.

Puis-je utiliser WireGuard pour accéder à des serveurs privés ?

Oui. Faites passer par le tunnel la plage de votre réseau privé plutôt que tout le trafic : les clients peuvent alors atteindre des serveurs sans IP publique.

Lancer un serveur à Francfort

Créez un compte, rechargez votre solde et lancez un serveur dès €3.49 par mois, en ne payant que les heures utilisées. Bande passante non mesurée sur toutes les offres.