Seral - Part. 1c - Configuration basique de OPNsense
Vous connaissez le principe des VLANs ?
Non ???

Bon, il n’est jamais trop tard pour s’y mettre: petite remise à niveau ici.
L’idée est simple: on va segmenter notre réseau local pour mieux isoler les usages et limiter les dégâts en cas de problème.
Dans mon cas, je découpe le réseau en cinq VLANs:
- VLAN_Guests –
10.66.66.0/24
Réseau invité totalement isolé: aucune communication avec les autres VLANs, accès à Internet via VPN seulement. Utile quand on a des invités. - VLAN_Admin –
10.66.50.0/24
Conteneurs, VM, services de l’hyperviseur… typiquement un cloud privé. - VLAN_Secure –
10.66.45.0/24
Même philosophie que les invités, mais avec un niveau de méfiance supplémentaire. On évite par principe de mélanger des équipements potentiellement risqués avec le reste. - VLAN_Personal –
10.66.40.0/24
Tous les équipements personnels: PC, consoles, téléphones, etc. - VLAN_IOT –
10.66.35.0/24
Les objets connectés. Par défaut, ils ne communiquent ni entre eux ni avec Internet, sauf exceptions bien définies (et justifiées).
Création des VLANs
Passons à la pratique.
Rendez-vous dans Interfaces → Devices → VLAN, puis créez chacun des VLANs avec les tags et noms de votre choix (vous pouvez suivre les miens, ou pas).
Le parent doit être une interface du LAN:
- igb0 pour un m720q
- igc0 pour l’autre configuration matérielle

Une fois les VLANs créés, allez dans Interfaces → Assignments.
Dans la section Assign a new interface, sélectionnez chaque VLAN et assignez-le à une interface en les nommant clairement:VLAN_Admin, VLAN_Personal, VLAN_IOT, etc.
Configuration des interfaces VLAN
Pour chaque nouvelle interface, rendez-vous dans Interfaces → [VLAN_XXXXX] et appliquez les paramètres suivants:
- Décochez block private networks et block bogon networks
- IPv4 Configuration: Static IPv4
- IPv6 Configuration: Track Interface
(sauf pour VLAN_Secure et VLAN_Guests, qui doivent rester sur None) - Static IPv4 configuration:
10.66.TAG.1 /24
(remplacezTAGpar celui du VLAN: 50, 45, 40, etc.)
Paramètres IPv6
Dans Track IPv6 Interface:
- Parent interface: WAN
- Assign prefix ID: à définir
Pour éviter toute ambiguïté, voici les prefix ID que j’utilise (ils doivent être uniques par VLAN):
- LAN: 0
- VLAN_Admin: 1
- VLAN_Personal: 2
- VLAN_IOT: 3
⚠️ N’oubliez pas de configurer également le prefix ID du DHCPv6 sur le LAN.
Et vérifiez dans System → Settings → General que l’option
“Prefer to use IPv4 even if IPv6 is available” est bien décochée.
Configuration du DHCP
Un réseau sans DHCP, c’est triste. Allons corriger ça.
Rendez-vous dans Services → ISC DHCPv4 → [VLAN_XXXXX].
Pour chaque VLAN:
- Activez le serveur DHCP
- Range:
- From:
10.66.TAG.2 - To:
10.66.TAG.254
- From:
- DNS server:
10.66.10.1
(on y reviendra plus tard, sauf pour VLAN_Secure et VLAN_Guests, qui seront traités dans un autre article)
Ouf 😮💨
Les VLANs sont créés et configurés.
Il ne reste plus qu’une chose… les règles de firewall.
Règles basiques
On va faire simple et efficace pour les règles de firewall. Les captures d’écran parlent d’elles-mêmes, et la création des règles n’a rien de sorcier.
Règles WAN
Côté WAN, l’objectif est double:
- empêcher les IP externes d’utiliser notre DNS,
- s’assurer que le trafic légitime entrant et sortant est bien autorisé.
À noter: l’interface INTERNET_DHCP s’appelle probablement WAN_DHCP chez vous (ou INTERNET_DHCP si vous êtes sur la configuration m720q).

Règles LAN
Pour le LAN, on ne se complique pas la vie:
on autorise tous les paquets, entrants comme sortants.

Création d’un alias pour les réseaux privés
Afin de faciliter le filtrage des réseaux locaux, on va créer un Alias.
(Ce n’est pas obligatoire, mais c’est pratique, on peut inverser le sens d’un match dans une règle pour cibler tout ce qui n’est pas local aussi).
Rendez-vous dans Firewall → Aliases et créez l’alias suivant:

Adresses à inclure:
192.168.0.0/16 10.0.0.0/8 172.16.0.0/12
Retour aux règles de firewall.
VLAN_Personal
- Interdiction de communiquer avec VLAN_Secure
- Accès autorisé aux autres VLANs
- Accès autorisé à Internet

VLAN_Admin
Ici, pas de restriction particulière:
on autorise tout le trafic, entrant et sortant.

VLAN_Guests
- Interdiction totale de communiquer avec les autres VLANs
- Pas d’accès Internet pour le moment

VLAN_Secure
- Interdiction de communiquer avec VLAN_Guests et VLAN_Personal
- Pas d’accès Internet pour le moment

Règles Floating
Enfin, les règles Floating, appliquées à toutes les interfaces.
Ici, on bloque tout le trafic sortant par défaut.
C’est ce mécanisme qui permet de:
- bloquer l’accès à Internet,
- bloquer l’accès à d’autres équipements, tant qu’aucune règle explicite ne l’autorise.

Cas particulier: INTERNET
Si vous avez un VLAN 0.10 lié à votre WAN (comme c’est le cas pour Swisscom), il vous faudra alors configurer INTERNET comme le WAN !
Cas particulier: VLAN_IOT
Le VLAN_IOT reste volontairement sans règles.
Grâce aux règles Floating, tout est bloqué par défaut: autres VLANs et Internet compris.
Pour autoriser une exception, il suffit d’ajouter une règle pass ciblée, avec comme IP source celle de l’équipement concerné.
Propre, lisible, et surtout facile à maintenir.
Configuration du DNS
Grâce à notre firewall, on peut obtenir l’équivalent d’un Pi-hole, pour ceux à qui ça parle.
Autrement dit, on peut bloquer directement au niveau DNS:
- les domaines utilisés par la publicité,
- les hôtes connus pour distribuer des malwares,
- certains contenus (adultes, tracking, etc.).
En bonus, on peut aussi se protéger contre le DNS rebinding (des noms de domaine qui pointent vers des IP privées), et forcer l’utilisation du DNS over TLS afin de renforcer la confidentialité des requêtes.
Pour tout ça, nous allons utiliser Unbound DNS.
Grâce à notre firewall, on peut avoir l’équivalent d’un “piHole” pour ceux qui connaissent. C’est-à-dire qu’on peut bloquer directement les dns des advertisers (donc pas de pub), idem pour des hosts de malwares connus, des sites pour adultes… En plus de ça, il est possible de se protéger contre du dns rebinding (DNS qui redirige vers une IP privée), on peut forcer les requêtes DNS over TLS pour maximiser notre vie privée.
Configuration générale
Rendez-vous dans Services → Unbound DNS → General et configurez les options comme ci-dessous:

Dans le menu Overrides, vous pourrez ajouter vos DNS locaux.
On y reviendra plus tard, notamment lors de la mise en place de notre cloud privé.
Paramètres avancés
Allez ensuite dans l’onglet Advanced et appliquez la configuration suivante:

Liste des plages IP à renseigner:
0.0.0.0/8 10.0.0.0/8 100.64.0.0/10 169.254.0.0/16 172.16.0.0/12 192.0.2.0/24 192.168.0.0/16 198.18.0.0/15 198.51.100.0/24 203.0.113.0/24 233.252.0.0/24: :1/128 2001:db8::/32 fc00::/8 fd00::/8 fe80::/10
Listes de blocage
Passons maintenant aux blocklists.
Rendez-vous dans l’onglet Blocklists, créez une nouvelle liste et sélectionnez celles qui vous intéressent.
Laissez les autres champs vides.
De mon côté, je me limite à ces trois listes:
AdGuard List, OSID - Domain Blocklist Ads, Steven Black List
C’est un bon compromis entre efficacité et faux positifs.
DNS over TLS
Dernière étape: activer le DNS over TLS.
Par souci de respect de la vie privée, j’utilise les DNS de Mullvad. Nous les réutiliserons d’ailleurs plus tard pour le réseau sécurisé (VPN permanent).
Vous trouverez ci-dessous l’adresse IP et le port à utiliser:

Application de la configuration
La configuration est maintenant terminée.
Vous pouvez soit:
- redémarrer complètement le firewall,
- soit simplement redémarrer le service Unbound (bouton Restart en haut à droite).
Pour que vos équipements utilisent correctement ce DNS, rendez-vous dans Services → ISC DHCPv4, puis sélectionnez les VLANs concernés (par exemple VLAN_Personal).
Dans le champ DNS servers, renseignez l’IP locale du firewall sur le LAN.
Si vous utilisez la même configuration que moi, il s’agit de 10.66.10.1.

N’oubliez pas de sauvegarder.
Les équipements prendront en compte ces paramètres lors de leur prochaine demande de bail DHCP.
Prochain article
👉 VPN administratif, accès à distance et hardening du firewall 🔐
opnsense homelab souverain securite vlan firewall dns unbound dns-over-tls dhcp network-segmentation
1218 Mots
2025-01-24 16:00