WireGuard est le moyen le plus rapide et le plus simple de construire un tunnel chiffré entre deux serveurs — un VPN site-à-site pour le trafic privé entre vos nœuds origin et edge, la réplication de base de données, ou un réseau de gestion. Ce guide connecte deux serveurs Hostfory (ou une machine Hostfory et votre bureau) avec un tunnel WireGuard persistant.
Prérequis
- Deux serveurs Linux avec accès root et IPs publiques (appelez-les Serveur A et Serveur B)
- Ubuntu 22.04 (WireGuard est intégré au noyau depuis la version 5.6)
- Un port UDP ouvert entre eux (par défaut 51820)
Étape 1 — Installer WireGuard sur les deux serveurs
apt update
apt install -y wireguardÉtape 2 — Générer les clés sur les deux serveurs
Sur chaque serveur, générez une paire de clés privée/publique :
cd /etc/wireguard
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
cat privatekey publickeyNotez la clé publique de chaque serveur — vous les utiliserez pour les références croisées. Gardez les clés privées secrètes.
Étape 3 — Configurer le Serveur A
Créez /etc/wireguard/wg0.conf sur le Serveur A :
[Interface]
Address = 10.10.0.1/24
ListenPort = 51820
PrivateKey = <SERVER_A_PRIVATE_KEY>
[Peer]
# Server B
PublicKey = <SERVER_B_PUBLIC_KEY>
Endpoint = <SERVER_B_PUBLIC_IP>:51820
AllowedIPs = 10.10.0.2/32
PersistentKeepalive = 2510.10.0.1/24 est l'IP privée du tunnel pour le Serveur A. AllowedIPs signifie "acheminer le trafic pour 10.10.0.2 via ce pair."
Étape 4 — Configurer le Serveur B
Créez /etc/wireguard/wg0.conf sur le Serveur B (image miroir) :
[Interface]
Address = 10.10.0.2/24
ListenPort = 51820
PrivateKey = <SERVER_B_PRIVATE_KEY>
[Peer]
# Server A
PublicKey = <SERVER_A_PUBLIC_KEY>
Endpoint = <SERVER_A_PUBLIC_IP>:51820
AllowedIPs = 10.10.0.1/32
PersistentKeepalive = 25PersistentKeepalive = 25 maintient le tunnel actif à travers les NAT/pare-feu en envoyant un keepalive toutes les 25 secondes — important si l'une des parties est derrière un NAT.
Étape 5 — Ouvrir le pare-feu
Sur les deux serveurs, autorisez le port UDP de WireGuard :
ufw allow 51820/udpÉtape 6 — Activer le tunnel
Sur les deux serveurs :
wg-quick up wg0
# Enable on boot
systemctl enable wg-quick@wg0Étape 7 — Tester la connectivité
Depuis le Serveur A, pinguez l'IP du tunnel du Serveur B :
ping 10.10.0.2Et vérifiez l'état du tunnel :
wg showVous devriez voir un handshake récent (latest handshake: X seconds ago) et les compteurs de trafic augmenter. Si le handshake ne se produit jamais, le port UDP n'atteint pas le pair — vérifiez les pare-feu aux deux extrémités et toutes les ACL réseau en amont.
Étape 8 — Acheminer un sous-réseau entier (facultatif)
Pour acheminer tout le trafic d'un sous-réseau (par exemple, le réseau privé 192.168.50.0/24 du Serveur B) via le tunnel, étendez AllowedIPs dans le bloc pair du Serveur A :
AllowedIPs = 10.10.0.2/32, 192.168.50.0/24Et activez le transfert IP sur le Serveur B :
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -pAjoutez une règle NAT sur le Serveur B afin que le trafic de retour trouve son chemin :
iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j MASQUERADECas d'utilisation courants sur l'infrastructure Hostfory
- Lien privé Origin ↔ edge : gardez l'IP réelle de votre origin de streaming cachée ; les edges tirent le contenu via le tunnel, seules les IPs des edges sont publiques.
- Réplication de base de données : exécutez la réplication Postgres/MySQL sur le tunnel chiffré au lieu d'exposer le port DB publiquement.
- Réseau de gestion : SSH, monitoring (Prometheus scraping), et sauvegardes sur 10.10.0.0/24 — jamais sur l'interface publique.
- Maillage Multi-PoP : connectez nos quatre PoPs (Amsterdam, Kyiv, Warsaw, Miami) dans un maillage WireGuard pour le trafic privé inter-PoP.
Dépannage
Handshake mais pas de ping : Inadéquation de AllowedIPs. Chaque pair doit lister l'IP du tunnel de l'autre. Une erreur courante est 0.0.0.0/0 des deux côtés, ce qui crée une boucle de routage.
Le tunnel tombe après un certain temps : ajoutez ou diminuez PersistentKeepalive. Les tables NAT expirent les flux UDP ; le keepalive empêche cela.
Fonctionne jusqu'au redémarrage : vous avez oublié systemctl enable wg-quick@wg0.
Prochaines étapes
Pour une configuration de gestion renforcée, restreignez SSH à n'écouter que sur l'IP du tunnel (ListenAddress 10.10.0.1 dans sshd_config) afin que l'interface publique n'expose jamais SSH. Combinez avec Fail2ban pour une défense en profondeur.