Vous connaissez le principe des VLANs ?
Non ???

Philippe Etchebest saying oh merde — time to learn VLANs

Bon, il n’est jamais trop tard : petite remise à niveau ici.

Plan réseau

On segmente le LAN pour isoler les usages et limiter les dégâts. Cinq VLANs :

  • VLAN_Gueststotalement isolé : aucune comm’ avec les autres VLANs, Internet via VPN seulement. Utile quand on a des invités.
  • VLAN_Admin — conteneurs, VM, services de l’hyperviseur. Un cloud privé, en gros.
  • VLAN_Secure — même philosophie que les invités, avec un cran de méfiance en plus. Pas de mélange avec le reste.
  • VLAN_Personal — PC, consoles, téléphones.
  • VLAN_IOT — objets connectés. Par défaut, ni entre eux, ni Internet.

À copier, tags adaptables :

vlans.txt
VLAN_IOT       tag 35   10.66.35.0/24   prefix-id 3
VLAN_Personal  tag 40   10.66.40.0/24   prefix-id 2
VLAN_Secure    tag 45   10.66.45.0/24   (pas d'IPv6)
VLAN_Admin     tag 50   10.66.50.0/24   prefix-id 1
VLAN_Guests    tag 66   10.66.66.0/24   (pas d'IPv6)
LAN                     10.66.10.0/24   prefix-id 0
DNS / passerelle        10.66.10.1

VLANs

Interfaces → Devices → VLAN. Le parent est le NIC LAN (igb0 ou igc0). Puis Interfaces → Assignments : ajoutez chaque VLAN et nommez-le VLAN_Admin, VLAN_Personal, etc.

Capture : liste des VLANs
Liste des VLANs OPNsense: guests, admin, secure, personal et IoT

Interfaces

Pour chaque VLAN, Interfaces → [VLAN_XXXXX] :

  • Décochez block private networks et block bogon networks
  • IPv4 : Static IPv4 — 10.66.TAG.1/24
  • IPv6 : Track Interface — sauf VLAN_Secure et VLAN_Guests (laisser sur None)
Réglages IPv6 (track)

Dans Track IPv6 Interface : parent WAN, prefix ID unique (voir vlans.txt).

⚠️ Configurez aussi le prefix ID du DHCPv6 sur le LAN.

Dans System → Settings → General, décochez “Prefer to use IPv4 even if IPv6 is available”.

DHCP

Un réseau sans DHCP, c’est triste. Services → ISC DHCPv4 → [VLAN_XXXXX], sur chaque VLAN :

dhcp.txt
Enable DHCP server
Range:  10.66.TAG.2 – 10.66.TAG.254
DNS:    10.66.10.1

VLAN_Secure et VLAN_Guests auront un DNS différent plus tard. Pour l’instant, 10.66.10.1 suffit.

Firewall

On reste simple :

  1. Floating : tout bloquer en sortie par défaut (pas d’Internet, pas d’est-ouest, tant qu’on n’a pas de pass).
  2. WAN : trafic légitime in/out, personne sur Internet n’utilise notre DNS.
  3. LAN : tout autoriser (réseau d’admin).
  4. Par VLAN : exceptions explicites.

Alias pratique pour « est-ce privé ? » — on peut l’inverser pour matcher le reste d’Internet :

alias-rfc1918.txt
192.168.0.0/16
10.0.0.0/8
172.16.0.0/12

Firewall → Aliases, puis les règles.

Captures : WAN, LAN, alias, VLANs, floating

WAN — empêcher les IP externes d’utiliser notre DNS ; autoriser le trafic légitime. INTERNET_DHCP s’appelle probablement WAN_DHCP chez vous (ou INTERNET_DHCP si vous avez suivi le m720q).

Règles firewall WAN OPNsense: trafic établi autorisé, DNS externe bloqué

LAN — on autorise tout, entrant comme sortant.

Règles firewall LAN OPNsense autorisant tout le trafic

Alias

Alias OPNsense couvrant les plages privées RFC1918

VLAN_Personal — pas de VLAN_Secure ; accès aux autres ; Internet OK.

Règles firewall OPNsense pour le VLAN personnel

VLAN_Admin — tout autoriser, in et out.

Règles firewall OPNsense pour le VLAN admin

VLAN_Guests — aucun autre VLAN, pas d’Internet pour le moment.

Règles firewall OPNsense isolant le VLAN invités

VLAN_Secure — pas de VLAN_Guests, pas de VLAN_Personal, pas d’Internet pour le moment.

Règles firewall OPNsense isolant le VLAN secure

Floating — tout bloquer en sortie par défaut. C’est ce qui tient Internet et les autres machines jusqu’à un pass explicite.

Règles floating OPNsense bloquant le trafic sortant par défaut

DNS

Unbound en petit Pi-hole : pubs, malwares, une partie du contenu. Plus la protection anti-rebinding et le DNS over TLS.

Services → Unbound DNS.

Plages privées (onglet Advanced) — à coller tel quel :

unbound-private.txt
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

Blocklists que j’utilise (bon compromis couverture / faux positifs) :

unbound-blocklists.txt
AdGuard List
OSID - Domain Blocklist Ads
Steven Black List

Côté clients : Services → ISC DHCPv4 → VLAN_Personal (et les autres qui comptent), DNS 10.66.10.1. Le prochain bail suffit.

Captures : Unbound et DNS DHCP

GeneralOverrides servira plus tard pour les DNS locaux (cloud privé).

Réglages généraux Unbound DNS dans OPNsense

Advanced — coller les plages privées.

Réglages avancés Unbound DNS: adresses privées

Blocklists — nouvelle liste, les trois ci-dessus, le reste vide.

DNS over TLS — resolvers Mullvad ; on les réutilisera pour le VPN permanent.

Forwarders Unbound DNS over TLS vers Mullvad

Redémarrer le firewall, ou Unbound (bouton Restart en haut à droite).

ISC DHCPv4: serveur DNS pointant vers l’IP LAN d’OPNsense

Suite

VPN administratif, accès à distance et hardening du firewall