man vlan
Configuration VLANs réseau
Segmentation VLAN et isolation réseau homelab
La segmentation découpe le réseau en zones de confiance distinctes. Chaque VLAN porte un rôle unique, et tout flux inter-VLAN est interdit par défaut : seules les autorisations explicitement déclarées sur le cœur de réseau sont routées.
Le schéma ci-dessous est rendu en SVG dans la page (pas d’image) : il suit le thème clair/sombre du site, reste net à tout zoom et se sélectionne au texte.
Vue d’ensemble
Lecture du schéma
Les flèches ne représentent que les flux structurants. La matrice complète autorisation par autorisation est plus bas, et c’est elle qui fait foi pour la configuration des ACL.
Plan d’adressage
| VLAN | Sous-réseau | Rôle | Contenu | Criticité |
|---|---|---|---|---|
| 5 | 10.10.5.0/24 |
DMZ publique | Reverse proxy (Nginx/HAProxy), services exposés | Élevée |
| 10 | 10.10.10.0/24 |
Infrastructure | Proxmox/KVM, contrôleurs, DNS autoritaire interne | Critique |
| 20 | 10.10.20.0/24 |
Administration | Bastion, postes d’admin, Ansible | Critique |
| 30 | 10.10.30.0/24 |
Stockage | OpenMediaVault, Ceph, partages SMB/NFS | Critique |
| 40 | 10.10.40.0/24 |
Forge / DevOps | Git, runners CI, registry, artefacts | Moyenne |
| 50 | 10.10.50.0/24 |
Services | Authentik, Jellyfin, Immich, bases applicatives | Moyenne |
| 60 | 10.10.60.0/24 |
Conteneurs | Cluster Kubernetes, MetalLB, Ingress | Moyenne |
| 70 | 10.10.70.0/24 |
IoT | Home Assistant, caméras, imprimantes, TV | Faible (non fiable) |
| 80 | 10.10.80.0/24 |
Sauvegarde | Restic, MinIO, dépôts immuables, réplication | Critique |
| 90 | 10.10.90.0/24 |
Logs / supervision | SIEM, Syslog, Prometheus, Grafana, Alertmanager | Élevée |
Politique de communication
Ligne = source, colonne = destination. Tout ce qui n’est pas explicitement
autorisé est refusé par la règle finale deny all.
| Source \ Destination | INT | V5 | V10 | V20 | V30 | V40 | V50 | V60 | V70 | V80 | V90 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Internet | — | ◐ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
| V5 DMZ | ✔ | — | ✘ | ✘ | ✘ | ✘ | ◐ | ◐ | ✘ | ✘ | ✔ |
| V10 Infra | ◐ | ✘ | — | ✘ | ✔ | ✘ | ✘ | ✘ | ✘ | ✔ | ✔ |
| V20 Admin | ◐ | ✔ | ✔ | — | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| V30 Stockage | ✘ | ✘ | ✔ | ✘ | — | ✘ | ✘ | ✘ | ✘ | ✔ | ✔ |
| V40 Forge | ◐ | ✘ | ◐ | ✘ | ✔ | — | ✘ | ◐ | ✘ | ✘ | ✔ |
| V50 Services | ◐ | ✘ | ✘ | ✘ | ✔ | ✘ | — | ✘ | ✘ | ✘ | ✔ |
| V60 Kube | ◐ | ✘ | ✘ | ✘ | ✔ | ✘ | ◐ | — | ✘ | ✘ | ✔ |
| V70 IoT | ◐ | ✘ | ✘ | ✘ | ✘ | ✘ | ◐ | ✘ | — | ✘ | ✔ |
| V80 Backup | ✘ | ✘ | ✔ | ✘ | ✔ | ✘ | ✘ | ✘ | ✘ | — | ✔ |
| V90 Logs | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | — |
✔ autorisé · ◐ limité ou contrôlé · ✘ interdit · — sans objet
Détail des flux ◐ :
Internet → V5: uniquement 443 via le reverse proxy.V10 → Internet,V40 → Internet,V50 → Internet,V60 → Internet: sortie 443 pour les mises à jour et paquets.V70 → Internet: DNS, NTP et mises à jour firmware seulement.V40 → V10: API et SSH restreints aux hôtes de déploiement.V70 → V50: accès NVR / Home Assistant uniquement.V5 → V60: entrée Ingress du cluster, terminaison TLS sur le reverse proxy.V20 → Internet: sortie restreinte, poste d’admin non navigateur généraliste.
VLAN 70 — IoT
Les objets connectés sont traités comme une zone non fiable au même titre qu’Internet : aucun accès aux VLAN critiques, pas de résolution DNS interne, et journalisation systématique vers le VLAN 90.
Bonnes pratiques ANSSI appliquées
- Séparation stricte des rôles et des usages — un VLAN, un usage, pas de service mutualisé entre zones de confiance.
- Interdiction par défaut — la dernière règle de chaque ACL est
deny all, les autorisations sont explicites et documentées. - Moindre privilège — seuls les ports et protocoles nécessaires sont ouverts, jamais des plages entières.
- Administration centralisée et tracée — tout accès d’administration passe par le bastion du VLAN 20, en SSH ou WinRM.
- Sauvegardes isolées et immuables — le VLAN 80 n’est joignable que depuis l’infra et le stockage, et les dépôts sont en append-only.
- Supervision et corrélation — collecte Syslog et agents vers le VLAN 90, qui n’accepte aucune écriture depuis les autres zones hors flux de collecte.
- Revues régulières — audit des règles, tests de cloisonnement et mise à jour de la documentation à chaque changement.
Paramètres du schéma
Contrat d'entrée (`type-it-state`)
Le SVG ci-dessus est généré à partir de ces paramètres. Modifier une valeur ici et recalculer la géométrie suffit à faire évoluer le schéma.
title: "Infrastructure — segmentation par VLAN"subtitle: "Périmètre, administration, charges de travail et socle de données"eyebrow: "ANSSI · ZONES DE CONFIANCE"orientation: horizontal
zones: - name: "PÉRIMÈTRE" components: - { id: internet, name: "Internet", sub: "WAN · zone non fiable", icon: globe, kind: external } - { id: fw, name: "FW-Périmètre", sub: "HA · NAT · IDS/IPS · anti-DDoS", icon: shield, kind: focal } - { id: dmz, name: "VLAN 5 — DMZ", sub: "Reverse proxy · exposition web", icon: cloud } - { id: iot, name: "VLAN 70 — IoT", sub: "Home Assistant · caméras · TV", icon: chip, color: "#b85450" } - name: "ADMINISTRATION" components: - { id: core, name: "Cœur de réseau", sub: "L3 · ACL · QoS · DHCP relay", icon: switch } - { id: admin, name: "VLAN 20 — Admin", sub: "Bastion · Ansible · SSH/WinRM", icon: terminal, kind: focal } - name: "CHARGES" components: - { id: forge, name: "VLAN 40 — Forge", sub: "Git · runners CI · registry", icon: git } - { id: services, name: "VLAN 50 — Services", sub: "Authentik · Jellyfin · Immich", icon: apps } - { id: kube, name: "VLAN 60 — Kube", sub: "K8s · MetalLB · Ingress", icon: hexagon } - name: "SOCLE" components: - { id: infra, name: "VLAN 10 — Infra", sub: "Proxmox/KVM · DNS interne", icon: server } - { id: stockage, name: "VLAN 30 — Stockage", sub: "Ceph · SMB/NFS · OpenMediaVault", icon: database } - { id: backup, name: "VLAN 80 — Sauvegarde", sub: "Restic · MinIO · dépôts immuables", icon: archive, color: "#8c6d3f" } - { id: logs, name: "VLAN 90 — Logs", sub: "SIEM · Prometheus · Grafana", icon: chart, color: "#5a7d9a" }
connectors: - { from: internet, to: fw, label: "WAN", style: accent, dashed: true } - { from: fw, to: dmz, label: "HTTPS", style: accent } - { from: fw, to: core, label: "FILTRÉ", style: accent } - { from: dmz, to: kube, label: "INGRESS", style: link } - { from: core, to: forge, label: "ACL", style: link } - { from: admin, to: forge, label: "SSH", style: accent } - { from: forge, to: services, label: "DEPLOY", style: link } - { from: forge, to: infra, label: "API", style: link } - { from: services, to: stockage, label: "NFS/S3", style: link } - { from: kube, to: stockage, label: "PV", style: neutral } - { from: stockage, to: backup, label: "RESTIC", style: neutral } - { from: iot, to: logs, label: "SYSLOG", style: neutral, dashed: true }
footer: - { name: "Points de contrôle", sub: "Pare-feu · ACL inter-VLAN · bastion · TLS/SSH", icon: shield } - { name: "Bonnes pratiques ANSSI", sub: "Deny all · moindre privilège · sauvegardes immuables · journalisation", icon: check }Géométrie : viewBox = 1152 × 696, zone_y = 88, zone_h = 400,
comp_h = 60, comp_gap = 32, zone_gap = 20, marges 16.
Largeurs de zones : 260 / 240 / 280 / 280. Composants par zone : 4 / 2 / 3 / 4,
soit 13 au total — sous le plafond de 16 fixé par le type.
Adapter les couleurs du schéma
Le schéma autonome se trouve dans public/assets/reseau/vlan-map.svg.
Ses variables --dg-paper, --dg-ink et --dg-muted définissent les
couleurs de fond, de texte et de contraste ; les règles
prefers-color-scheme du SVG suivent le thème du système.