Téléchargement de l’ISO OPNsense et installation
Se rendre sur la page https://opnsense.org/download/ et suivre les instructions.
Cela donne les instructions suivantes à exécuter dans la CLI de proxmox :
cd /var/lib/vz/template/iso
wget https://mirror.wdc1.us.leaseweb.net/opnsense/releases/25.7/OPNsense-25.7-dvd-amd64.iso.bz2
bzip2 -d OPNsense-25.7-dvd-amd64.iso.bz2 &
wget https://mirror.wdc1.us.leaseweb.net/opnsense/releases/25.7/OPNsense-25.7.pub
wget https://mirror.wdc1.us.leaseweb.net/opnsense/releases/25.7/OPNsense-25.7.pub.sig
wget https://mirror.wdc1.us.leaseweb.net/opnsense/releases/25.7/OPNsense-25.7-dvd-amd64.iso.sig
openssl base64 -d -in OPNsense-25.7-dvd-amd64.iso.sig -out /tmp/image.sig
# il faut attendre la fin de la commande bzip2 pour exécuter la commande suivante :
openssl dgst -sha256 -verify OPNsense-25.7.pub -signature /tmp/image.sig OPNsense-25.7-dvd-amd64.iso
# Cela doit afficher "Vérification OK"
rm -f OPNsense-25.7-dvd-amd64.iso.sig OPNsense-25.7.pub OPNsense-25.7.pub.sig
Ensuite vous pouvez créer la VM OPNsense depuis la GUI proxmox.
Vous pourrez alors suivre le démarrage de l’installation de opnsense via la console proxmox. Ainsi vous devrez saisir le login installer avec le mot de passe opnsense (c’est le mot de passe livré par défaut), et vous démarrerez alors l’installation.
Ensuite dans mon cas j’ai choisi une installation UFS car mon serveur proxmox est lui même déjà installé en ZFS.
Premier démarrage de OPNsense : conflit d’ip avec la box internet
Par défaut au premier démarrage, OPNsense va démarrer en tant que serveur DHCP sur le réseau privé 192.168.1.0/24, et il va donc prendre l’IP 192.168.1.1/24 ce qui rentre en conflit avec l’ip de la box internet qui est elle même 192.168.1.1. ==> on perd internet, ou internet est instable
La solution, c’est de choisir l’option « 2) Set Interface IP address » sur l’écran de boot, et de choisir l’attribution d’IP par DHCP :

Ainsi une IP sera attribuée par la box internet qui est le DHCP de mon réseau local :

Puis on accède à l’interface GUI via cette IP :

Configuration de wireguard pour accéder au homelab depuis l’extérieur
Dans le menu VPN de OpenSense, vous devez « ajouter » une instance de wireguard.
3 points importants lors de la création de l’instance :
- Tunnel address : c’est l’adresse IP du server wireguard (donc la VM opnsense) dans le réseau VPN
- Listen port : changez le port par défaut
- public key / private key : générez une paire de clef publique/privée en cliquant sur l’icône « engrenage ». Sauvegardez de manière sécurisée (keepass ?) cette paire de clefs

Paramétrage du client wireguard windows
Ouvrez le client wireguard et ajoutez un tunnel vide.
Par défaut wireguard a auto renseigné une paire de clef publique / privée.
Ensuite il faut modifier la configuration de manière à indiquer le serveur Wireguard :
[Interface]
PrivateKey = <CLEF_PRIVEE_CLIENT>
Address = 10.0.8.2/32
DNS = 10.0.8.1
[Peer]
PublicKey = <CLEF_PUBLIQUE_SERVEUR>
Endpoint = <IP_PUBLIQUE_BOX_INTERNET>:<PORT_OUVERT_BOX_INTERNET_POUR_NAT_VERS_OPNSENSE>
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
10.0.8.1 : c’est l’ip du server wireguard sur le réseau VPN
10.0.8.2/32 : désigne l’ip que l’on souhaite attribuer au laptop windows lorsqu’il se connecte au réseau vpn (notation CIDR)
PrivateKey est la clef a ajouter dans le peer côté serveur wireguard.

Paramétrage du client en tant que « peer » sur le serveur wireguard
Ensuite côté serveur nous allons autoriser notre laptop windows –> Ajout d’un peer
A la différence d’openvpn, il faut ici avoir une paire de clef privée/publique côté client et côté serveur, et ensuite autoriser les clients sur le serveur wireguard en indiquant la clef publique de chaque client.
Allowed IP du peer : 10.0.8.2/32 (c’est l’ip du peer dans le réseau VPN que doit accepter le serveur)
Endpoint address : vide (notre serveur wireguard n’a pas besoin de connaître l’ip publique du client. Mais on pourrait saisir cette adresse si elle est fixe, ça rajouterait une sécurité)
Endpoint port : vide (c’est le port d’écoute du client, ce port n’est pas fixe, idem Endpoint address : inutile de le renseigner)

Règle de NAT dans la box internet
Pour que le client wireguard du WAN puisse atteindre le serveur WireGuard de notre LAN, il faut définir une règle de NAT. En d’autre termes, cela va me permettre de me connecter au serveur VPN WireGuard depuis un laptop qui n’est pas connecté au wifi/réseau de ma box.

Ainsi la règle NAT est la suivante :
Destination initiale <IP Box>:<Port> et Nouvelle Destination <IP WireGuard serveur>:<Port d’écoute WireGuard serveur>
Concrètement, un exemple :
Destination initiale 78.XXX.XXX.XXX:51111 et Nouvelle Destination 192.168.1.77:55555
où l’ip et le port du serveur WireGuard sont ceux que vous avez définit)
- 51111 est le port que le client WireGuard attaque lorsqu’il contacte la box (car il n’accède pas directement au serveur)
- 55555 est le port d’écoute du serveur WireGuard
Cette règle NAT signifie que tout les paquets arrivant à la box sur le port 51111 vont être redirigés vers 192.168.1.77:55555.
Il s’agit de DNAT + PAT : Destination et Port sont remplacés dans le paquet IP reçu.
La box conserve dans sa table NAT les informations du paquet reçu : un tableau de correspondance entre port et ip avant modification et port et ip après modification du paquet.
Règles du firewall de WireGuard
Tout d’abord sur l’interface LAN nous autorisons le traffic UDP de notre client WireGuard :

Ensuite, le traffic autorisé est capté par le serveur WireGuard (dont l’ip est 192.168.1.97) et il est décrypté : on obtient un traffic classique par exemple si vous essayer d’accéder https://192.168.1.47 depuis votre laptop windows (à travers le VPN), alors ce flux https est encapsulé et crypté dans du UDP, et c’est le serveu WireGuard qui décrypte le flux. On se retrouve alors avec le flux https qui sera redirigé vers l’ip 192.168.1.47 mais pour cela il faut que les règles de firewall sur l’interface wireguard (wg0) autorise ce protocole. C’est ce qui est fait avec la règle suivante :

Tout le traffic qui arrive sur l’interface wireguard est autorisé, et quelque soit la source et la destination.
Laisser un commentaire