Code : MO-NET-009 | Version : 1.0 | Date : 21 septembre 2026 | Auteur : C. Legrand
PDF téléchargeable : MO-NET-009.pdf
Prérequis : MO-NET-003 (VLANs switches), MO-NET-004 (routage inter-VLAN), MO-PLT-025 (porte SSO)
La plateforme de services Docker (docker-srv, CT 200) vivait sur le réseau plat historique 10.0.0.0/16 : un poste étudiant de salle la joignait en L2 direct, sans traverser le pare-feu. Ce MO documente la sortie du plan d'administration vers un VLAN dédié 250 « PLT » (172.31.250.0/24) routé et filtré par OPNsense, le blocage effectif des réseaux étudiants (salles filaires 232, salles S112 en 230, VMs 113, Wi-Fi 240) et la restriction des accès de secours IP:port à ce VLAN.
Ce qui change au quotidien :
172.31.250.20 (au lieu de 10.0.112.20), joignable depuis le VLAN admin, le VPN collègues et le Wi-Fi profs (portail 443). Pendant la transition, https://10.0.112.20 (443) continue de répondre jusqu'à la bascule DNS finale. +-------------------- OPNsense -------------------+
| bge0 (natif plat) opt3 = vlan03 (tag 250) |
| 10.0.112.1/16 172.31.250.1/24 = PLT gw |
+--------+--------------------^--------------------+
| | tag 250
(chemin de trunks)| |
SwitchAruba01 p24 <--> | p28 <-> Aruba02 <-> Aruba03 <-> Aruba04
| p20
SW-COEUR p9
(ProCurve 1810G, |
10.0.112.213) p14 |
|
+----------- CT 200 docker-srv (Proxmox, eno1) -----------+
| eth0 : 10.0.112.20/16 (sans passerelle) |
| -> residuel : macvlan UniFi 10.0.112.228, RSSO 1813 |
| eth1 : 172.31.250.20/24, gw 172.31.250.1 |
| -> TOUT le plan web/admin (Traefik, ports de secours)|
+---------------------------------------------------------+
Principes :
10.0.112.20:443 en plus de 172.31.250.20:443 tant que le DNS n'a pas basculé et que les collègues n'ont pas le sous-réseau PLT dans leur configuration VPN.Pourquoi 172.31.250.0/24 et pas 10.0.250.0/24 ? Les hôtes du plat ont un masque /16 : ils croiraient un 10.0.250.x joignable en direct et ARPeraient dans le vide. Avec 172.31.250.0/24, tout passe par la passerelle OPNsense qui filtre 100 % des flux. Bonus : le blocage RFC1918 du VLAN 240 couvre déjà 172.16.0.0/12 — le Wi-Fi étudiants reste bloqué sans retouche.
Pourquoi pas le VLAN 240 ou 241 ? Le 240 est le segment à bloquer (y loger la plateforme la rendrait injoignable par OPNsense, l'intra-sous-réseau n'étant pas filtrable) ; le 241 (profs) est un segment d'accès clients avec DHCP et portail captif — pas un segment serveur.
VLAN 250 sur bge0 (vlan03), interface opt3 « PLT » 172.31.250.1/24, pas de DHCP (adressage statique).
Alias : Ports_Plateforme_Admin (22, 443, 8088, 9443, 3000, 3001, 8080, 8053, 9000) ; Reseaux_Etudiants (10.0.232.0/24, 10.0.113.0/24, 10.0.240.0/24).
| Type | Règle |
|---|---|
| Flottantes (in, quick) | 150 PASS tcp 10.10.30.0/24 → 172.31.250.20 ports Ports_Plateforme_Admin |
151 PASS 10.0.112.0/24 → 172.31.250.0/24 (VLAN admin) |
|
152 PASS tcp 10.0.241.0/24 → 172.31.250.20:443 (profs : portail seul) |
|
153 BLOCK+log Reseaux_Etudiants → 172.31.250.0/24 |
|
| Interface opt3 | 10 BLOCK+log 172.31.250.20 → Reseaux_Etudiants (pas d'initiation) |
20 PASS 172.31.250.20 → any (egress docker-srv) |
|
| Groupe wireguard | 250 PASS tcp 10.10.30.0/24 → 172.31.250.20 ports Ports_Plateforme_Admin — entre le PASS de cantonnement (200) et le BLOCK (300) |
Marquage tagged additif (VLAN 1 natif préservé partout) — procédure générique MO-NET-003 :
| Commutateur | IP | Ports tagués 250 (rôle) |
|---|---|---|
| SwitchAruba01 | 10.0.112.221 |
p24 (vers OPNsense), p28 (vers Aruba02) |
| SwitchAruba02 | 10.0.112.222 |
p26 (vers Aruba03), p27 (vers Aruba01) |
| SwitchAruba03 | 10.0.112.223 |
p26 (vers Aruba04), p27 (vers Aruba02) |
| SwitchAruba04 | 10.0.112.224 |
p20 (vers cœur), p27 (vers Aruba03) |
| SW-COEUR (ProCurve 1810G) | 10.0.112.213 |
p9 (vers Aruba04), p14 (vers Proxmox) |
Correction d'inventaire : le « cœur » est un HP ProCurve 1810G-24 (J9450A), pas un HP 1920G (erreur corrigée dans MO-NET-008 et NetBox le 21/09/2026). Proxmox
eno1↔ 1810G port 14 (établi par LLDP).
vmbr0 en VLAN-aware (bridge-vlan-aware yes) + ifreload -a sous watchdog de restauration automatique.bridge vlan add vid 250 dev eno1 (le bridge VLAN-aware n'autorise pas le VLAN sur l'uplink physique automatiquement au premier tag invité).net1 (tag 250, 172.31.250.20/24, gw 172.31.250.1) ajouté ; passerelle retirée de net0 ; redémarrage.flat-policy-routing.service dans le CT (connmark à l'ingrès + tables 100/101 + règles from des IP flat et bridges Docker) — persistance prouvée par reboot.| Service | Avant (0.0.0.0) | Après |
|---|---|---|
| Traefik 443/80 | toutes IP | 10.0.112.20 + 172.31.250.20 (double écoute transitoire) |
| Portainer 9443, Grafana 3000, Kuma 3001, Netbox 8080, Pi-hole admin 8053, Authentik 9000, Homer 8088 | toutes IP | 172.31.250.20 uniquement |
| Pi-hole DNS 53 | toutes IP | inchangé (DNS de production des salles) |
| RSSO 1813/udp | toutes IP | inchangé (accounting des bornes) |
UniFi (macvlan .228) |
— | inchangé |
Datacenter enable=1 avec policy_in ACCEPT (l'hôte et les autres CT inchangés), puis option firewall du CT 200 et règles sur net0 uniquement :
| # | Règle IN |
|---|---|
| 0–3 | ACCEPT bornes 10.0.230.0/24 → UniFi inform 8080, STUN 3478/udp, discovery 10001/udp, RSSO 1813/udp |
| 4–5 | ACCEPT DNS Pi-hole 53 tcp+udp (toute source — DNS de production des salles) |
| 6 | ACCEPT 10.0.112.0/24 (VLAN admin) |
| 7 | ACCEPT 10.10.30.0/24 (VPN collègues) |
| 8 | ACCEPT 10.0.241.0/24 (Wi-Fi profs) |
| 9–12 | DROP logué : salles 232, VMs 113, Wi-Fi étu 240, salles S112 (230 hors flux bornes) |
| 13 | DROP logué final (fail-closed) |
Pièges PVE :
pvesh create …/firewall/rulesinsère chaque règle en tête (créer dans l'ordre inverse) ; l'activation du pare-feu implique un filtre MAC de sortie par défaut qui casse les conteneurs macvlan (UniFi) → posermacfilter 0etipfilter 0dans les options firewall du CT.
Wildcard *.docker.bts.sio réémis par l'ADCS « BTS SIO Root CA » (gabarit BTSSIOWebServer1an, Request ID 13) avec SANs IP 10.0.112.20 et 172.31.250.20. Déployé dans Traefik (ancien couple conservé en .bak-20260921). Expire le 21/09/2027 — supervision d'expiration dans Kuma (MO-PLT-012).
172.16/12 (donc PLT) ; journal activé sur le bloc ; aucun client 10.0.240.x dans Pi-hole (indice de cloisonnement effectif). Test terrain depuis un client Wi-Fi étudiant : en finalisation.ping 172.31.250.1 depuis le CT et accès 172.31.250.20 depuis le VPN après marquage des commutateurs.pct set 200 --delete net1, remettre gw=10.0.112.1 sur net0, reboot ; désactiver flat-policy-routing.service ; snapshot vzdump du 21/09 disponible.--enable 0 sur les options firewall du CT 200 (règles conservées) ; datacenter enable 0..bak-20260921 si besoin.docker.bts.sio et *.docker.bts.sio → 172.31.250.20 (zone DC1), puis retrait de l'écoute Traefik flat — blocage alors structurel, y compris contre le spoofing d'IP.AllowedIPs incluant 172.31.250.0/24 — script opnsense_wg_peer.py).0.0.0.0:25, recouvert par le DROP final) ; extension du filtrage aux CT Vaultwarden (127) et Wazuh (103).