WireGuard : Comment accéder au réseau local du Proxmox de son Homelab?

Ce guide permet de configurer un accès au VMs du Proxmox de mon Homelab n’ayant pas d’adresse IP publique fixe.

Une VPS prise chez un cloud provider fera office de serveur et fournira l’addresse IP publique. Une Vm bastion sera installée dans le réseau local de Proxmox et fera office de point d’entrée. Une fois que la Vm bastion sera connectée au Serveur, elle sera configurer pour router le traffic vers les autres VMs dans le réseau Proxmox.

Contexte :

  • J’ai installé un Proxmox pour mon homelab

  • Je n’ai pas encore d’abonnement Internet du coup j’utilise une box 4G sur laquelle je ne peux pas faire de redirection de port pour utiliser un service façon DynDns d’où la VPS Azure

Prérequis :

  • Un serveur ubuntu 22.04 : une VM sur Internet chez AWS (Ec2), Digital Ocean, Azure ou GCP

  • Wireguard

Etape 1: Configuration de la VM serveur

Comme serveur nous prendrons une VM de type Standard B1s (1 vcpu, 1 GiB memory) sur Azure. Utilisant le port 41194 pour Wireguard par la suite, il convient de l’ouvrir dans les configurations “Network security group” de la VM.

Etape 2: Installation de Wireguard sur le serveur

Mettons à jour les paquets de la VM puis installons wireguard grâce aux commandes ci-dessous.

sudo apt update
sudo apt upgrade
sudo apt install wireguard

Pour configurer Wireguard, nous devons créer une parie de clé privée/publique pour le serveur:

cd /etc/wireguard/
umask 077; wg genkey | tee privatekey | wg pubkey > publickey

Pour voir les fichiers créés utiliser les commandes ls et cat:

ls -l privatekey publickey
cat  privatekey

Etape 3: Configuration de Wireguard sur le serveur

Editer ou mettre à jour le fichier /etc/wireguard/wg0.conf comme suit:

[Interface]
Address = 192.168.6.1/24
ListenPort = 41194
PrivateKey = eEvqkcshecvNHU=
  • Adress correspond l’addresse IP privée du serveur VPN

  • PrivateKey est le contenu du ficher /etc/wireguard/privatekey

Nous pouvons démarrer me serveur wireguard.

sudo systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0
systemctl status wg-quick@wg0

Etape 4: Installer et configurer Wireguard sur la VM Bastion dans le réseau de Proxmox

L’installation se fait en tapant les commandes :

sudo apt install wireguard
cd /etc/wireguard/
umask 077; wg genkey | tee privatekey | wg pubkey > publickey
ls -l publickey privatekey

Editer ensuite le fichier  /etc/wireguard/wg0.conf avec le contenu :

[Interface]
PrivateKey = EMd0wAjOkD/uIhjo7fsyqut95Fvvo/r+IcDKefaWdFA=
Address = 192.168.6.3/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens18 -j MASQUERADE

[Peer]
PublicKey = CLE_PUBLIQUE_SERVEUR
AllowedIPs = 192.168.6.0/24
Endpoint = IP__PUBLIQUE_SERVEUR:41194
PersistentKeepalive = 15
  • Address correspond à l’adresse IP qu’aura la VM Bastion dans le VPN

  • PostUp permet de lancer après le démarrage de Wireguard des commandes iptables pour router le traffic provenant de l’interface réseau Wireguard wg0 vers l’interface réseau ens18 de la VM

  • PostDown permet de supprimer les règles iptables rajouter lors du PostUp à l’arrêt de Wireguard

  • La section [Peer] permet de donner les informations du Serveur pour établir la connexion VPN. Il faudra remplacer la clé privée et l’IP du serveur par les bonnes valeurs

Etape 5: Configurer la VM Bastion au niveau du serveur et routage du traffic vers le réseau Proxmox

Sur la Vm serveur, mettre à jour le fichier /etc/wireguard/wg0.conf avec la section [Peer] comme suit:

[Peer]
PublicKey = 8ba6RyuJIcVkOwxNVD47J/z5QkGmY02+Emgw7FAX7xQ=
AllowedIPs = 192.168.6.3/32, 192.168.2.0/24

La ligne AllowedIPs renseigne l’IP de notre VM Bastion (192.168.6.3/32) ainsi que le réseau local Proxmox (192.168.2.0/24).

Arrêter puis redémarrer Wireguard :

systemctl stop  wg-quick@wg0
systemctl start wg-quick@wg0

Tester un ping vers les IPs du réseau Proxmox

S'inscrire à ma liste de diffusion

Abonnement réussi

Erreur lors de l'inscription.

Nous ne communiquerons jamais votre adresse électronique à qui que ce soit.