Lecture : 10 minutes · Niveau : intermédiaire · Mise à jour : avril 2026
WireGuard est devenu le standard moderne du VPN — code minimal (~4 000 lignes vs 100 000+ pour OpenVPN), performances supérieures, configuration simple. Ce tutoriel installe un serveur WireGuard sur un VPS Ubuntu et ajoute des utilisateurs (employés en télétravail). Comptez 1-2 heures.
⚠️ Vérifiez la documentation officielle wireguard.com pour les versions les plus récentes des commandes.
Sommaire
- Pourquoi WireGuard plutôt qu’OpenVPN
- Pré-requis
- Installation serveur sur Ubuntu
- Configuration de base
- Ajouter un client (employé en télétravail)
- Sécurisation supplémentaire
- Monitoring des connexions
- Maintenance et révocation
- FAQ
1. Pourquoi WireGuard plutôt qu’OpenVPN
| Critère | WireGuard | OpenVPN |
|---|---|---|
| Performance | ~2-4× plus rapide | Standard |
| Code base | ~4 000 lignes (auditable) | ~100 000+ lignes |
| Configuration | Simple, fichier court | Plus complexe |
| Mobile (économie batterie) | Excellent | Moyen |
| Reconnexion | Quasi instantanée | Plusieurs secondes |
| Cipher suite | Modernes uniquement | Configurable (rétrocompat) |
Limite : pas de fonctionnalités très avancées d’OpenVPN (push routes complexes, scripts on-connect détaillés). Pour la grande majorité des cas PME, WireGuard suffit largement.
2. Pré-requis
- VPS Ubuntu 22.04 ou 24.04 avec IP publique (Hetzner, OVH, DigitalOcean…)
- Accès SSH root ou sudo
- Un domaine ou sous-domaine (optionnel mais recommandé :
vpn.votre-pme.sn) - Connaissance de base Linux (édition fichiers, commandes systemctl)
Un petit VPS suffit (1 vCPU, 1 Go RAM). WireGuard est très peu gourmand.
3. Installation serveur sur Ubuntu
Mise à jour système et installation
sudo apt update && sudo apt upgrade -y
sudo apt install -y wireguard wireguard-tools qrencode
Activer le forwarding IP
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
sudo sysctl -p
Générer les clés serveur
cd /etc/wireguard
sudo umask 077
sudo wg genkey | sudo tee server_private.key | sudo wg pubkey | sudo tee server_public.key
sudo cat server_private.key
# Notez la clé privée pour la config suivante
sudo cat server_public.key
# Notez la clé publique (à donner aux clients)
4. Configuration de base
Fichier /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <CLE_PRIVEE_SERVEUR>
Address = 10.8.0.1/24
ListenPort = 51820
SaveConfig = false
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# Les sections [Peer] sont ajoutées plus bas pour chaque utilisateur
⚠️ Remplacer eth0 par votre interface réseau réelle (vérifier avec ip a).
Démarrer WireGuard
sudo systemctl enable --now wg-quick@wg0
sudo systemctl status wg-quick@wg0
sudo wg show
Pare-feu UFW
sudo ufw allow 51820/udp
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
5. Ajouter un client (employé en télétravail)
Pour chaque utilisateur, générer une paire de clés et ajouter une section [Peer] côté serveur.
Sur le serveur — script add-user.sh
#!/bin/bash
# Usage : sudo ./add-user.sh <nom_utilisateur>
USER=$1
if [ -z "$USER" ]; then echo "Usage: $0 <username>"; exit 1; fi
cd /etc/wireguard
mkdir -p clients/$USER && cd clients/$USER
# Génération clés
wg genkey | tee private.key | wg pubkey > public.key
PRIV=$(cat private.key)
PUB=$(cat public.key)
SERVER_PUB=$(cat /etc/wireguard/server_public.key)
SERVER_ENDPOINT="vpn.votre-pme.sn:51820" # à adapter
# Trouver IP libre suivante (10.8.0.X)
NEXT_IP=$(($(grep -c "AllowedIPs" /etc/wireguard/wg0.conf) + 2))
# Config client
cat > $USER.conf <<EOF
[Interface]
PrivateKey = $PRIV
Address = 10.8.0.$NEXT_IP/24
DNS = 1.1.1.1, 1.0.0.1
[Peer]
PublicKey = $SERVER_PUB
Endpoint = $SERVER_ENDPOINT
AllowedIPs = 10.8.0.0/24
PersistentKeepalive = 25
EOF
# Ajouter le peer côté serveur
cat >> /etc/wireguard/wg0.conf <<EOF
# Client: $USER (ajouté $(date))
[Peer]
PublicKey = $PUB
AllowedIPs = 10.8.0.$NEXT_IP/32
EOF
# Recharger config
sudo wg syncconf wg0 <(wg-quick strip wg0)
# QR code pour mobile
qrencode -t ansiutf8 < $USER.conf
echo ""
echo "Config sauvegardée: /etc/wireguard/clients/$USER/$USER.conf"
echo "Envoyer ce fichier .conf à l'utilisateur via canal sécurisé."
Rendre exécutable et utiliser :
sudo chmod +x add-user.sh
sudo ./add-user.sh awa-diop
Côté client (employé)
Sur PC :
– Télécharger l’app WireGuard officielle (wireguard.com/install)
– Importer le fichier .conf reçu
– Activer la connexion
Sur smartphone :
– App WireGuard officielle (Android Play Store / iOS App Store)
– Scanner le QR code généré par le script
⚠️ Le fichier .conf contient la clé privée — l’envoyer via canal sécurisé (Signal, gestionnaire de mots de passe d’équipe), jamais par WhatsApp ou email standard.
6. Sécurisation supplémentaire
2FA via clé matérielle ou app
WireGuard seul utilise une clé asymétrique. Pour ajouter un facteur supplémentaire (vérification utilisateur avant accès aux ressources internes) :
- Cloudflare Access ou Tailscale : intègrent SSO + 2FA au-dessus du tunnel
- Reverse proxy avec auth (Authelia, Authentik) sur les services internes
- 2FA sur SSH des serveurs accessibles via VPN (par-dessus WireGuard)
Limiter ce que voit l’utilisateur
Modifier AllowedIPs du peer côté serveur pour ne donner accès qu’à certains hosts :
# User awa : accès au seul NAS (10.8.0.10) et au serveur app (10.8.0.20)
AllowedIPs = 10.8.0.10/32, 10.8.0.20/32
Logs et audit
Activer la journalisation détaillée :
sudo journalctl -u wg-quick@wg0 -f
Pour des logs avancés (qui se connecte quand) : exporter vers Prometheus/Grafana ou Loki.
7. Monitoring des connexions
Voir les peers connectés en temps réel
sudo wg show wg0
Sortie :
peer: <PUB_KEY>
endpoint: 41.82.123.45:54321
allowed ips: 10.8.0.5/32
latest handshake: 1 minute, 23 seconds ago
transfer: 2.45 MiB received, 18.32 MiB sent
Exporter vers Prometheus
Outil wireguard_exporter (open source, Rust) expose les métriques WG en format Prometheus. Ensuite Grafana pour la visualisation.
8. Maintenance et révocation
Révoquer un utilisateur (départ employé)
# Identifier la PublicKey de l'utilisateur dans /etc/wireguard/wg0.conf
sudo grep -A 1 "Client: awa-diop" /etc/wireguard/wg0.conf
# Supprimer la section [Peer] correspondante du fichier wg0.conf
sudo nano /etc/wireguard/wg0.conf
# (supprimer les lignes du commentaire "Client: awa-diop" jusqu'à la prochaine ligne vide)
# Recharger config
sudo wg syncconf wg0 <(wg-quick strip wg0)
# Vérifier
sudo wg show
L’ex-employé ne peut plus se connecter. Sa clé est immédiatement invalidée.
Mises à jour
sudo apt update && sudo apt upgrade -y
sudo systemctl restart wg-quick@wg0
À faire mensuellement.
Sauvegarde de la config
sudo tar czf /opt/backups/wireguard-$(date +%F).tar.gz /etc/wireguard
À automatiser via cron + push vers stockage externe. Voir → Sauvegarde 3-2-1 sur connexion limitée.
9. FAQ
Combien d’utilisateurs un VPS modeste peut-il supporter ?
WireGuard est ultra-léger. Un VPS 1 vCPU / 1 Go RAM gère facilement 50-100 utilisateurs simultanés avec un trafic raisonnable. Pour des centaines d’utilisateurs ou du trafic lourd, augmenter à 2-4 vCPU.
Mon VPS est en Europe. Cela ralentit-il mes utilisateurs en Afrique ?
Légère latence ajoutée (50-150 ms typiquement vers Frankfurt depuis Dakar). Pour le trafic interne à votre VPN (accès NAS local PME via VPN), la route est : utilisateur → VPS Europe → réseau PME → ressource. Cela ajoute la latence aller-retour.
Optimisation : héberger le serveur WireGuard chez vous (sur le pare-feu PME ou un mini-PC local), exposer juste le port 51820 sur internet via votre IP publique.
WireGuard fonctionne-t-il sur tous les opérateurs mobiles ?
Oui en théorie. En pratique, certains opérateurs filtrent / bloquent les ports UDP non standards. Si problème : changer ListenPort à un port plus standard (443 UDP par exemple).
Combien coûte un VPS pour héberger WireGuard ?
À partir de quelques euros par mois pour un petit VPS Hetzner / OVH / DigitalOcean. Voir → Hébergement WordPress en Afrique : LWS, OVH, Hostinger, Hetzner.
Tailscale ou WireGuard pur : que choisir ?
Tailscale = WireGuard avec couche de gestion (mesh, NAT traversal automatique, identité centralisée, accès gratuit jusqu’à un certain nombre d’utilisateurs). Plus simple mais ajoute une dépendance à Tailscale Inc. WireGuard pur demande de gérer les peers manuellement mais aucune dépendance externe.
Pour PME qui démarrent : Tailscale est plus rapide. Pour souveraineté totale ou volumes : WireGuard pur.
Je perds la connexion VPN après quelques minutes. Que faire ?
Symptôme classique : NAT mobile qui ferme la session UDP. Ajouter dans la config client :
PersistentKeepalive = 25
(Envoie un paquet toutes les 25s pour maintenir le NAT ouvert.)
Articles liés (cluster Réseaux et infrastructure)
- 👉 Réseaux et infrastructure pour PME africaine : guide pratique 2026 — l’article pilier
- 👉 Wi-Fi professionnel pour PME : couverture, sécurité, segmentation
- 👉 Monitoring réseau PME avec Grafana et Prometheus
Article mis à jour le 25 avril 2026. Pour signaler une erreur, écrivez-nous.