Aller au contenu

VLAN, trunks, boucles et liens agrégés

Un VLAN (Virtual Local Area Network) découpe un réseau commuté en plusieurs réseaux logiques qui partagent les mêmes câbles et les mêmes commutateurs. C’est l’outil de base de la segmentation, et l’un des plus mal compris : on lui prête volontiers des vertus de pare-feu qu’il n’a pas, et on oublie qu’en doublant les liens pour la redondance, on fabrique des boucles capables de mettre un bâtiment à terre en quelques secondes. Cette fiche explique le marquage, les trunks, le protocole d’arbre recouvrant, l’agrégation de liens et les garde-fous qui empêchent tout cela de se retourner contre son concepteur.

→ Lire l’explication complète de la marmotte

Un VLAN est un domaine de diffusion : une trame de broadcast émise dans le VLAN 20 n’est recopiée que sur les ports du VLAN 20. Deux machines de VLAN différents ne peuvent pas échanger de trames directement, même branchées sur le même commutateur.

Un port d’accès (access) appartient à un seul VLAN et transmet des trames non marquées : le poste ignore tout de la segmentation. Un port trunk transporte plusieurs VLAN entre commutateurs, ou vers un hyperviseur ou un pare-feu ; chaque trame y porte une étiquette définie par la norme IEEE 802.1Q :

Trame sur un port trunk : MAC de destination, MAC source, étiquette 802.1Q de 4 octets, EtherType, données. L'étiquette se décompose en TPID 0x8100 sur 16 bits, PCP sur 3 bits pour la priorité, DEI sur 1 bit et VID sur 12 bits, l'identifiant de VLAN, avec 4 094 valeurs utilisables.

Le VID (VLAN Identifier) sur 12 bits autorise 4 096 valeurs, dont 0 et 4095 sont réservées : 4 094 VLAN utilisables. Le champ PCP (Priority Code Point) porte une priorité de qualité de service. L’étiquette fait passer la taille maximale d’une trame de 1 518 à 1 522 octets.

Le VLAN natif d’un trunk est celui dont les trames circulent sans étiquette. Par défaut, chez la plupart des constructeurs, c’est le VLAN 1, qui sert aussi souvent aux protocoles de gestion du commutateur. On y ajoute en général quelques VLAN à rôle particulier : administration (interfaces de gestion), invités (accès internet seul), quarantaine (postes non conformes renvoyés par le contrôle d’accès).

La bonne pratique est simple : un VLAN, un sous-réseau IP, une zone de sécurité. Le VLAN 10 porte 10.10.10.0/24, le VLAN 20 10.10.20.0/24, et ainsi de suite. VLAN et sous-réseau restent pourtant deux notions distinctes : le premier est une séparation de niveau 2, le second un découpage de niveau 3. Rien n’empêche techniquement de mettre deux sous-réseaux dans un VLAN, ou un sous-réseau sur deux VLAN reliés par un pont ; ce sont simplement deux excellents moyens de rendre un réseau incompréhensible.

Pour passer d’un VLAN à l’autre, il faut un routage inter-VLAN : un routeur, un commutateur de niveau 3 avec une interface virtuelle par VLAN, ou un pare-feu raccordé en trunk (« router on a stick »). C’est là, et seulement là, que se décide ce qui traverse.

Le VLAN sépare, il ne filtre pas. Si le commutateur de cœur route entre tous les VLAN sans liste de contrôle, la segmentation est purement décorative : le poste du VLAN utilisateurs joint le port SSH des serveurs comme s’ils étaient voisins. Croire qu’un routage inter-VLAN ouvert signifie isolation est l’erreur la plus fréquente de la discipline. L’isolation réelle exige un point de filtrage à états avec une politique écrite, des journaux, et une matrice des flux (voir topologies, composants d’interconnexion et LAN sécurisé et filtrage, segmentation, NAC et Zero Trust).

Atelier : VLAN utilisateurs, serveurs et administration

Section intitulée « Atelier : VLAN utilisateurs, serveurs et administration »
VLANNomSous-réseauPasserellePorts
10UTILISATEURS10.10.10.0/24pare-feu .1accès, étages
20SERVEURS10.10.20.0/24pare-feu .1accès, salle serveurs
99ADMIN10.10.99.0/26pare-feu .1gestion des équipements
666PARKINGaucunaucuneports inutilisés
999NATIF-INUTILISEaucunaucunenatif des trunks

Les ports non utilisés sont désactivés et placés dans un VLAN sans issue ; le VLAN natif des trunks est un VLAN vide qui ne transporte rien d’utile. Sur un commutateur de syntaxe Cisco IOS, un port utilisateur et un trunk se configurent ainsi :

interface Gi1/0/12
switchport mode access
switchport access vlan 10
switchport nonegotiate
spanning-tree portfast
spanning-tree bpduguard enable
!
interface Te1/1/1
switchport mode trunk
switchport trunk native vlan 999
switchport trunk allowed vlan 10,20,99

Les commandes varient selon les constructeurs, mais les notions (mode, VLAN d’accès, VLAN autorisés, VLAN natif) se retrouvent partout.

Ethernet n’a pas de durée de vie dans ses trames : contrairement au TTL d’un paquet IP, rien ne décrémente un compteur à chaque saut. Dès que deux chemins relient deux commutateurs, une trame de diffusion est recopiée sur chacun, revient par l’autre, est recopiée à nouveau, et ainsi de suite. En quelques secondes, la tempête de diffusion (broadcast storm) sature les liens et les processeurs, et les tables d’adresses MAC oscillent sans cesse d’un port à l’autre. Les causes sont banales : liens redondants volontaires, câble de brassage branché entre deux prises murales, petit commutateur de bureau relié deux fois, téléphone IP avec port de passage mal câblé.

Le STP (Spanning Tree Protocol), normalisé en IEEE 802.1D, construit un arbre sans boucle à partir d’un réseau maillé. Les commutateurs échangent des BPDU (Bridge Protocol Data Units) et procèdent en trois étapes :

  1. Élection du root bridge : le commutateur à l’identifiant le plus bas, composé d’une priorité (32 768 par défaut, réglable par pas de 4 096) et de l’adresse MAC.
  2. Chaque autre commutateur choisit son port racine, celui de plus faible coût vers la racine. En coûts longs (802.1D-2004), un lien à 1 Gbit/s coûte 20 000 et un lien à 10 Gbit/s 2 000.
  3. Sur chaque segment, un seul port désigné transmet ; les autres ports sont bloqués.

Laisser l’élection au hasard revient à confier la racine au commutateur le plus ancien, puisque les adresses MAC basses sont souvent les plus vieilles. On fixe donc explicitement la racine sur le cœur (priorité 4 096) et une racine de secours (8 192).

Le STP d’origine converge lentement : avec ses temporisations par défaut (hello 2 s, max age 20 s, forward delay 15 s), un changement prend de 30 à 50 secondes. Le RSTP (Rapid Spanning Tree Protocol, 802.1w, intégré à 802.1D en 2004) remplace l’attente par un échange de proposition et d’accord sur les liens point à point et converge généralement en moins d’une seconde. Le MSTP (Multiple Spanning Tree Protocol) fait tourner plusieurs instances pour répartir les VLAN sur des arbres différents (voir MSTP).

Trois commutateurs A, B et C reliés en triangle, A ayant la priorité 4 096. B et C choisissent chacun leur lien direct vers A comme port racine. Sur le segment B-C, le commutateur à l’identifiant le plus bas, disons B, a le port désigné ; le port de C vers B est bloqué. Si le lien A-C tombe, C ne reçoit plus de BPDU par son port racine et débloque son port vers B, qui devient son nouveau port racine. Désactivez STP dans ce laboratoire, envoyez un seul ping vers une adresse inconnue, et observez les compteurs de broadcast grimper jusqu’à la saturation : la démonstration est brève et très convaincante.

L’agrégation de liens réunit plusieurs liens physiques en un lien logique, que STP voit comme un seul port. Le LACP (Link Aggregation Control Protocol), défini à l’origine par IEEE 802.3ad et aujourd’hui par 802.1AX, négocie l’agrégat et retire automatiquement un membre défaillant. La répartition se fait par flux, selon un hachage des adresses MAC, IP ou des ports : tous les paquets d’un même flux empruntent le même lien, pour éviter les désordres. Quatre liens de 1 Gbit/s donnent une capacité agrégée de 4 Gbit/s, mais un transfert unique reste plafonné à 1 Gbit/s. Avec peu de flux, le hachage peut aussi charger un lien et en laisser un autre presque vide.

STP n’est pas un protocole de routage : il ne choisit pas le meilleur chemin pour chaque destination, il désactive des liens pour qu’il n’en reste qu’un seul chemin.

Le VLAN hopping exploite deux faiblesses. La première est le trunk abusif : sur les équipements qui négocient dynamiquement le mode trunk (protocole DTP chez Cisco), un poste qui se prétend commutateur obtient un trunk et accède à tous les VLAN. On l’évite en forçant les ports utilisateurs en mode accès et en désactivant la négociation. La seconde est le double étiquetage : un attaquant placé dans le VLAN natif d’un trunk envoie une trame portant deux étiquettes ; le premier commutateur retire l’étiquette extérieure (natif, donc non marquée) et transmet la trame qui porte encore l’étiquette intérieure, livrée dans le VLAN cible par le commutateur suivant. L’attaque est à sens unique, mais suffit pour certains flux. Elle disparaît si aucun port d’accès n’appartient au VLAN natif, ou si le natif est lui aussi marqué.

Un trunk trop permissif transporte tous les VLAN par défaut : un commutateur d’étage reçoit alors le VLAN des serveurs ou de l’administration, qu’il n’a aucune raison de voir. L’audit consiste à comparer, pour chaque trunk, la liste des VLAN autorisés (show interfaces trunk) à ceux réellement utilisés en aval, puis à restreindre la liste au strict nécessaire.

  • BPDU guard : désactive un port d’accès qui reçoit un BPDU, signe qu’un commutateur y a été branché.
  • Root guard : empêche un port de devenir chemin vers une nouvelle racine, ce qui bloque l’attaque STP où un équipement annonce une priorité 0 pour devenir racine et attirer le trafic.
  • Storm control : limite le débit de broadcast, multicast ou unicast inconnu sur un port, et contient les tempêtes.
  • Port security : limite le nombre d’adresses MAC apprises sur un port.

Les changements de topologie STP, l’élection d’une nouvelle racine, les ports désactivés par une protection et les variations brutales de broadcast doivent remonter dans la supervision. Les configurations sont sauvegardées et versionnées, et chaque VLAN est documenté avec son sous-réseau, sa zone, ses trunks et ses flux autorisés. Une modification de trunk se prépare avec un retour arrière écrit et un accès hors bande au commutateur : retirer par erreur le VLAN d’administration d’un trunk coupe aussi l’accès qui aurait permis de le remettre. Certains équipements proposent une confirmation de commit avec annulation automatique, filet précieux pour ce genre d’instant.

Sans ces garde-fous, la segmentation ne tient qu’aussi longtemps que chaque port reste configuré comme prévu : un port utilisateur laissé en mode trunk suffit à un poste pour atteindre des segments qui ne lui étaient pas destinés, sans franchir aucun pare-feu. Sans protection contre les boucles, un câble branché de travers par un visiteur bien intentionné peut paralyser tout un bâtiment en quelques secondes, et sans supervision des changements, l’équipe cherche la cause pendant que le réseau reste à terre. Enfin, une segmentation non documentée ne se reconstruit pas après une erreur : on ne restaure pas un plan qui n’a jamais existé.

Un réseau local relie des appareils par des commutateurs, des boîtiers qui transmettent les trames d’un port à l’autre. Un VLAN, ou réseau local virtuel, découpe ce réseau physique en plusieurs réseaux logiques séparés : postes des utilisateurs, serveurs, administration, invités, quarantaine. Chaque port d’accès appartient à un seul VLAN. Entre deux commutateurs, un lien appelé trunk transporte plusieurs VLAN à la fois ; chaque trame y porte une étiquette, définie par la norme 802.1Q, qui indique son VLAN. Le VLAN natif est celui dont les trames circulent sans étiquette, ce qui le rend plus facile à détourner. Pour que deux VLAN communiquent, il faut passer par un routeur, et c’est là qu’on filtre : un VLAN sépare, mais ne remplace pas un pare-feu. Pour la fiabilité, on relie les commutateurs par plusieurs chemins ; cela crée des boucles, où une trame diffusée tourne sans fin et sature le réseau. Le protocole de l’arbre recouvrant, appelé STP, élit un commutateur racine et coupe les liens en trop pour supprimer ces boucles, puis les rétablit en cas de panne. L’agrégation de liens, ou LACP, regroupe plusieurs câbles en un seul lien logique et répartit les flux entre eux, sans accélérer un flux isolé. Des protections de port limitent les appareils branchés, les tempêtes de diffusion et les annonces suspectes, pour empêcher un attaquant de sauter d’un VLAN à l’autre.

À lire aussi

Pages voisines

: les deux pages se citent l’une l’autre.