Semaine 3 — Les VLAN : découper un réseau sans toucher aux câbles¶
Objectifs d'apprentissage¶
- Expliquer à quoi sert un VLAN et quel problème il règle.
- Décrire ce que la norme 802.1Q ajoute à une trame Ethernet.
- Distinguer un port d'accès d'un port trunk, et dire où se pose l'étiquette.
- Expliquer le rôle du PVID et du VLAN natif.
- Configurer un VLAN dans Proxmox par les deux méthodes disponibles.
1. Le problème : un seul switch, plusieurs réseaux¶
Prenez une petite entreprise avec un switch de 48 ports. Il y a les postes de la comptabilité, les caméras de surveillance, le Wi-Fi des invités et les serveurs. Tout ce monde est branché sur le même switch, donc tout le monde est sur le même réseau. Le Wi-Fi des invités voit les serveurs.
La solution évidente, c'est d'acheter quatre switchs. Ça marche, mais ça coûte cher, ça remplit l'armoire, et il faut refaire le câblage chaque fois qu'un poste change de service.
Le VLAN (Virtual LAN) règle ça en logiciel : un seul switch physique se comporte comme plusieurs switchs séparés. On dit au switch que les ports 1 à 12 forment un réseau, les ports 13 à 24 un autre, et ainsi de suite. Un poste du premier groupe ne peut plus joindre le second, exactement comme s'ils étaient sur deux appareils différents.
Changer un poste de réseau devient une modification de configuration, pas un déplacement de câble.
2. Ce que la norme 802.1Q ajoute à la trame¶
Tant qu'on reste dans un seul switch, celui-ci peut retenir de lui-même quel port appartient à quel VLAN. Le problème arrive quand la trame doit passer d'un switch à un autre par un seul câble : à l'arrivée, comment savoir de quel VLAN elle vient ?
C'est là qu'intervient la norme IEEE 802.1Q. Elle insère 4 octets supplémentaires dans l'en-tête de la trame Ethernet, juste après les adresses MAC. Ces 4 octets contiennent notamment :
- un identifiant fixe,
0x8100, qui annonce « cette trame porte une étiquette VLAN » ; - le VID (VLAN ID), le numéro du VLAN, codé sur 12 bits ;
- un champ de priorité, qui sert à la qualité de service.
12 bits, ça fait 4096 valeurs possibles. Les numéros 0 et 4095 sont réservés par la norme, ce qui laisse les VLAN 1 à 4094 utilisables. C'est exactement la plage que vous retrouverez dans le champ bridge-vids 2-4094 écrit par Proxmox.
On parle de trame étiquetée (tagged) quand ces 4 octets sont présents, et non étiquetée (untagged) quand ils ne le sont pas.
Note
Une machine ordinaire ne voit jamais ces étiquettes. C'est le switch qui les pose à l'entrée et les retire à la sortie. Le système d'exploitation d'un serveur peut très bien passer sa vie dans un VLAN sans jamais le savoir.
3. Port d'accès et port trunk¶
Toute la mécanique tient dans la différence entre deux types de ports.
Un port d'accès (access port) est un port où on branche une machine ordinaire. Il appartient à un seul VLAN. Le switch pose l'étiquette sur les trames qui entrent, et l'enlève sur celles qui sortent. La machine branchée dessus ne voit jamais rien.
Un port trunk est un port qui relie deux équipements réseau : deux switchs, ou un switch et un serveur de virtualisation. Il transporte plusieurs VLAN sur le même câble, et il garde les étiquettes, sinon on ne saurait plus les distinguer à l'arrivée.
flowchart LR
PC1["Poste<br/>compta"] -->|sans étiquette| SW1
PC2["Caméra"] -->|sans étiquette| SW1
SW1["Switch A"] -->|VLAN 10 et 20<br/>étiquetés| SW2["Switch B"]
SW2 -->|sans étiquette| PC3["Poste<br/>compta"]
C'est ce qui donne la règle la plus importante de ce cours : l'étiquette n'existe que dans les câbles entre équipements réseau. Elle est posée à l'entrée du port d'accès et retirée à la sortie de l'autre port d'accès.
4. Le PVID et le VLAN natif¶
Deux mots de vocabulaire qui reviennent tout le temps, et qui décrivent la même idée vue des deux côtés.
Le PVID (Port VLAN ID) est le VLAN dans lequel le switch range les trames qui arrivent sans étiquette sur un port. Sur un port d'accès, c'est simplement le VLAN du port. C'est ce que vous lirez dans la sortie de bridge vlan show :
Ça se lit en deux temps. 10 PVID : ce qui entre sans étiquette part dans le VLAN 10. Egress Untagged : ce qui sort vers la machine n'a plus d'étiquette.
Le VLAN natif (native VLAN), c'est la même idée appliquée à un port trunk. Un trunk transporte des trames étiquetées, mais on peut lui désigner un VLAN dont les trames voyageront sans étiquette. C'est pratique pour brancher un équipement qui ne connaît rien aux VLAN sur un port qui en transporte plusieurs.
C'est exactement la situation de vos serveurs en salle des serveurs, et vous le vérifierez à l'exercice 3 :
| VLAN | Étiquette dans le câble | Ce que le serveur en fait |
|---|---|---|
| 700 (natif) | aucune | Proxmox le reçoit comme du trafic Ethernet normal, sans configuration |
| 460 | étiquetée | il faut configurer Proxmox pour le traiter |
C'est pour cette raison que votre installation de Proxmox a obtenu son adresse 10.70.44.# sans que vous ayez jamais entendu parler de VLAN : le trafic de gestion est justement celui qui n'a pas d'étiquette.
5. Les VLAN dans Proxmox¶
Proxmox propose deux façons de faire, et il faut choisir. La première est nettement plus courante aujourd'hui.
Méthode 1 — Le bridge VLAN aware¶
On coche VLAN Aware sur le bridge. Celui-ci active alors son filtrage VLAN : il attribue un numéro de VLAN à chacun de ses ports et refuse de faire passer une trame entre deux ports qui n'ont pas le même.
Dans le fichier de configuration, ça donne deux lignes :
bridge-vids est la liste des VLAN que le bridge accepte de transporter. Une trame dont le VLAN n'est pas dans cette liste est jetée, sans message d'erreur.
Ensuite, chaque VM ou conteneur reçoit un VLAN Tag dans sa configuration réseau. Proxmox transforme son port en port d'accès dans ce VLAN. Un seul bridge suffit pour tous les VLAN.
Méthode 2 — La sous-interface VLAN¶
L'ancienne méthode consiste à créer une interface dédiée par VLAN, nommée d'après l'interface parente suivie du numéro : vmbr0.460. On crée ensuite un bridge par VLAN, branché sur cette sous-interface.
Ça fonctionne toujours, et Proxmox le propose encore sous Create > Linux VLAN. Mais il faut un bridge par VLAN, ce qui devient vite ingérable dès qu'on en a une dizaine.
Laquelle utiliser¶
| Bridge VLAN aware | Sous-interface VLAN | |
|---|---|---|
| Nombre de bridges | un seul | un par VLAN |
| Où se choisit le VLAN | dans la config de la VM | dans le choix du bridge |
| Changer une VM de VLAN | modifier un champ | débrancher, rebrancher ailleurs |
| Verdict | à privilégier | héritage, ou cas particuliers |
Dans ce cours, nous utilisons le bridge VLAN aware.
6. Ce qu'un VLAN ne fait pas¶
C'est la confusion la plus courante, et elle vaut la peine d'être dite clairement.
Un VLAN ne route rien. Il sépare, il ne relie pas. Deux VLAN qui doivent communiquer ont besoin d'un routeur ou d'un pare-feu, exactement comme deux réseaux physiques distincts.
Et surtout : ce n'est pas parce que deux machines ont des adresses du même sous-réseau qu'elles peuvent se parler. Vous le verrez à l'exercice 2, avec trois conteneurs tous en 192.168.100.0/24 dont deux seulement communiquent. La séparation VLAN se produit au niveau 2, sous la couche IP, donc avant même que la question du sous-réseau ne se pose.
Une machine dans le mauvais VLAN n'obtient pas un message d'erreur clair. Sa requête ARP part, personne ne répond, et elle conclut que la destination est éteinte. C'est ce qui rend les erreurs de VLAN si pénibles à diagnostiquer.
Astuce
Devant un problème réseau incompréhensible sur un hyperviseur, bridge vlan show est souvent la commande qui donne la réponse en deux secondes. Elle affiche la configuration réelle du switch virtuel, pas celle que vous croyez avoir faite.
Pièges fréquents¶
- Croire qu'un VLAN implique un sous-réseau. Ce sont deux notions indépendantes. En pratique on fait correspondre un VLAN à un sous-réseau parce que c'est plus lisible, mais rien ne l'impose, et l'exercice 2 fait exprès de ne pas le faire.
- Oublier de configurer le trunk du côté du switch physique. Vous taguez proprement côté Proxmox, et le switch jette tout. Une configuration VLAN se fait toujours des deux côtés du câble.
- Poser un tag sur un bridge qui n'est pas VLAN aware. Le champ accepte la valeur, et rien ne se passe. Aucune erreur n'est affichée.
- Taguer une VM avec le numéro du VLAN natif. Le trafic natif circule sans étiquette : en taguant, vous envoyez des trames étiquetées là où le switch en attend des nues.
- Confondre le VLAN 1 et le VLAN natif. Le VLAN 1 est la valeur par défaut de beaucoup d'équipements. Le VLAN natif est celui dont on choisit de retirer l'étiquette sur un trunk donné. Ils coïncident souvent, mais pas toujours.
Vérification des acquis¶
Question 1¶
Où l'étiquette 802.1Q est-elle posée sur une trame ?
- a) Par la machine qui émet, avant de mettre la trame sur le câble.
- b) Par le switch, quand la trame entre par un port d'accès.
- c) Par le routeur, au moment de changer de sous-réseau.
Voir la réponse
**b) Par le switch, quand la trame entre par un port d'accès.** Le switch pose l'étiquette à l'entrée et la retire à la sortie de l'autre port d'accès. La machine branchée dessus n'a rien à savoir, et c'est justement ce qui rend les VLAN utilisables sur n'importe quel équipement. Le choix a) décrit ce qui se passe sur un port trunk, où l'équipement raccordé étiquette lui-même ses trames. Mais un poste de travail ordinaire est branché sur un port d'accès, et n'étiquette jamais rien.Question 2¶
Deux machines ont les adresses 192.168.100.11/24 et 192.168.100.12/24, mais sont dans les VLAN 10 et 20 du même switch. Que se passe-t-il quand la première ping la seconde ?
- a) Ça fonctionne, elles sont dans le même sous-réseau.
- b) Le ping échoue immédiatement avec
Network is unreachable. - c) Le ping part et reste sans réponse, jusqu'à expiration du délai.
Voir la réponse
**c) Le ping part et reste sans réponse, jusqu'à expiration du délai.** Le masque `/24` fait croire à la première machine que la destination est sur son propre lien. Elle envoie donc une requête ARP en diffusion pour obtenir son adresse MAC. Le switch ne recopie ce broadcast que dans le VLAN 10, personne ne répond, et le paquet ICMP n'est jamais construit. Le choix b) décrit un cas différent : celui d'une machine qui n'a aucune route vers la destination. Ici la route existe, c'est le lien local, et c'est justement pour ça qu'elle attend au lieu d'abandonner.Question 3¶
Sur un port trunk, à quoi sert le VLAN natif ?
- a) À définir le VLAN prioritaire en cas de congestion.
- b) À désigner le VLAN dont les trames circulent sans étiquette sur ce port.
- c) À réserver un VLAN pour l'administration du switch.
Voir la réponse
**b) À désigner le VLAN dont les trames circulent sans étiquette sur ce port.** C'est ce qui permet de brancher sur un trunk un équipement qui ne connaît rien aux VLAN. C'est le cas de votre serveur Proxmox à l'installation : il reçoit le VLAN 700 sans étiquette et le traite comme du trafic ordinaire. Le choix c) décrit un usage réel, mais qui n'a rien à voir : beaucoup d'administrateurs réseau réservent effectivement un VLAN à la gestion, et c'est une bonne pratique. Ça reste sans rapport avec l'étiquetage.Question 4¶
Un bridge Proxmox est configuré avec bridge-vids 460. Que devient une VM taguée en VLAN 999 ?
- a) Elle bascule automatiquement dans le VLAN 460.
- b) Proxmox refuse de démarrer la VM et affiche une erreur.
- c) Elle démarre normalement, mais n'a aucune connectivité.