P2 — VLAN 30 PROD, vmbr0 VLAN-aware et pare-feu
Fenêtre de maintenance pour passer le réseau « as code » : VLAN 30 côté
Omada, vmbr0 VLAN-aware, SDN et pare-feu PVE appliqués par OpenTofu.
Durée estimée : 45–60 min. Impact : coupure réseau possible de quelques
secondes lors du rechargement de vmbr0 ; aucune VM redémarrée.
État — replanifié, non démarré (2026-07)
Rien n'est encore appliqué. Réseau actuel : deux VLAN seulement, 10 (HomeLab, 10.9.73.0/24) et 20 (perso/IoT, 192.168.20.0/24) — cf. Réseau. Cocher les étapes ci-dessous au fur et à mesure de la fenêtre de maintenance.
Pré-requis (avant la fenêtre)
- [ ] Backup vzdump de la nuit précédente OK (Datacenter → Backup → journal).
- [ ] Écran + clavier branchés sur le Proxmox (ou à portée de main) : si la
manipulation de
vmbr0se passe mal, c'est le seul moyen de reprendre la main. - [ ] Être connecté en local (pas via WireGuard) : l'activation du pare-feu
peut couper l'accès distant si le sous-réseau WireGuard n'est pas dans
l'ipset
mgmt(cf. étape 6). - [ ]
git pulldu dépôt infra à jour sur dev-laravel. - [ ] Sauvegarder la config réseau de l'hôte : UI PVE →
pve→ Shell, collercp /etc/network/interfaces /etc/network/interfaces.bakpuis Entrée.
Étape 1 — Omada : créer le VLAN 30 « PROD »
Dans le contrôleur Omada (VM 103) :
- Paramètres (roue dentée) → Réseaux filaires → LAN → Créer un nouveau LAN.
- Renseigner :
- Nom :
PROD - Objet : Interface
- VLAN :
30 - IP de la passerelle/sous-réseau :
10.9.30.1/24 - Serveur DHCP : décoché (les VMs de prod auront des IP statiques posées par cloud-init, comme sur le VLAN 10).
- Enregistrer.
Étape 2 — Omada : passer le port du Proxmox en trunk
Le port où est branché le Proxmox doit laisser passer le VLAN 10 non tagué (natif — l'hôte PVE et toutes les machines actuelles) et le VLAN 30 tagué (les futures VMs de prod).
- Périphériques → sélectionner l'équipement où le Proxmox est branché (ER605 ou switch) → onglet Ports.
- Identifier le port du Proxmox (par la MAC/le nom, ou en débranchant 2 s).
- Éditer le port :
- Sur un switch Omada : appliquer un profil de port dont le réseau
natif est le LAN par défaut (VLAN 10) et où
PRODest tagué (créer le profil dans Réseaux filaires → Profils si besoin). - Sur l'ER605 directement : éditer le port LAN et cocher les réseaux :
LAN par défaut en Untag,
PRODen Tag. - Enregistrer. ✅ Vérifier que l'UI PVE (https://10.9.73.20:8006) répond toujours — le VLAN 10 natif ne doit pas avoir bougé.
Étape 3 — Omada : isoler PROD de MGMT
But : une VM de prod compromise ne doit pas pouvoir attaquer le NAS, le PVE ou le PC.
- Paramètres → Sécurité réseau → ACL → onglet ACL de passerelle → Créer.
- Règle : Deny, protocole Tous, direction LAN→LAN,
source = réseau
PROD, destination = réseauLAN(VLAN 10). - Si la version du contrôleur propose une option d'états de connexion (Match State/Stateful), l'activer pour que les réponses aux connexions initiées depuis MGMT vers PROD restent permises. Sinon, la règle bloque aussi ces réponses — on validera le comportement aux tests de l'étape 7 et on ajustera (règle Permit établi au-dessus, ou ACL de switch).
Étape 4 — PVE : passer vmbr0 en VLAN-aware (le moment sensible)
Dans l'UI PVE, connecté depuis le PC (10.9.73.50) :
pve→ Système → Réseau → double-clic survmbr0.- Cocher VLAN aware.
- Recommandé au passage : sortir l'hôte du DHCP — dans la même fenêtre,
renseigner IPv4/CIDR =
10.9.73.20/24et Passerelle =10.9.73.1(l'hôte garde la même IP, mais ne dépendra plus du bail DHCP de l'ER605). Si tu fais ça, pense à supprimer la réservation DHCP côté Omada après coup. - OK, puis bouton Apply Configuration (Appliquer la configuration).
- L'UI se fige quelques secondes le temps du rechargement réseau, puis
revient. Si elle ne revient pas après 2 min : écran + clavier sur l'hôte,
et restaurer
/etc/network/interfacesdepuis/etc/network/interfaces.bak(cp /etc/network/interfaces.bak /etc/network/interfaces && ifreload -a).
✅ Vérifier : UI OK, une app Coolify répond, Jellyfin répond, SSH dev-laravel OK.
Étape 5 — PVE : cocher « Firewall » sur la carte réseau du CT 106
Seule machine où le flag manque (sans lui, les règles par machine sont sans effet) :
- CT
106 (jellyfin)→ Réseau → double-clic surnet0. - Cocher Pare-feu → OK (appliqué à chaud, pas de redémarrage).
Étape 6 — OpenTofu : appliquer SDN + objets pare-feu (encore inactifs)
Sur dev-laravel, depuis ~/projets/infra :
make plan # relire : zone SDN lan, vnet prod, ipset, groupes, règles
make apply
Le pare-feu datacenter reste désactivé (firewall_enabled = false) :
tout est en place mais inerte. Vérifier dans l'UI : Datacenter → SDN (zone
lan, vnet prod), Datacenter → Pare-feu (ipset mgmt, groupes internal,
webpublic, jellyfin).
Avant la bascule : vérifier le sous-réseau des clients WireGuard de
l'ER605 (Paramètres → VPN → WireGuard). S'il est différent de
10.9.73.0/24, l'ajouter dans l'ipset mgmt
(opentofu/firewall.tf, bloc cidr) puis make apply — sinon plus d'UI
PVE ni de SSH à distance une fois le pare-feu actif.
Étape 7 — La bascule du pare-feu
Dans opentofu/terraform.tfvars, ajouter :
firewall_enabled = true
Puis make plan (relire : uniquement des changements enabled) et
make apply.
✅ Immédiatement après, vérifier dans l'ordre :
- UI PVE https://10.9.73.20:8006 depuis le PC → OK
- SSH vers dev-laravel, Forgejo (http://10.9.73.81:3000), Woodpecker (http://10.9.73.82:8000) → OK
- Une app servie par Coolify (HTTP/HTTPS) → OK
- Jellyfin depuis un appareil du VLAN 20 (TV/téléphone en WiFi) → OK
En cas de blocage général : Datacenter → Pare-feu → Options → enable = No
(ou depuis la console de l'hôte : pve-firewall stop), puis on corrige à
tête reposée et on rebascule.
Étape 8 — Tests d'isolation (critères de fin de P2)
Créer une VM de test sur le VLAN 30 (clone du template 9000, carte réseau
sur le vnet prod, IP 10.9.30.10/24, passerelle 10.9.30.1), puis
depuis sa console :
| Test | Attendu |
|---|---|
ping 10.9.30.1 (passerelle) |
✅ répond |
ping 1.1.1.1 puis curl -I https://debian.org |
✅ Internet OK |
ping 10.9.73.20 / ping 10.9.73.10 |
❌ bloqué (ACL Omada) |
curl -k https://10.9.73.20:8006 |
❌ timeout |
ssh 10.9.73.30 |
❌ timeout |
Et depuis le PC (VLAN 10) : ping 10.9.30.10 → selon l'ACL (si stateless,
voir étape 3). Enfin make plan → aucun changement (idempotence).
Supprimer la VM de test une fois validé.