Contexte et besoins
Dans le cadre de mon alternance, je déploie une passerelle OPNsense 26.1 sur le lab interne pour servir de routeur / pare-feu d’un nouveau segment de tests. L’objectif est d’avoir un pare-feu open source moderne, capable de porter plusieurs VLAN taggés afin de cloisonner les segments du lab. C’est aussi l’occasion de prendre en main l’installateur FreeBSD utilisé par OPNsense et de manipuler le menu console qu’on retrouve de toute façon en cas de panne réseau.
Le besoin est triple : installer OPNsense proprement sur la VM cible, configurer les VLAN tagués sur les interfaces existantes, et finaliser la configuration de base via l’assistant Web (DNS, fuseau horaire, mot de passe root). La rédaction des règles de pare-feu fines reste un objectif d’intervention ultérieure.
Rappel théorique sur OPNsense et FreeBSD
OPNsense est une distribution open source dérivée de FreeBSD, spécialisée dans le rôle de pare-feu / routeur. Le projet est un fork de pfSense, démarré en 2015, avec une politique de releases bi-annuelles (versions YY.1 et YY.7). La version 26.1 que j’installe est sortie début 2026.
Composants principaux
- pf : le pare-feu de FreeBSD, packet filter stateful, qui exécute les règles configurées via l’interface Web.
- dhcpd / kea-dhcp : serveur DHCP (l’option Kea remplace progressivement le legacy
dhcpd). - Unbound : résolveur DNS récursif et validant. Sécurisé par défaut, utilise DNSSEC.
- OpenVPN / WireGuard : deux solutions VPN, livrées prêtes à configurer.
- Suricata : IDS/IPS optionnel, analysable depuis le tableau de bord.
Prérequis matériels
La documentation OPNsense affiche les pré-requis suivants pour bénéficier de toutes les fonctionnalités :

Pour mon usage de lab, je reste largement au-dessus des minimums.
UFS vs ZFS
L’installateur propose deux modes :
| Critère | UFS | ZFS |
|---|---|---|
| Maturité | Très éprouvé sur FreeBSD | Idem, mais plus récent |
| Snapshots | Non natifs | Natifs et instantanés |
| Tolérance aux pannes | Pas de redondance native | RAIDZ, mirror, copies |
| Empreinte mémoire | Faible | Plus élevée (ARC) |
| Cas d’usage | Petites installations | Production, snapshots avant maj |
Astuce
Sur OPNsense moderne, ZFS est l’option recommandée si on a au moins 4 Go de RAM. Les snapshots automatiques avant chaque mise à jour permettent un rollback en quelques minutes — c’est une assurance précieuse sur un pare-feu en production.
VLAN sur les interfaces FreeBSD
Un VLAN au sens 802.1Q est une étiquette ajoutée à l’en-tête Ethernet pour distinguer plusieurs réseaux logiques sur le même lien physique. Sur FreeBSD, on crée une interface logique vlan0, vlan1… au-dessus d’une interface physique parente (em0, em1, etc.). OPNsense fait ça via le menu console ou l’interface Web (Interfaces → Other Types → VLAN).
Topologie
OPNsense tourne dans une VM VMware dédiée, avec trois interfaces virtuelles em0/em1/em2 rattachées aux différents segments réseau du lab.
| Équipement | Rôle | Interface | Adresse |
|---|---|---|---|
| OPNsense (VM) | Pare-feu, routeur | em0 (WAN) | IP statique fournie par l’équipe réseau |
| OPNsense (VM) | LAN — VLAN 10 tagué | em1 | 192.168.10.254/24 |
| OPNsense (VM) | OPT1 — VLAN 20 tagué | em2 | 192.168.20.254/24 |
| Mon poste d’admin | Admin, navigateur | — | DHCP sur LAN |
Prérequis
- VM 4 vCPU, 4 Go RAM, 32 Go disque, 3 NIC virtuelles (e1000 / Intel PRO/1000).
- ISO OPNsense 26.1 amd64 téléversée dans la datastore VMware.
- Boot depuis CD/DVD activé sur la VM.
- Un poste d’admin sur le même bridge que
em1pour la suite Web. - Une plage IP et une passerelle WAN fournies par l’équipe réseau pour le segment uplink.
Préparation de l’installation
L’image bootable OPNsense est en réalité une image live : on démarre dessus, on obtient un système fonctionnel en mémoire, puis on lance l’installeur depuis cette session.

Sur l’écran live, OPNsense indique déjà une IP 192.168.1.1/24 sur em0 : c’est l’IP par défaut du mode live. Elle ne correspond pas à la cible finale, je la modifierai après installation.
Lancement de l’installeur
Je me connecte avec installer / opnsense (compte par défaut de l’image live). L’installeur FreeBSD démarre.
Disposition clavier
L’installeur me demande la disposition du clavier console. Je choisis French (MacBook/MacBook Pro) (accent keys) parce que la VM est pilotée depuis un MacBook côté admin — c’est la disposition qui correspond aux touches physiques que je tape.

Cette étape conditionne uniquement la console : l’interface Web ne dépend pas de cette disposition.
Choix du mode d’installation
Install (ZFS) ZFS GPT/UEFI Hybrid
Install (UFS) UFS GPT/UEFI Hybrid
Other Modes >> Extended Installation
Import Config Load Configuration
Password Reset Recover Installation
Force Reboot Reboot System
Force Halt Power Down System
Je choisis Install (ZFS) pour bénéficier des snapshots automatiques avant les mises à jour OPNsense.
Schéma ZFS
L’écran suivant propose le type de vdev :
stripe Stripe - No Redundancy
mirror Mirror - n-Way Mirroring
raid10 RAID 1+0 - n × 2-Way Mirrors
raidz1 RAID-Z1 - Single Redundant RAID
raidz2 RAID-Z2 - Double Redundant RAID
raidz3 RAID-Z3 - Triple Redundant RAID
Sur cette VM, je n’ai qu’un seul disque virtuel, donc stripe (pas de redondance possible avec un seul disque). En production, on partirait sur deux disques en mirror pour tolérer une panne.
Sélection du disque

Je sélectionne le disque da0, identifié comme VMware, VMware Virtual S. Le préfixe da est la nomenclature FreeBSD pour les disques SCSI — c’est cohérent avec un contrôleur SCSI virtuel VMware.
Progression

L’installeur clone le système live sur le disque. Compter 5 à 10 minutes selon le stockage.
Mot de passe root et finalisation
L’écran Final Configuration propose :
Root Password Change root password
Complete Install Confirm and exit
Explications ligne par ligne :
Root Password / Change root password: ce mot de passe sert à la console et à l’interface Web. Une politique courte (8 caractères, alphanumérique) suffit pour la première connexion, mais je le change pour une passphrase plus longue dès la fin de l’installation.Complete Install / Confirm and exit: déclenche le reboot. Pendant cette phase, je retire l’ISO du lecteur virtuel pour que la VM démarre directement sur le disque.
Configuration des interfaces et VLAN en console
Au reboot, OPNsense affiche son menu console habituel. Avant d’aller sur l’interface Web, je configure les VLAN parce que ça impacte le mapping des interfaces.
Création des VLAN
Menu console → 1) Assign interfaces → réponse y à Should VLANs be set up now?
VLAN-capable interfaces:
em0 00:0c:29:aa:f2:47 Intel(R) Legacy PRO/1000 MT 82545EM (Copper)
em1 00:0c:29:aa:f2:51 Intel(R) Legacy PRO/1000 MT 82545EM (Copper)
em2 00:0c:29:aa:f2:5b Intel(R) Legacy PRO/1000 MT 82545EM (Copper)
Enter the parent interface name for the new VLAN (or nothing if finished): em1
Enter the VLAN tag (1-4094): 10
Enter the parent interface name for the new VLAN (or nothing if finished): em2
Enter the VLAN tag (1-4094): 20
Enter the parent interface name for the new VLAN (or nothing if finished): [Entrée]
Explications ligne par ligne :
- Les trois NIC
em0/em1/em2sont émulées enIntel PRO/1000côté VMware. Les MAC commençant par00:0c:29confirment l’hyperviseur VMware. VLAN 10est porté par em1 : c’est l’interface du segmentLAN.VLAN 20est porté par em2 : c’est l’interface du segmentOPT1. Chaque VLAN reste donc sur une interface physique distincte ; les deux NIC du côté hyperviseur sont configurées en trunk avec uniquement leur VLAN respectif autorisé.
Assignation des interfaces logiques
L’écran suivant me demande quelle interface physique ou logique attribuer à chaque rôle. J’utilise les VLAN créés au-dessus :
Enter the WAN interface name (or 'a' for auto-detection): em0
Enter the LAN interface name: em1_vlan10
Enter the Optional 1 interface name: em2_vlan20
Enter the Optional 2 interface name: [Entrée]
Do you want to proceed? (y/n) yNote
Les VLAN apparaissent sous la forme em1_vlan10 et em2_vlan20 : nomenclature FreeBSD <parent>_vlan<tag>. Ce sont ces noms-là qu’on retrouvera dans l’interface Web.
Configuration via l’assistant Web
Je récupère l’IP de LAN (par défaut 192.168.1.1, à ajuster) et j’ouvre l’interface Web dans un navigateur. Je me logge avec root et le mot de passe défini à l’installation.
OPNsense propose au premier login d’exécuter le Setup Wizard (System → Configuration → Wizard).
General Information

Le Wizard propose les champs suivants :
Hostname : NAT-00.DEPANMOI.LOCAL
Domain : internal
Language : French
Timezone : Europe/Paris
DNS Servers : (vide, on s'appuie sur Unbound local)
Override DNS : coché
Enable Resolver : coché (Unbound)
Enable DNSSEC : décoché
Harden DNSSEC data : décochéExplications ligne par ligne :
Hostname: OPNsense accepte un FQDN dans ce champ ; sur cette instance je saisisNAT-00.DEPANMOI.LOCALparce que c’est le nom déjà retenu côté DNS interne pour ce point de NAT.Domain: internal: domaine de recherche par défaut côté résolution DNS pour les hôtes courts.Language: FrenchetTimezone: Europe/Paris: préférences au niveau du wizard. À ce stade je les laisse en français pour faciliter la prise en main de l’admin Web ; je les ajusterai plus tard côté System → Settings → General (cf. capture finale, où la langue applicative est repassée en English et le timezone enEtc/UTCpour aligner sur le standard du lab).DNS Serversvide +Enable Resolver: on n’écrit pas de DNS forwarder ici, c’est Unbound (le résolveur intégré) qui prend la main. Pratique sur une appliance qui doit servir de DNS interne.Override DNS: coché: autorise les DNS distribués par DHCP côté WAN à enrichir la config si besoin. On laisse coché par défaut.Enable DNSSECetHarden DNSSEC datanon cochés : le DNSSEC est désactivé pour l’instant — il sera réactivé une fois que tous les FAI/uplinks auront été testés en validation.
Time Server
L’écran suivant configure NTP. Je laisse le pool par défaut (0.opnsense.pool.ntp.org, 1.opnsense.pool.ntp.org, etc.) qui sont des miroirs du NTP Pool Project dédiés à OPNsense. Le timezone est repris du wizard précédent.
Configure WAN Interface
SelectedType : Static
IP Address : (IP statique fournie par l'équipe réseau)
Gateway : (passerelle uplink fournie par l'équipe réseau)
MTU : 1500L’uplink du lab est en IP statique, fournie par l’équipe réseau.
Configure LAN Interface
IP Address : 192.168.10.254
Subnet Mask : 24Convention « passerelle en .254 » utilisée sur tout le lab.
Set Root Password
Définition de la passphrase finale (16+ caractères) qui remplace le mot de passe défini à l’install.
Application
Je clique sur Reload à la fin de l’assistant. OPNsense applique la configuration. L’IP du LAN passe de 192.168.1.1 à 192.168.10.254 : il faut se reconnecter sur la nouvelle IP depuis un poste sur ce nouveau réseau.

Sur la capture finale, on voit la configuration appliquée :
Hostname: NAT-00Domain: DEPANMOI.LANTime zone: Etc/UTCLanguage: English
Le message « The changes have been applied successfully » confirme la prise en compte. Le bandeau supérieur affiche root@NAT-00.DEPANMOI.LAN.
Vérification du mapping d’interfaces
Une fois sur le tableau de bord, je passe dans Interfaces → Assignments.

Le mapping final est très simple :
| Interface | Identifier | Device |
|---|---|---|
[VLAN10] | lan | em1 (00:0c:29:aa:f2:51) |
[VLAN20] | opt1 | em2 (00:0c:29:aa:f2:5b) |
[WAN] | wan | em0 (00:0c:29:aa:f2:47) |
Chaque interface logique est portée par une interface physique avec un tag VLAN — pas de trunk multi-VLAN sur une même NIC. Le pare-feu pf est mis à jour automatiquement : par défaut, aucun trafic inter-interface n’est autorisé tant que je n’ai pas créé de règle.
Vérifications
Connectivité depuis un poste du LAN
ping 192.168.10.254Réponse normale, RTT < 1 ms.
Accès au Web et version
curl -k -I https://192.168.10.254Réponse HTTP/1.1 200 OK. Je vais dans Lobby → Dashboard pour vérifier la version : OPNsense 26.1 (amd64).
Sortie Internet
Depuis le poste du LAN, curl https://www.opnsense.org renvoie le HTML attendu. La passerelle WAN d’OPNsense fait NAT correctement vers l’uplink fourni par l’équipe réseau.
Problèmes rencontrés et solutions
| Symptôme | Cause | Correction |
|---|---|---|
| L’installeur ne détecte aucun disque | Contrôleur SCSI mal configuré côté VMware | Repasser le contrôleur en LSI Logic Parallel ou PVSCSI, redémarrer la VM |
| Mauvais ordre WAN/LAN après reboot | Mapping em0/em1/em2 détecté différemment selon le hardware | Refaire Assign interfaces depuis le menu console et corriger les rôles |
| Les VLAN n’arrivent pas jusqu’au switch | Port du switch en access au lieu de trunk | Reconfigurer le port côté switch en mode trunk avec les VLAN 10 et 20 autorisés |
| L’interface Web n’est pas joignable après reboot | DHCP du LAN désactivé alors que le poste d’admin est en DHCP | Fixer une IP statique sur le poste d’admin, ou activer DHCP côté OPNsense |
| Console accessible mais Web non | Service lighttpd mal redémarré après changement | Menu console option 11) Restart web/php-fpm |
Compétences du bloc 1 mobilisées
| Compétence officielle | Mobilisation concrète |
|---|---|
| Installer et configurer des éléments d’infrastructure | Installation complète d’OPNsense 26.1 sur ZFS, configuration des interfaces, VLAN tagués et NAT. |
| Gérer le patrimoine informatique de l’organisation | Documentation du nouvel équipement (rôle, interfaces, VLAN, plan IP, version) dans le plan d’adressage du lab. |
| Mettre à disposition aux utilisateurs un service informatique | Mise en service de la passerelle WAN et de deux segments VLAN cloisonnés pour les services du lab. |
| Réaliser les tests d’intégration et d’acceptation d’un service | Validation séquentielle (ping passerelle, accès Web, sortie Internet, version OPNsense, mapping d’interfaces). |
Bilan
À l’issue de l’intervention, OPNsense 26.1 (NAT-00.DEPANMOI.LAN) est en service comme passerelle du lab : WAN sur l’uplink fourni par l’équipe réseau via em0, segment LAN en VLAN 10 sur em1 (192.168.10.254/24), et segment OPT1 en VLAN 20 sur em2 (192.168.20.254/24). Le tableau de bord est cohérent, les règles par défaut bloquent le trafic inter-interface, et j’ai un point de configuration central pour la suite.
Trois enseignements :
- l’installeur FreeBSD est austère mais très carré : une fois qu’on a compris la logique UFS/ZFS et l’assignation par interface, on enchaîne très vite ;
- le menu console est un filet de sécurité à connaître par cœur : si l’interface Web tombe, c’est par là qu’on récupère l’accès (réinitialisation du mot de passe, repli sur DHCP, etc.) ;
- relire la matrice interface ↔ VLAN avant de cliquer sur Save : ici le piège classique aurait été de placer les deux VLAN sur le même parent
em1, alors que l’architecture du lab les répartit surem1etem2.
Pour la suite, je veux rédiger des règles de pare-feu explicites entre les VLAN, activer Suricata sur le WAN, et mettre en place WireGuard pour le télétravail des admins.
Sources
- OPNsense Documentation — Installation guide , OPNsense Project.
- OPNsense Documentation — Setup Wizard , OPNsense Project.
- FreeBSD Handbook — VLAN configuration , FreeBSD Project.
- ANSSI — Recommandations relatives à l’administration sécurisée des systèmes d’information , ANSSI.