Aller au contenu

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).
  • vmbr0 VLAN-aware (bascule manuelle, IP hôte figée en statique) + SDN OpenTofu : zone lan, vnet prod (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.yaml sur 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.