infra / reseaux-tcp-ip
VLAN et segmentation
Explication
Ce que vous allez apprendre
- Comprendre pourquoi et comment un VLAN segmente logiquement un réseau physique unique
- Distinguer un port "access" (un seul VLAN) d'un port "trunk" (plusieurs VLAN taggués)
- Créer une interface VLAN taguée sur Linux avec
ip link add ... type vlan - Mettre en place un routage inter-VLAN ("router on a stick")
- Comprendre pourquoi la segmentation en VLAN ne suffit pas, seule, à garantir la sécurité
Dans quel contexte ?
Une PME installe un nouveau switch et veut isoler trois populations sur la même infrastructure physique : les postes utilisateurs (VLAN 10), les serveurs internes (VLAN 20), et le Wi-Fi invité (VLAN 30). Sans VLAN, il faudrait tirer trois câblages physiques distincts jusqu'à chaque salle. Avec le VLAN, un seul switch et un seul câblage suffisent : chaque port est simplement assigné au bon VLAN selon l'usage de la prise murale à laquelle il correspond.
Segmenter sans multiplier le câblage
Dans une entreprise, on veut souvent isoler différents types de machines les unes des autres (postes utilisateurs, serveurs, invités Wi-Fi) pour des raisons de sécurité et d'organisation. Faire cela avec un câblage physique séparé pour chaque groupe serait coûteux et rigide. Le VLAN résout ce problème en créant une segmentation logique, directement sur l'infrastructure physique existante : plusieurs réseaux virtuellement séparés, sur un même switch, sans câble supplémentaire.
| Type de port | VLAN transportés | Cas d'usage typique |
|---|---|---|
| Access | 1 seul VLAN | Poste utilisateur, imprimante |
| Trunk | Plusieurs VLAN taggués (802.1Q) | Lien switch-switch, switch-routeur |
Prérequis
Il est utile de déjà connaître les notions d'adressage IP et de sous-réseau (leçons 2-3) : chaque VLAN correspond en général à son propre sous-réseau IP dédié.
Comment une trame "sait" à quel VLAN elle appartient
Chaque trame Ethernet peut être marquée d'une étiquette (un tag 802.1Q) indiquant son VLAN d'origine. Les équipements réseau compatibles lisent cette étiquette pour savoir où la trame a le droit d'aller. C'est un principe similaire à une lettre glissée dans une enveloppe de couleur différente selon le service auquel elle est destinée dans une entreprise.
Port access vs port trunk : une distinction essentielle
Un port "access" est dédié à un seul VLAN — c'est le cas typique d'un poste utilisateur qui n'a pas besoin de connaître l'existence des autres VLAN. Un port "trunk", lui, transporte plusieurs VLAN taggués simultanément — utilisé pour relier des switches entre eux, ou un switch à un routeur qui doit gérer plusieurs VLAN à la fois.
Isoler n'est pas encore sécuriser
Le routage entre VLAN (nécessaire pour qu'ils puissent malgré tout communiquer quand c'est voulu) ne suffit pas à garantir une isolation de sécurité : sans règles de pare-feu explicites, deux VLAN routés entre eux peuvent en réalité tout se voir.
Piège fréquent
Croire que le simple découpage en VLAN suffit à sécuriser un réseau est une erreur fréquente : dès qu'un routage inter-VLAN est activé, deux VLAN peuvent communiquer librement tant qu'aucune règle de pare-feu ne l'en empêche explicitement. Le VLAN segmente logiquement le trafic, mais seule une règle de filtrage garantit une véritable isolation de sécurité.
Commandes & code
VLAN et segmentation
# Un VLAN (Virtual LAN) segmente logiquement un réseau physique unique
# en plusieurs réseaux isolés, sans câblage supplémentaire.
# Chaque trame Ethernet est taguée avec un ID de VLAN (802.1Q), de 1 à 4094.
Switch physique unique
├── Port 1-10 -> VLAN 10 (Utilisateurs) 10.0.10.0/24
├── Port 11-15 -> VLAN 20 (Serveurs) 10.0.20.0/24
├── Port 16-18 -> VLAN 30 (Invités / WiFi) 10.0.30.0/24
└── Port 24 -> Trunk (transporte TOUS les VLAN vers le routeur)
# Un port "access" appartient à UN SEUL VLAN (poste utilisateur, imprimante)
# Un port "trunk" transporte PLUSIEURS VLAN taggués (lien switch-switch, switch-routeur)# Créer une interface VLAN taguée sur Linux (le switch physique doit configurer le trunk en amont)
sudo ip link add link eth0 name eth0.10 type vlan id 10
sudo ip addr add 10.0.10.5/24 dev eth0.10
sudo ip link set eth0.10 up
# Rendre la config VLAN permanente avec netplan
cat /etc/netplan/01-vlans.yaml
# network:
# vlans:
# vlan10:
# id: 10
# link: eth0
# addresses: [10.0.10.5/24]
sudo netplan apply
# Vérifier les interfaces VLAN actives
ip -d link show eth0.10
# vlan protocol 802.1Q id 10 <-- confirme le tag VLAN utilisé
# Routage inter-VLAN ("router on a stick") : un seul lien physique, plusieurs sous-interfaces taguées
sudo ip link add link eth0 name eth0.10 type vlan id 10
sudo ip link add link eth0 name eth0.20 type vlan id 20
sudo ip addr add 10.0.10.1/24 dev eth0.10 # passerelle du VLAN 10
sudo ip addr add 10.0.20.1/24 dev eth0.20 # passerelle du VLAN 20
sudo sysctl -w net.ipv4.ip_forward=1 # active le routage entre les deux VLAN
# Isoler des VLAN entre eux au niveau pare-feu (le routage seul ne suffit pas pour la sécurité)
sudo nft add rule inet filter forward iifname "eth0.30" oifname "eth0.20" drop # invités ne joignent pas serveursRésumé
- Un VLAN segmente logiquement un réseau physique ; les trames sont taguées 802.1Q (ID 1-4094).
- Un port "access" sert un seul VLAN, un port "trunk" en transporte plusieurs vers un autre switch/routeur.
- Le routage inter-VLAN nécessite un forwarding IP actif, et la vraie isolation nécessite en plus des règles de pare-feu.
Exercices pratiques
Mission : réparer un trunk mal configuré et isoler le VLAN invités
Objectif : Corriger une erreur de configuration de port empêchant le routage inter-VLAN, puis bloquer explicitement l'accès du VLAN invités vers le VLAN serveurs.
Contexte
Un switch relie trois VLAN (10 utilisateurs, 20 serveurs, 30 invités) à un routeur via un port censé transporter les trois VLAN. Ce port a été configuré en mode access sur le VLAN 10 au lieu de trunk. Une fois corrigé, il faut aussi s'assurer que le VLAN invités ne peut jamais atteindre le VLAN serveurs.