Réseau
Câblage physique
Livebox (Internet)
│
ER605 (routeur Omada — passerelle des VLAN ; WireGuard, clients 10.71.74.0/24)
├─ port1 WAN ← Livebox
├─ port2 GL.iNet (WAN dédié du PC bureau)
├─ port3 PC bureau 10.9.73.50
├─ port4 AXE75 (point d'accès WiFi — VLAN 20 perso/IoT)
└─ port5 ══ trunk (VLAN 10 natif + VLAN 30 tagué) ══╗
║
switch TL-SG605E (10.9.73.2, Easy Smart) ── port5 (uplink ER605)
├─ port2 ══ trunk ══ Proxmox « pve » 10.9.73.20
└─ port3 NAS Synology 10.9.73.10
Le contrôleur Omada (logiciel) tourne dans la VM 103 (RouteurController)
et pilote l'ER605 et le point d'accès AXE75. Le switch TL-SG605E est
autonome (Easy Smart, configuré via sa propre UI sur 10.9.73.2) : c'est
lui qui porte le trunk VLAN 10 natif + VLAN 30 tagué jusqu'à l'hôte Proxmox
(ports 5 et 2 en membres tagués du VLAN 30 ; PVID 1 pour le natif).
VLAN
| VLAN | Sous-réseau | Passerelle | Usage |
|---|---|---|---|
| 10 | 10.9.73.0/24 |
.1 |
HomeLab : infra + management |
| 20 | 192.168.20.0/24 |
.1 |
Appareils perso & IoT (via AXE75) |
| 30 | 10.9.30.0/24 |
.1 |
PROD : VMs d'applications exposées (SDN vnet prod, tag 30) |
Hôtes du VLAN 10 : pve .20, NAS .10, PC bureau .50, dev-laravel .30,
et les invités du Proxmox — jellyfin .80, forgejo .81, woodpecker .82,
VM-Coolify .90. Les invités passent par vmbr0 (VLAN-aware) sur l'hôte.
NaC — P2 (réalisé)
P2 réalisé le 2026-07-17
Le réseau « as code » est en place et validé (tests d'isolation OK) :
VLAN 30 créé côté Omada, switch et vmbr0 en trunk VLAN-aware, SDN et
pare-feu appliqués par OpenTofu, firewall_enabled = true. Déroulé suivi :
runbook P2.
- VLAN 30 « PROD » (
10.9.30.0/24) : VMs d'applications exposées. - Chemin trunk jusqu'au Proxmox : natif VLAN 10 + VLAN 30 tagué (ER605 p5 → switch p5/p2, cf. câblage ci-dessus).
vmbr0VLAN-aware (bascule manuelle, IP hôte figée en statique) + SDN OpenTofu : zonelan, vnetprod(tag 30). Pas de vnet mgmt : VLAN 10 = natif (cf. ADR-003).- Pare-feu PVE actif : UI 8006 et SSH accessibles uniquement depuis
+mgmt(VLAN 10 + clients WireGuard) ; PROD sans accès vers MGMT (ACL Omada stateful).
Nouvelles VMs de prod : bridge prod, IP statique 10.9.30.x par cloud-init.
Pare-feu (as code, opentofu/firewall.tf)
| Objet | Contenu |
|---|---|
ipset mgmt |
10.9.73.0/24 (VLAN 10) + 10.71.74.0/24 (clients WireGuard) |
| Règles hôte (cluster) | 8006 + SSH depuis +mgmt uniquement ; ICMP ; réponses DHCP |
Groupe internal |
tout l'entrant depuis +mgmt, rien d'autre |
Groupe webpublic |
TCP 80/443 depuis partout |
Groupe jellyfin |
TCP 8096 depuis VLANs 10/20/30 |
| Machine | Groupes appliqués |
|---|---|
| VM 101 Coolify | webpublic, internal |
| VM 104 dev-laravel | internal |
| CT 106 jellyfin | jellyfin, internal |
| CT 110 Forgejo / CT 111 CI | internal |
| VM 103 Omada | aucun (hors périmètre, cf. ADR-003) |
L'interrupteur général est la variable OpenTofu firewall_enabled
(true depuis la bascule P2 du 2026-07-17). Retour arrière : repasser la
variable à false puis make apply, ou en urgence pve-firewall stop sur la
console de l'hôte.
Exposition publique (Traefik / Coolify)
Un seul point d'entrée depuis Internet : NAT 80/443 de l'ER605 vers la
VM 101 Coolify, dont le Traefik (conteneur coolify-proxy) route par nom
d'hôte. DNS : zone OVH, wildcard *.leonheu.fr → IP publique (DNS dynamique).
Certificats Let's Encrypt émis par Traefik (certResolver: letsencrypt).
Deux familles de routes :
- Apps Coolify (ex.
docs.leonheu.fr) : routées automatiquement par les labels Docker que pose Coolify. - Services hors Coolify : déclarés dans
/data/coolify/proxy/dynamic/custom-external.yamlsur la VM 101 (rechargé à chaud par Traefik) :
| Domaine | Cible interne |
|---|---|
forge.leonheu.fr |
Forgejo — http://10.9.73.81:3000 |
jelly.leonheu.fr |
Jellyfin — http://10.9.73.80:8096 |
nas.leonheu.fr |
Synology — http://10.9.73.10:5000 |
Pour ajouter un service : copier un bloc router + service existant dans ce
fichier. Le SSH de la forge (2222) reste interne : depuis l'extérieur,
cloner en HTTPS ou passer par le VPN WireGuard.
Cette entrée publique est surveillée par CrowdSec (détection sur les access logs Traefik + bannissement pare-feu) — voir le runbook CrowdSec. Convention : un service ne reçoit un nom public que si un accès externe est nécessaire ; l'outillage interne (CI, Proxmox, Omada…) reste accessible via VLAN 10 / WireGuard uniquement.