La configuration des VLANs avec Hyper-V
Sommaire
I. Présentation
Dans un environnement virtualisé, l'utilisation des VLAN permet de segmenter le réseau pour isoler les machines virtuelles selon leur usage ou leur niveau de sécurité. Surtout, ceci offre l'opportunité de segmenter le réseau, y compris au niveau des machines virtuelles, sans recourir à de multiples liens réseau.
La configuration des VLAN dans Hyper-V est opération fréquente pour gérer le trafic réseau des machines virtuelles, que ce soit pour cloisonner les services (production, tests, etc.) ou refléter une architecture réseau existante au niveau des machines virtuelles.
Dans ce chapitre, nous allons voir comment configurer des VLAN avec Hyper-V, que ce soit au niveau d'un commutateur virtuel (carte de l'hôte) ou d'une machine virtuelle.
II. Un lien réseau, plusieurs VLANs
L'exemple ci-dessous met en évidence la particularité de cette configuration : un seul lien réseau entre un Hyper-V et un commutateur permet de faire transiter les flux de plusieurs VLANs. Pour autant, les flux sont isolés et la segmentation du réseau respectée. C'est possible grâce au standard 802.1Q dont l'objectif est d'étiqueter chaque trame (tag) afin de spécifier le VLAN ID auquel elle appartient.
Ainsi, plusieurs machines virtuelles peuvent utiliser le même commutateur virtuel Hyper-V, tout en étant connecté à des sous-réseaux différents (VLAN différents). Si vous avez un lien réseau 10 GbE entre votre hyperviseur (lien unique ou teaming) et votre switch, ceci vous permet d'optimiser l'utilisation de votre bande-passante sans remettre en question l'isolation des flux.

Au-delà de la configuration du VLAN ID du côté de la machine virtuelle ou de l'hyperviseur, vous devez aussi configurer le commutateur sur lequel est connecté le lien physique. Sinon, la configuration ne peut pas fonctionner.
C'est relativement logique : quand on utilise des VLANs, le switch doit savoir à quel VLAN appartient chaque donnée (ou "trame") qui circule.
- Un port en mode tag ajoute une étiquette (tag VLAN) à chaque trame. Cela permet d’indiquer à quel VLAN la trame appartient. Ce mode est utilisé sur les ports trunk, souvent reliés à d'autres switchs ou à un serveur (comme Hyper-V), pour transporter plusieurs VLANs en même temps.
- Un port en mode untag ne voit pas les étiquettes. Il envoie et reçoit les trames sans balise VLAN. Ce mode est utilisé pour connecter des ordinateurs ou imprimantes, qui n’ont pas besoin de gérer plusieurs VLANs.
En pratique, un port de switch sera untag sur un VLAN par défaut. De plus, il conviendra ensuite d'ajouter un tag sur le port pour tous les VLANs qui peuvent transiter sur le lien (= les VLAN autorisés). Attention, l'interprétation et le fonctionnement peut différer sur certaines marques.
Voici un exemple de profil de configuration destiné à être appliqué sur le port d'un switch. Cette configuration signifie que si une machine virtuelle est connectée sur ce port de switch, elle sera par défaut sur le VLAN 110 nommé LAN-LAB. Si l'on veut que la machine virtuelle soit connectée sur le VLAN LAN-LAB-PRIVATE (ID 10) taggué sur ce port, il faudra aussi ajouter le tag sur la carte réseau de la VM.

Si vous n'avez pas de switch mais que vous souhaitez tout de même manipuler les VLANs, c'est possible ! Vous devez créer un commutateur virtuel interne sur votre Hyper-V. Dans l'exemple qui suit, nous utiliserons cette méthode à des fins de démo, avec un commutateur virtuel nommé "VLAN-DEMO". Pour rappel, un commutateur interne permet les communications entre la VM et l'hôte physique.
III. Configurer un VLAN sur une VM Hyper-V
Partons de la configuration suivante : un commutateur virtuel interne nommé "VLAN-DEMO". Il permet à la VM de communiquer avec l'hôte Hyper-V, à condition qu'une adresse IP soit configurée de chaque côté. Ici, c'est le cas :
- Hyper-V : 10.10.10.1
- VM : 10.10.10.2
Pour configurer le VLAN ID sur l'interface réseau d'une VM, vous devez accéder aux paramètres de celle-ci. Cliquez ensuite sur la carte réseau à configurer, et vous verrez la section "ID du réseau local virtuel". Mais avant d'évoquer la configuration, prenons le temps de faire un test très simple : un ping de la VM vers l'hôte physique. La communication fonctionne et c'est normal, car les deux hôtes sont sur le même commutateur virtuel.

Note : la configuration d'un VLAN ID s'effectue par carte réseau, donc une machine virtuelle avec plusieurs cartes peut se connecter sur plusieurs sous-réseaux.
Maintenant, nous allons imaginer que l'on souhaite connecter la carte réseau sur un VLAN avec l'ID 10. Nous devons donc cocher l'option "Activer l'identification LAN virtuelle" et dans la zone de saisie, indiquer l'ID du VLAN : 10. Validez.
Suite à cette modification, l'isolation de la machine virtuelle est immédiate : elle ne peut plus communiquer avec l'hôte physique !

Pour que la communication entre les deux hôtes soient de nouveau opérationnelle, il faudrait tagguer la connexion de l'Hyper-V sur le VLAN 10. Mais, comment faire ?
IV. Configurer un VLAN sur un vSwitch Hyper-V
Pour agir sur l'étiquette de VLAN associée à la connexion de l'hôte Hyper-V en lui-même, vous devez passer par les options du commutateur virtuel. Depuis le Gestionnaire Hyper-V, cliquez sur "Gestionnaire de commutateur virtuel" à droite.
Ensuite, sélectionnez le vSwitch à configurer, à savoir "VLAN-DEMO". Vous retrouvez ici le même principe pour la configuration, même si l'option est nommée autrement. Cochez l'option "Activer l'identification LAN virtuelle pour le système d'exploitation de gestion", puis indiquez l'ID de VLAN, à savoir 10. Comme ceci :

Suite à cette modification, l'hôte Hyper-V et la VM peuvent de nouveau communiquer, tout en étant virtuellement sur le VLAN 10 !
Ce qu'il faut retenir, c'est que la modification directement au niveau du commutateur virtuel affecte uniquement l'Hyper-V et non les VM connectée au commutateur virtuel. Pour les VM, vous devez gérer la configuration au niveau de la carte réseau de la VM.
V. Configuration du VLAN avec PowerShell
Pour modifier le VLAN ID sur un ensemble de machines virtuelles, le plus simple, c'est de s'appuyer sur PowerShell. Sinon, vous devez modifier les machines virtuelles une à une... Ce qui peut s'avérer chronophage (et pénible).
L'exemple ci-dessous sert à associer le VLAN ID 10 à toutes les machines virtuelles qui ont une carte réseau connectée sur le switch virtuel "VLAN-DEMO". Cette modification affectera uniquement les cartes réseau des VM, et non les paramètres des switchs virtuels (pas d'impact sur l'hôte).
Get-VM | Get-VMNetworkAdapter | Where-Object { $_.SwitchName -eq "VLAN-DEMO" } | Set-VMNetworkAdapterVlan -Access -VlanId 10
Si vous voulez modifier la configuration uniquement sur une VM, utilisez cette syntaxe :
Set-VMNetworkAdapterVlan -VMName <Nom VM> -Access -VlanId <Vlan ID>
Set-VMNetworkAdapterVlan -VMName VM-WS-2022-01 -Access -VlanId 10
Pour annuler la configuration (comme si on décochait l'option), utilisez cette commande :
Set-VMNetworkAdapterVlan -VMName <Nom VM> -Untagged
Set-VMNetworkAdapterVlan -VMName VM-WS-2022-01 -Untagged
Vous pouvez afficher les paramètres de VLAN d'une VM avec la commande ci-dessous :
(Get-VMNetworkAdapter -VMName <Nom VM>).VlanSetting
(Get-VMNetworkAdapter -VMName VM-WS-2022-01).VlanSetting
# Exemple de sortie :
VMName VMNetworkAdapterName Mode VlanList
------ -------------------- ---- --------
VM-WS-2022-01 Carte réseau Access 10
Pour cibler directement la carte de gestion de l'Hyper-V (via le commutateur virtuel), il suffit de supprimer le nom de la VM et d'ajouter à la place le paramètre -ManagementOS. Voici un exemple :
Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "VLAN-DEMO" -Access -VlanId 10
Pour aller plus loin, sachez que vous pouvez configurer la carte réseau d'une machine virtuelle en mode TRUNK et spécifier la liste des VLAN autorisés. Ceci peut s'avérer utile si vous avez un applicatif ou un système spécifique (pare-feu, par exemple), dans la machine virtuelle, tout en ayant un seul lien réseau physique. Cette configuration s'effectue aussi à l'aide du cmdlet PowerShell Set-VMNetworkAdapterVlan.
VI. Conclusion
Suite à la lecture de chapitre, vous devriez être en mesure de configurer les VLAN en environnement Hyper-V, que ce soit sur l'interface réseau de l'hôte ou d'une machine virtuelle. Entre l'interface graphique et PowerShell, vous avez le choix, tout en sachant que PowerShell est très pratique pour ajuster en masse la configuration d'un ensemble de VM (si vous mettez en place la segmentation du réseau, par exemple).

Merci pour cet article ! J’ai appliqué la configuration et mis le port du switch connecté à l’hôte Hyper-V en trunk, mais les machines virtuelles ne peuvent communiquer que sur le VLAN de l’hôte Hyper-V.
Par exemple, si l’hôte est sur le VLAN 10, les VM configurées sur les VLAN 11, 12, 13 ou 14 ne peuvent pas joindre leur passerelle. En revanche, dès qu’elles sont placées sur le VLAN 10, la communication fonctionne.
Ai-je manqué quelque chose dans la configuration ?