Installer et configurer WireGuard pour créer un tunnel VPN rapide, moderne et sécurisé entre un serveur et des clients.
# Installer WireGuard
sudo apt update
sudo apt install wireguard -y
# Vérifier l'installation
wg --version
# Activer le forwarding de façon permanente
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# Générer la paire de clés serveur
wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key
# Sécuriser la clé privée
sudo chmod 600 /etc/wireguard/server_private.key
# Afficher les clés
cat /etc/wireguard/server_private.key
cat /etc/wireguard/server_public.key
# Générer la paire de clés client
wg genkey | sudo tee /etc/wireguard/client1_private.key | wg pubkey | sudo tee /etc/wireguard/client1_public.key
sudo chmod 600 /etc/wireguard/client1_private.key
sudo nano /etc/wireguard/wg0.conf
Contenu du fichier :
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = CLE_PRIVEE_SERVEUR
# Règles NAT (remplacer eth0 par votre interface)
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
# Client 1
PublicKey = CLE_PUBLIQUE_CLIENT1
AllowedIPs = 10.0.0.2/32
CLE_PRIVEE_SERVEUR et CLE_PUBLIQUE_CLIENT1 par les vraies clés générées à l'étape précédente. Remplacez eth0 par le nom de votre interface réseau principale (ip a pour vérifier).
# Démarrer WireGuard
sudo wg-quick up wg0
# Activer au démarrage
sudo systemctl enable wg-quick@wg0
sudo nano /etc/wireguard/wg0.conf
Contenu :
[Interface]
Address = 10.0.0.2/24
PrivateKey = CLE_PRIVEE_CLIENT1
DNS = 1.1.1.1
[Peer]
PublicKey = CLE_PUBLIQUE_SERVEUR
Endpoint = IP_PUBLIQUE_SERVEUR:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
# Connecter le client
sudo wg-quick up wg0
# Installer qrencode
sudo apt install qrencode -y
# Générer le QR code du fichier de config client
qrencode -t ansiutf8 < /etc/wireguard/client1.conf
# Voir le statut du tunnel
sudo wg show
# Résultat attendu : les peers avec le dernier handshake et le trafic
# interface: wg0
# public key: xxx
# listening port: 51820
# peer: xxx
# allowed ips: 10.0.0.2/32
# latest handshake: 42 seconds ago
# transfer: 1.2 MiB received, 3.4 MiB sent
# Tester la connectivité
ping 10.0.0.2 # depuis le serveur
ping 10.0.0.1 # depuis le client
# Arrêter le tunnel
sudo wg-quick down wg0
# Ajouter un nouveau client : ajouter un bloc [Peer] dans wg0.conf
# puis recharger
sudo wg-quick down wg0 && sudo wg-quick up wg0
# Avec UFW
sudo ufw allow 51820/udp