Installer et configurer OPNsense dans Proxmox VE : WAN + WAN backup, LAN, DMZ et tunnel WireGuard site-a-site

OPNsense est un pare-feu open source dérivé de FreeBSD, maintenu par Deciso depuis 2015. Fork de pfSense, il se distingue par une interface web moderne, un rythme de mises à jour soutenu et une communauté active. Ce guide décrit la mise en place d’OPNsense dans une VM Proxmox, avec une architecture réseau composée de :
- Deux accès Internet (WAN principal + WAN de secours) pour un failover automatique.
- Un LAN pour les postes de travail et services internes.
- Une DMZ isolée pour les serveurs exposés.
- Un tunnel WireGuard site-à-site vers un réseau distant.
1. Prérequis et hypothèses
Matériel et réseau
Pour reproduire cette architecture, l’hote Proxmox doit disposer d’au minimum trois interfaces réseau physiques (NIC). La documentation officielle de Proxmox VE recommande l’usage de bridges Linux pour relier les VM aux réseaux physiques. Chaque bridge correspond à un domaine de diffusion L2 distinct, ce qui garantit une séparation nette des flux.
- NIC1 : WAN (raccorde au routeur ou a l’ONT du FAI principal).
- NIC2 : WAN de secours (box 4G/5G, second FAI, lien LTE ou liaison satellite).
- NIC3 : lien interne vers un switch (trunk VLAN pour transporter LAN et DMZ).
Un switch ménageable est recommandé pour segmenter LAN et DMZ en VLAN sur un trunk 802.1Q. Les cartes réseau Intel (famille I210, I350, X520) sont privilégiées par la communauté FreeBSD et OPNsense pour leur stabilité et leurs pilotes natifs performants.
Coté Proxmox VE, la version 8.x est conseillée (Debian 12 Bookworm). Nous nous assurons que la virtualisation matérielle (VT-x/AMD-V) est activée dans le BIOS/UEFI du serveur.
Plan d’adressage (exemple)
| Zone | Sous-réseau | Passerelle OPNsense | VLAN |
|---|---|---|---|
| LAN | 192.168.10.0/24 | 192.168.10.1 | 10 |
| DMZ | 192.168.20.0/24 | 192.168.20.1 | 20 |
| Tunnel WireGuard | 10.99.0.0/30 | 10.99.0.1 | – |
| Réseau distant (via WG) | 172.16.50.0/24 | – | – |
2. Schéma d’architecture
Le schéma ci-dessous illustre la topologie logique de l’installation. L’hôte Proxmox expose trois bridges Linux à la VM OPNsense, qui segmente ensuite le trafic entre les différentes zones.

3. Configuration réseau cote Proxmox : bridges et segmentation
La configuration réseau de l’hôte Proxmox constitue le socle de toute l’architecture. Le principe fondamental est simple : un bridge Linux par domaine de diffusion L2. Proxmox VE utilise nativement les bridges Linux (nommes vmbrX) pour connecter les VM au réseau physique. La documentation officielle Proxmox détaille cette approche dans la section Network Configuration.
L’approche retenue ici repose sur trois bridges :
- vmbr-wan : bridge dédié au WAN principal (NIC1). Aucune adresse IP attribuée cote Proxmox, pour éviter d’exposer l’hyperviseur sur Internet.
- vmbr-wan2 : bridge dédié au WAN de secours (NIC2). Même principe : pas d’IP sur ce bridge.
- vmbr-trunk : bridge VLAN-aware rattaché à NIC3, qui transporte les VLAN 10 (LAN) et 20 (DMZ). L’IP de management Proxmox peut être positionnée ici, sur le VLAN LAN.
Cette séparation garantit qu’aucun trafic Internet ne peut atteindre directement l’interface d’administration Proxmox. Le fichier de configuration réseau se trouve dans /etc/network/interfaces.
# ================================================================ # Proxmox VE - /etc/network/interfaces # Adaptez les noms d'interface selon le matériel # (eno1/eno2/eno3, enp1s0/enp2s0/enp3s0, etc.) # ================================================================ auto lo iface lo inet loopback # --- NIC1 : WAN (pas d'IP sur l'interface physique) --- auto eno1 iface eno1 inet manual auto vmbr-wan iface vmbr-wan inet manual bridge-ports eno1 bridge-stp off bridge-fd 0 # Pas d'adresse IP : ce bridge est exclusivement # reserve au trafic WAN de la VM OPNsense. # --- NIC2 : WAN backup (4G/5G, second FAI) --- auto eno2 iface eno2 inet manual auto vmbr-wan2 iface vmbr-wan2 inet manual bridge-ports eno2 bridge-stp off bridge-fd 0 # Meme logique : pas d'IP cote Proxmox. # --- NIC3 : trunk interne (LAN + DMZ en VLAN) --- auto eno3 iface eno3 inet manual auto vmbr-trunk iface vmbr-trunk inet static address 192.168.10.254/24 gateway 192.168.10.1 bridge-ports eno3 bridge-stp off bridge-fd 0 bridge-vlan-aware yes bridge-vids 10 20 # L'IP 192.168.10.254 sert de management Proxmox # via le VLAN LAN. La gateway pointe vers OPNsense.
# Appliquer la configuration réseau sans redémarrage ifreload -a # Verifier les bridges actifs bridge link bridge vlan show ip -br link
Approches VLAN pour présenter LAN et DMZ à OPNsense
Deux méthodes sont couramment utilisées pour fournir les VLAN LAN et DMZ a la VM OPNsense :
Approche 1 (retenue dans ce guide) : deux cartes virtuelles distinctes rattachées à vmbr-trunk, chacune taguée avec un VLAN spécifique dans la configuration de la VM Proxmox (vtnet2 sur VLAN 10, vtnet3 sur VLAN 20). C’est la méthode la plus simple à diagnostiquer : chaque interface de la VM correspond a une zone.
Approche 2 (trunk vers OPNsense) : une seule carte virtuelle non taguée rattachée à vmbr-trunk, puis création des sous-interfaces VLAN dans OPNsense (Interfaces > Other Types > VLAN). Cette approche est plus flexible si on prévoit d’ajouter de nombreux VLAN, mais elle complexifie le diagnostic en cas de problème.
4. Création de la VM OPNsense dans Proxmox
Télécharger l’ISO OPNsense
Nous nous rendons sur la page de téléchargement officielle d’OPNsense (opnsense.org/download). On sélectionne l’image DVD au format amd64 avec le moteur de chiffrement OpenSSL. Le fichier téléchargé est compresse en .bz2 et doit être extrait avant usage.
# ================================================================ # Déposer l'ISO dans le stockage local de Proxmox # ================================================================ cd /var/lib/vz/template/iso # Télécharger l'ISO (remplacez l'URL par la version courante) wget https://mirror.dns-root.de/opnsense/releases/25.1/OPNsense-25.1-dvd-amd64.iso.bz2 # Extraire l'archive bunzip2 OPNsense-25.1-dvd-amd64.iso.bz2 # Vérifier la présence du fichier ls -lh OPNsense-*.iso
Créer la VM en ligne de commande (qm)
La création en CLI offre un contrôle précis et la possibilité de scripter le déploiement. OPNsense, basé sur FreeBSD, supporte les pilotes VirtIO de manière fiable depuis plusieurs versions. La communauté recommande néanmoins de garder e1000 sous le coude pour les rares cas de régression.
# ================================================================ # Création de la VM OPNsense (VMID 120) # ================================================================ VMID=120 # Créer la VM avec les ressources de base qm create $VMID \ --name opnsense \ --memory 4096 \ --cores 2 \ --cpu host \ --ostype other # Disque système (20 Go minimum, VirtIO SCSI) qm set $VMID \ --scsihw virtio-scsi-pci \ --scsi0 local-lvm:20 # Ordre de boot et ISO qm set $VMID \ --boot order=scsi0 \ --ide2 local:iso/OPNsense-25.1-dvd-amd64.iso,media=cdrom # Console série (utile pour le debug pre-GUI) qm set $VMID \ --serial0 socket \ --vga serial0 # ================================================================ # Interfaces réseau : 4 vNIC VirtIO # ================================================================ # net0 = WAN (bridge vmbr-wan, pas de VLAN) qm set $VMID --net0 virtio,bridge=vmbr-wan # net1 = WAN backup (bridge vmbr-wan2, pas de VLAN) qm set $VMID --net1 virtio,bridge=vmbr-wan2 # net2 = LAN (bridge vmbr-trunk, VLAN 10) qm set $VMID --net2 virtio,bridge=vmbr-trunk,tag=10 # net3 = DMZ (bridge vmbr-trunk, VLAN 20) qm set $VMID --net3 virtio,bridge=vmbr-trunk,tag=20 # ================================================================ # Démarrer la VM # ================================================================ qm start $VMID
Pour visualiser la configuration complète de la VM :
# Afficher la configuration de la VM
qm config 120
Optimisations recommandées pour la VM :
- On activera QEMU Guest Agent (qm set 120 –agent 1) pour une meilleure intégration avec Proxmox (arrêt propre, freeze du système de fichiers).
- On utilisera le type de CPU « host » pour permettre a OPNsense d’exploiter les instructions AES-NI (accélération du chiffrement pour WireGuard et IPsec).
- Si le serveur dispose de plus de 4 Go de RAM, on envisage d’allouer 4 a 8 Go a OPNsense si on active Suricata (IDS/IPS) ou le cache web (Squid).
5. Installation d’OPNsense dans la VM
Au démarrage de la VM sur l’ISO, OPNsense lance un environnement live. Un prompt vous propose de démarrer l’assignation manuelle des interfaces. Voici la séquence d’installation :
Étape 1 : A l’écran « Press any key to start the manual interface assignment », on appui sur une touche pour définir les interfaces immédiatement. Sinon, OPNsense tente une détection automatique.
Étape 2 : Quand le système demande « Do you want to configure LAGGs now? », on répond « n ». Idem pour la question sur les VLAN : on répond « n » (puisque les VLAN sont gérés cote Proxmox dans notre approche).
Étape 3 : On assigne les interfaces :
- WAN : vtnet0
- LAN : vtnet2
Les interfaces WAN_BACKUP et DMZ seront assignées après l’installation, via la GUI.
Étape 4 : on se connecte avec l’utilisateur installer et le mot de passe opnsense pour lancer l’installation sur le disque. On choisira le système de fichiers UFS (suffisant pour une VM) ou ZFS si on souhaite des snapshots au niveau du filesystem.
Étape 5 : Après l’installation, on sélectionne « Complete Install », on modifie le mot de passe root, puis redémarre. On retire l’ISO du lecteur CD virtuel (ou modifie l’ordre de boot) pour démarrer sur le disque.
# ================================================================ # Retirer l'ISO après installation (depuis Proxmox) # ================================================================ qm set 120 --ide2 none # Vérifications en console OPNsense (shell FreeBSD) ifconfig # Lister les interfaces et leurs IP netstat -rn # Table de routage ping -c3 8.8.8.8 # Test de connectivité WAN
6. Affectation des interfaces dans OPNsense
Une fois l’installation terminée et l’accès a la GUI établi, la première tache consiste à déclarer toutes les interfaces réseau. Dans le menu Interfaces > Assignments, les quatre interfaces virtuelles (vtnet0 a vtnet3) doivent apparaitre. On assigne comme suit :
| Interface OPNsense | Périphérique | Configuration IP | Rôle |
|---|---|---|---|
| WAN | vtnet0 | DHCP ou PPPoE (selon le FAI) | Accès Internet principal |
| WAN_BACKUP | vtnet1 | DHCP (box 4G/5G) | Lien de secours |
| LAN | vtnet2 | Statique : 192.168.10.1/24 | Réseau interne |
| DMZ | vtnet3 | Statique : 192.168.20.1/24 | Zone démilitarisée |
Pour chaque interface, rendez-vous dans Interfaces > [NomInterface] pour activer l’interface et définir sa configuration IP. Nous pouvons activer le serveur DHCP sur le LAN (Services > ISC DHCPv4 > [LAN]) si les postes en ont besoin. Sur la DMZ, il est préférable de configurer les adresses IP de manière statique, ou de limiter le DHCP à un nombre très restreint de baux.
On pense à appliquer les modifications et à vérifier depuis la console OPNsense que chaque interface est bien active :
# Vérifier l’état des interfaces (console OPNsense) ifconfig vtnet0 # WAN ifconfig vtnet1 # WAN_BACKUP ifconfig vtnet2 # LAN ifconfig vtnet3 # DMZ
7. Multi-WAN : failover entre WAN principal et WAN de secours
Le Multi-WAN est l’un des atouts majeurs d’OPNsense. Le mécanisme repose sur la surveillance active des passerelles (gateways) par le service dpinger, qui envoie des requêtes ICMP régulières vers une IP de référence (monitor IP). Lorsqu’une passerelle est déclarée indisponible (perte de paquets, latence excessive), le groupe de passerelles bascule automatiquement sur le lien de secours. La documentation OPNsense précise que cette technologie s’appuie sur le routage base sur les politiques (policy-based routing), integré au firewall pf.
7.1 Vérifier et configurer les passerelles
Rendez-vous dans System > Gateways > Configuration. Si les interfaces WAN sont configurées en DHCP, les passerelles sont normalement créées automatiquement. On vérifie les points suivants pour chaque passerelle :
- Monitor IP : On défini une IP externe fiable et différente pour chaque passerelle. Exemple : 1.1.1.1 (Cloudflare) pour le WAN principal, 8.8.8.8 (Google) pour le WAN de secours. ⚠️ Attention : l’IP utilisée comme monitor ne sera accessible que via l’interface correspondante.
- Priority : la passerelle principale doit avoir une valeur inférieure à la passerelle de secours (ex. : WAN = 100, WAN_BACKUP = 200).
- Upstream Gateway : on coche cette option pour indiquer qu’il s’agit d’une passerelle par défaut.
7.2 Créer un groupe de passerelles (Gateway Group)
Dans System > Gateways > Group, on crée un nouveau groupe :
| Parametre | Valeur |
|---|---|
| Nom | WAN_FAILOVER |
| WAN (Tier 1) | Priorité haute (passerelle principale) |
| WAN_BACKUP (Tier 2) | Passerelle de secours |
| Trigger | Packet Loss or High Latency |
7.3 Activer le basculement par defaut
Deux réglages supplémentaires sont indispensables au bon fonctionnement du failover :
- Dans System > Settings > General, on activera « Allow default gateway switching ». Ce paramètre autorise le système à changer de passerelle par défaut lors d’un basculement, ce qui est nécessaire pour que le trafic généré par OPNsense lui-même (DNS, mises à jour) suive correctement le failover.
- Dans Firewall > Settings > Advanced, on activera « Sticky connections » pour empêcher les sessions TCP/UDP en cours de basculer d’un WAN à l’autre en plein milieu d’échange.
7.4 Appliquer le groupe via les règles firewall (policy-based routing)
Le failover ne s’active pas « tout seul » : il faut l’appliquer explicitement dans les règles firewall des interfaces internes. Rendez-vous dans Firewall > Rules > LAN, on édite la règle principale (par exemple « LAN net > any ») et on défini le champ Gateway sur le groupe WAN_FAILOVER. On fait de même pour les règles de la DMZ si les serveurs DMZ doivent aussi bénéficier du failover.
7.5 NAT sortant en Multi-WAN
C’est le point de friction le plus fréquent en dual-WAN. Par défaut, OPNsense génère des règles NAT sortant uniquement pour l’interface WAN principale. Lors d’un basculement, le trafic sort par WAN_BACKUP mais la règle de traduction d’adresse peut manquer.
Pour corriger ce problème :
- Rendez-vous dans Firewall > NAT > Outbound.
- On passe en mode Hybrid (ou Manual pour un controle total).
- On Ajoute des règles NAT explicites pour le réseau LAN et le réseau DMZ vers WAN_BACKUP, en plus des règles existantes vers WAN.
# ================================================================ # Exemple de règles NAT Outbound (resume) # ================================================================ # Source Interface NAT Address # 192.168.10.0/24 WAN WAN address # 192.168.10.0/24 WAN_BACKUP WAN_BACKUP address # 192.168.20.0/24 WAN WAN address # 192.168.20.0/24 WAN_BACKUP WAN_BACKUP address
8. Configurer une DMZ sécurisée
Une DMZ n’est pas un second LAN. C’est une zone à risque élevé : les machines qui y résident sont exposées à Internet (par exemple un serveur web ou un reverse proxy). Le principe de sécurité fondamental est le suivant : la DMZ peut accéder à Internet de manière contrôlée, mais elle ne doit jamais pouvoir initier une connexion vers le LAN, sauf exception explicite et justifiée.
8.1 Règles firewall pour la DMZ
On construi les règles de la DMZ selon une logique de refus implicite (implicit deny) : tout ce qui n’est pas explicitement autorisé est bloqué. Voici un modèle de règles, à adapter :
| # | Action | Source | Destination | Port | Commentaire |
|---|---|---|---|---|---|
| 1 | Pass | DMZ net | DMZ address | 53 (DNS) | Accès au resolver DNS OPNsense |
| 2 | Pass | DMZ net | any (hors RFC1918) | 80, 443 | Mises à jour et accès web contrôlé |
| 3 | Block | DMZ net | LAN net | * | Bloquer tout accès de la DMZ vers le LAN |
| 4 | Block | DMZ net | any | * | Refus implicite (catch-all) |
L’ordre des règles est déterminant : OPNsense (via pf) les évalue de haut en bas et s’arrête à la première correspondance. La règle de blocage DMZ vers LAN doit figurer avant toute règle « allow to any » pour être effective.
Pour créer des exceptions granulaires (par exemple : un serveur DMZ qui doit interroger une base de données sur le LAN), on ajoute une règle au-dessus de la règle de blocage, en spécifiant l’IP source, l’IP destination et le port exact.
8.2 Publication de services : NAT entrant (Port Forward)
Pour exposer un service hébergé en DMZ (par exemple un serveur web HTTPS), on configure une redirection de port :
- Dans Firewall > NAT > Port Forward, On crée une règle : Interface = WAN, Protocole = TCP, Port destination = 443, IP cible = adresse du serveur DMZ, Port cible = 443.
- On choisi « Add associated filter rule » pour que la règle firewall WAN correspondante soit créée automatiquement.
- Et onvérifie la règle générée dans Firewall > Rules > WAN.
Pour renforcer la sécurité de ce type d’exposition, il faut envisager l’ajout d’un reverse proxy (HAProxy par exemple, plugin disponible dans OPNsense) ou d’un WAF (Web Application Firewall). On limite les IP source autorisées via des alias si le service n’est destiné qu’a un public restreint.
8.3 Alias : simplifier la gestion des règles
OPNsense permet de créer des alias (Firewall > Aliases) pour regrouper des adresses IP, des ports ou des sous-réseaux. Par exemple :
Private_Networks: alias contenant10.0.0.0/8,172.16.0.0/12,192.168.0.0/16.DMZ_Webservers: alias contenant les IP des serveurs web en DMZ.Web_Ports: alias contenant les ports 80 et 443.
9. Tunnel WireGuard site-à-site vers un réseau distant
WireGuard est un protocole VPN moderne, intégré au noyau FreeBSD depuis la version 13 (et donc nativement supporte par OPNsense). Son code minimaliste (environ 4 000 lignes) et ses performances élevées en font un choix pertinent pour les tunnels site-à-site, en particulier en environnement virtualisé ou la réduction de l’overhead CPU est appréciable.
Dans notre scenario, le tunnel relie le LAN local (192.168.10.0/24) au réseau distant (172.16.50.0/24) via un réseau de transit 10.99.0.0/30.
9.1 Installer et activer WireGuard
Depuis OPNsense 24.1, WireGuard est intégré au système de base. Pour l’utilisation d’une version antérieure, il faudra installer le plugin via System > Firmware > Plugins en recherchant os-wireguard.
Activation du service : VPN > WireGuard > Settings > General, on coche « Enable WireGuard » puis on Apply.
9.2 Créer l’instance WireGuard locale
Dans VPN > WireGuard > Instances, on clique sur « + » pour ajouter une nouvelle instance :
| Parametre | Valeur |
|---|---|
| Name | wg0 |
| Listen Port | 51820 |
| Tunnel Address | 10.99.0.1/30 |
| Private / Public Key | Générées automatiquement (cliquez sur « Generate ») |
9.3 Déclarer le peer (site distant)
Dans VPN > WireGuard > Peers, ajoutez un nouveau peer :
| Parametre | Valeur |
|---|---|
| Public Key | Clé publique du site distant |
| Endpoint Address | IP publique (ou FQDN) du site distant |
| Endpoint Port | 51820 |
| Allowed IPs | 10.99.0.2/32, 172.16.50.0/24 |
| Persistent Keepalive | 25 secondes (si l’un des sites est derrière un NAT) |
Les Allowed IPs ont un double role dans WireGuard : elles définissent à la fois les routes (quels réseaux sont accessibles via ce peer) et le filtrage (seuls les paquets provenant de ces sous-réseaux sont acceptés en retour). La documentation OPNsense insiste sur l’importance de ne pas utiliser 0.0.0.0/0 dans un tunnel site-à-site, sauf si vous souhaitez explicitement router tout le trafic par le tunnel.
9.4 Assigner l’interface wg0 et configurer le firewall
Pour bénéficier de règles firewall dédiées au tunnel, il est recommandé d’assigner l’interface WireGuard :
- Dans Interfaces > Assignments, on sélectionne wg0 dans le menu déroulant. On la nomme par exemple WG_SITE.
- On active l’interface dans Interfaces > [WG_SITE] (on coche « Enable », on ne configure pas d’IP supplémentaire).
- On redémarre WireGuard (désactivation puis réactivation dans VPN > WireGuard > Settings > General) pour que les changements prennent effet.
On configure ensuite les règles firewall :
- Firewall > Rules > WAN : on autorise le trafic UDP entrant sur le port 51820 à destination de l’adresse WAN, en provenance de l’IP du site distant (ou de any si l’IP distante est dynamique).
- Firewall > Rules > WG_SITE : on autorise le trafic depuis 172.16.50.0/24 vers 192.168.10.0/24 (et inversement selon les besoins).
- Firewall > Rules > LAN : on autorise le trafic du LAN vers 172.16.50.0/24.
9.5 Règle de normalisation (MSS clamping)
Un point souvent négligé : les tunnels VPN réduisent la MTU effective. Sans ajustement, certaines sessions TCP (HTTPS notamment) peuvent échouer silencieusement. La documentation officielle OPNsense recommande de créer une règle de normalisation :
- Dans Firewall > Settings > Normalization, il faudra ajouter une règle avec l’interface WG_SITE, protocole any, et définir le Max MSS à 1380 (pour IPv4, on soustraie 40 octets du MTU WireGuard de 1420).
9.6 Vérification du tunnel
# ================================================================ # Diagnostic WireGuard (console OPNsense / shell FreeBSD) # ================================================================ # Etat du tunnel et dernière poignée de main wg show # Vérifier que le port UDP 51820 est en écoute sockstat -4 -l | grep 51820 # Table de routage (vérifier les routes via wg0) netstat -rn | grep wg # Test de connectivité vers le peer ping -c3 10.99.0.2 # Test de connectivité vers le réseau distant ping -c3 172.16.50.1
Dans la sortie de wg show, on vérifie que le champ latest handshake affiche un horodatage récent et que les compteurs transfer montrent du trafic dans les deux sens. Si le handshake n’a pas lieu, on vérifie la règle firewall WAN (port UDP 51820) et les clés publiques échangées.
10. Tests et validation
Avant de déclarer l’infrastructure en production, une série de tests méthodiques permet de valider chaque composant de l’architecture.
10.1 Connectivite par zone
| Test | Depuis | Vers | Resultat attendu |
|---|---|---|---|
| Acces Internet | Poste LAN | 8.8.8.8 | Ping OK, résolution DNS OK |
| GUI OPNsense | Poste LAN | 192.168.10.1:443 | Interface web accessible |
| Acces Internet DMZ | Serveur DMZ | 8.8.8.8 | Ping OK (si autorisé par les règles) |
| Isolation DMZ | Serveur DMZ | 192.168.10.0/24 | Ping bloqué (règle deny DMZ->LAN) |
| Tunnel WireGuard | Poste LAN | 172.16.50.1 | Ping OK via le tunnel |
| GUI Proxmox | Poste LAN | 192.168.10.254:8006 | Interface web Proxmox accessible |
10.2 Test du failover WAN
Pour valider le basculement automatique :
- On lance un ping continu depuis un poste LAN vers une IP externe (ping -t 1.1.1.1 sous Windows, ping 1.1.1.1 sous Linux).
- On débranche le cable WAN principal (ou on bloque le monitor IP de la passerelle dans la configuration).
- On Observe donc le temps de basculement : quelques secondes à quelques dizaines de secondes selon les seuils configurés dans les paramètres de la passerelle (intervalle de sondage, nombre de tentatives avant alarme).
- On vérifie que le NAT sortant fonctionne via WAN_BACKUP (traceroute 8.8.8.8 pour confirmer le chemin emprunte).
- On rebranche le WAN principal et on vérifie le retour automatique (failback).
10.3 Commandes utiles cote Proxmox
# ================================================================ # Diagnostic réseau sur l'hote Proxmox # ================================================================ # Etat des interfaces et bridges ip -br link ip -br addr # Détail des bridges et VLAN bridge link bridge vlan show # Configuration de la VM OPNsense qm config 120 # Surveillance des logs réseau journalctl -f -u networking
11. Sécurité et durcissement
La mise en place de l’architecture n’est que la première étape. Le durcissement de l’ensemble est indispensable pour atteindre un niveau de sécurité satisfaisant.
Administration OPNsense : On restreindra l’accès à la GUI et au SSH d’OPNsense au seul réseau LAN (ou mieux : à un VLAN d’administration dédié). On désactivera la règle anti-lockout par défaut et on la remplacera par une règle explicite limitée aux postes d’administration identifiés.
DMZ : On appliquera le principe du moindre privilège. Chaque serveur DMZ ne doit avoir accès qu’aux ressources strictement nécessaires à son fonctionnement. La règle « deny DMZ vers LAN » doivra être explicite et positionnée en haut de la liste. Les exceptions doivront être documentées.
WireGuard : On maintiendra les Allowed IPs au strict nécessaire. On évitera 0.0.0.0/0 dans un tunnel site-à-site. On activera le keepalive uniquement si l’un des endpoints est derrière un NAT. Et on surveillera le tunnel via les logs et le monitoring de la passerelle WireGuard.
Multi-WAN : On choisissera des monitor IP fiables et distinctes pour chaque passerelle. On vérifiera régulierement que le NAT sortant couvre les deux interfaces WAN. Et on Testera le failover périodiquement.
Proxmox : On ne mélangera jamais un bridge WAN et un bridge interne. Le bridge WAN ne devra porter aucune adresse IP cote Proxmox. On Maintiendra un accès hors bande (IPMI, console physique, port de management dédié) pour administrer l’hyperviseur en cas de panne de la VM OPNsense.
Mises a jour : On planifiera les mises à jour d’OPNsense via System > Firmware > Updates et celles de Proxmox VE via apt update && apt dist-upgrade. On Prendra un snapshot de la VM avant chaque mise à jour majeure et on fera des backup de la VM via le système de de backup de Proxmox ou via autre solution comme VEEM ou Proxmox Backup Server.
12. Points de friction connus et arbitrages
VirtIO ou e1000 : performance contre prudence
FreeBSD (et donc OPNsense) supporte bien les pilotes VirtIO, qui offrent des performances réseau supérieures et un overhead CPU réduit par rapport à l’emulation e1000. La majorité des déploiements fonctionnent sans problème avec VirtIO. Toutefois, certains retours de la communaute (forums Proxmox et OPNsense) mentionnent des régressions ponctuelles avec VirtIO dans des configurations spécifiques (Open vSwitch sur le WAN, high throughput > 1 Gbps).
Failover actif mais plus d’accès Internet
Ce symptome est presque toujours lié au NAT sortant ou au DNS. Lors du basculement vers WAN_BACKUP, si aucune règle NAT n’existe pour cette interface, le trafic sort mais avec une adresse source non traduite, ce qui rend les réponses impossibles. De même, si le resolver DNS d’OPNsense n’est pas configuré pour suivre le changement de passerelle, les requêtes DNS échouent alors que le lien est fonctionnel.
WireGuard : tunnel établi mais pas de trafic
Si wg show affiche un handshake valide mais que le trafic ne passe pas, il faudra vérifier trois points : les Allowed IPs du peer (doivent inclure le réseau distant), les règles firewall sur l’interface WG_SITE, et la règle de normalisation (MSS clamping). L’absence de MSS clamping est une cause fréquente d’échec des connexions TCP à travers un tunnel.
Conclusion
Nous virtualisons OPNsense sous Proxmox VE car c’est une solution éprouvée, adaptée pour les homelabs.
Par contre il faudra prendre le temps de tester chaque composant de manière isolée (connectivité WAN, failover, isolation DMZ, tunnel WireGuard) avant de les combiner. Documenter l’architecture et les règles firewall. Deplus en cas de doute, la documentation officielle d’OPNsense et les forums de la communauté sont des ressources précieuses pour croiser les informations et résoudre les problèmes spécifiques à chaque environnement.
C’était Zérosécu, et comme je dis toujours, la cybersécurité est moins cher que gratuit.
J’apporte la plus grande attention et le plus grand soin à chaque article, mais si toutefois, si vous repérez une erreur, faites-moi signe !
Note de les droits d’auteur (images): Les visuels intégrés peuvent provenir de la documentation officiels d’OPNsense, de Proxmox ou Wireguard, et sont utilisés à des fins d’illustration et d’analyse conformément au droit de citation.
Sources et références: OPNsense – Documentation Multi-WAN / Failover | OPNsense – Gateway Groups / Multi WAN | OPNsense – WireGuard Site-to-Site Setup | OPNsense – WireGuard Road Warrior Setup | OPNsense – WireGuard Selective Routing | OPNsense – Security Zones (zones de confiance) | Proxmox VE – Network Configuration (bridges Linux, VLAN) | Pro Custodibus – OPNsense WireGuard Site to Site