Architecture cible
Nous allons connecter deux VPS via un tunnel WireGuard chiffré :
- VPS A (serveur web) : 10.0.0.1/24
- VPS B (base de données) : 10.0.0.2/24
Le trafic entre les deux serveurs passera par le tunnel, invisible sur le réseau public.
Installation
Sur les deux VPS :
apt update && apt install wireguard -y
Génération des clés
Sur VPS A :
wg genkey | tee /etc/wireguard/private_a.key | wg pubkey > /etc/wireguard/public_a.key
chmod 600 /etc/wireguard/private_a.key
Sur VPS B :
wg genkey | tee /etc/wireguard/private_b.key | wg pubkey > /etc/wireguard/public_b.key
chmod 600 /etc/wireguard/private_b.key
Configuration VPS A
# /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <CLEF_PRIVEE_A>
Address = 10.0.0.1/24
ListenPort = 51820
[Peer]
PublicKey = <CLEF_PUBLIQUE_B>
AllowedIPs = 10.0.0.2/32
Endpoint = <IP_PUBLIQUE_B>:51820
PersistentKeepalive = 25
Configuration VPS B
# /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <CLEF_PRIVEE_B>
Address = 10.0.0.2/24
ListenPort = 51820
[Peer]
PublicKey = <CLEF_PUBLIQUE_A>
AllowedIPs = 10.0.0.1/32
Endpoint = <IP_PUBLIQUE_A>:51820
PersistentKeepalive = 25
Activation
Sur les deux serveurs :
systemctl enable --now wg-quick@wg0
Test de connectivité
Depuis VPS A :
ping 10.0.0.2
wg show
Cas d'usage : MySQL sur réseau privé
Configurez MySQL sur VPS B pour n'écouter que sur l'interface WireGuard :
# /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 10.0.0.2
Depuis VPS A, connectez-vous via le tunnel :
mysql -h 10.0.0.2 -u app_user -p
Offre Virtmo : simplifiez votre réseau privé avec nos tunnels IP managés, disponibles dès 4,99€/mois avec configuration automatique.