Installation d'OPNsense

Installation d'OPNsense

Mise en place d'une passerelle OPNsense 26.1 sur le lab interne ANSSI : installation depuis l'image ISO sur une VM VMware, partitionnement ZFS, configuration des trois interfaces em0/em1/em2 avec deux VLAN tagués (10 et 20), exécution de l'assistant Setup Wizard et validation côté Web.
Publié le
Statut
Terminé

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 :

Spécifications matérielles recommandées par OPNsense : CPU 1,5 GHz multi-cœur, 8 Go de RAM, 120 Go de SSD

Pour mon usage de lab, je reste largement au-dessus des minimums.

UFS vs ZFS

L’installateur propose deux modes :

CritèreUFSZFS
MaturitéTrès éprouvé sur FreeBSDIdem, mais plus récent
SnapshotsNon natifsNatifs et instantanés
Tolérance aux pannesPas de redondance nativeRAIDZ, mirror, copies
Empreinte mémoireFaiblePlus élevée (ARC)
Cas d’usagePetites installationsProduction, snapshots avant maj

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.

ÉquipementRôleInterfaceAdresse
OPNsense (VM)Pare-feu, routeurem0 (WAN)IP statique fournie par l’équipe réseau
OPNsense (VM)LAN — VLAN 10 taguéem1192.168.10.254/24
OPNsense (VM)OPT1 — VLAN 20 taguéem2192.168.20.254/24
Mon poste d’adminAdmin, navigateurDHCP 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 em1 pour 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.

Console OPNsense en mode live : IP em0 192.168.1.1/24, hashes SSH affichés, prompt « login: »

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.

Choix de la disposition clavier dans l’installeur FreeBSD avec sélection sur French (MacBook/MacBook Pro) (accent keys)

Cette étape conditionne uniquement la console : l’interface Web ne dépend pas de cette disposition.

Choix du mode d’installation

TEXT
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
Cliquez pour développer et voir plus

Menu principal de l’installeur OPNsense, sélection sur Install (ZFS)

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 :

TEXT
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
Cliquez pour développer et voir plus

Choix du type de vdev ZFS dans l’installeur, stripe sélectionné

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

Sélection du disque cible pour le pool ZFS : da0 « VMware, VMware Virtual S »

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

Progression de l’installation : copie du système sur le disque, Cloning current system 0 %

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 :

TEXT
Root Password      Change root password
Complete Install   Confirm and exit
Cliquez pour développer et voir plus

Final Configuration avec entrée Root Password sélectionnée

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?

TEXT
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]
Cliquez pour développer et voir plus

Création des VLAN : VLAN 10 sur em1, VLAN 20 sur em2

Explications ligne par ligne :

  • Les trois NIC em0/em1/em2 sont émulées en Intel PRO/1000 côté VMware. Les MAC commençant par 00:0c:29 confirment l’hyperviseur VMware.
  • VLAN 10 est porté par em1 : c’est l’interface du segment LAN.
  • VLAN 20 est porté par em2 : c’est l’interface du segment OPT1. 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 :

TEXT
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) y
Cliquez pour développer et voir plus

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

Premier écran du Setup Wizard : General Information avec Hostname NAT-00.DEPANMOI.LOCAL et Domain internal

Le Wizard propose les champs suivants :

TEXT
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é
Cliquez pour développer et voir plus

Explications ligne par ligne :

  • Hostname : OPNsense accepte un FQDN dans ce champ ; sur cette instance je saisis NAT-00.DEPANMOI.LOCAL parce 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: French et Timezone: 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 en Etc/UTC pour aligner sur le standard du lab).
  • DNS Servers vide + 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 DNSSEC et Harden DNSSEC data non 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

TEXT
SelectedType : Static
IP Address   : (IP statique fournie par l'équipe réseau)
Gateway      : (passerelle uplink fournie par l'équipe réseau)
MTU          : 1500
Cliquez pour développer et voir plus

L’uplink du lab est en IP statique, fournie par l’équipe réseau.

Configure LAN Interface

TEXT
IP Address   : 192.168.10.254
Subnet Mask  : 24
Cliquez pour développer et voir plus

Convention « 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.

Page Settings: General après application du wizard : hostname NAT-00, domaine DEPANMOI.LAN, timezone Etc/UTC, langue English, message « The changes have been applied successfully. »

Sur la capture finale, on voit la configuration appliquée :

  • Hostname : NAT-00
  • Domain : DEPANMOI.LAN
  • Time zone : Etc/UTC
  • Language : 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.

Interfaces: Assignments — VLAN10 lan em1, VLAN20 opt1 em2, WAN wan em0

Le mapping final est très simple :

InterfaceIdentifierDevice
[VLAN10]lanem1 (00:0c:29:aa:f2:51)
[VLAN20]opt1em2 (00:0c:29:aa:f2:5b)
[WAN]wanem0 (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

BASH
ping 192.168.10.254
Cliquez pour développer et voir plus

Réponse normale, RTT < 1 ms.

Accès au Web et version

BASH
curl -k -I https://192.168.10.254
Cliquez pour développer et voir plus

Ré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ômeCauseCorrection
L’installeur ne détecte aucun disqueContrôleur SCSI mal configuré côté VMwareRepasser le contrôleur en LSI Logic Parallel ou PVSCSI, redémarrer la VM
Mauvais ordre WAN/LAN après rebootMapping em0/em1/em2 détecté différemment selon le hardwareRefaire Assign interfaces depuis le menu console et corriger les rôles
Les VLAN n’arrivent pas jusqu’au switchPort du switch en access au lieu de trunkReconfigurer 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 rebootDHCP du LAN désactivé alors que le poste d’admin est en DHCPFixer une IP statique sur le poste d’admin, ou activer DHCP côté OPNsense
Console accessible mais Web nonService lighttpd mal redémarré après changementMenu console option 11) Restart web/php-fpm

Compétences du bloc 1 mobilisées

Compétence officielleMobilisation concrète
Installer et configurer des éléments d’infrastructureInstallation complète d’OPNsense 26.1 sur ZFS, configuration des interfaces, VLAN tagués et NAT.
Gérer le patrimoine informatique de l’organisationDocumentation du nouvel équipement (rôle, interfaces, VLAN, plan IP, version) dans le plan d’adressage du lab.
Mettre à disposition aux utilisateurs un service informatiqueMise 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 serviceValidation 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 sur em1 et em2.

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

Commencer la recherche

Saisissez des mots-clés pour rechercher des articles

↑↓
ESC
⌘K Raccourci