rss logo

Configurer un trunk VLAN sur une VM Hyper-V

Illustration de la configuration d’un trunk VLAN sur Hyper-V

Sur un hyperviseur Microsoft Hyper-V, j’ai eu besoin de configurer un trunk VLAN sur une machine virtuelle utilisée comme routeur Linux. L’objectif était de permettre à cette VM de router le trafic entre d’autres machines virtuelles et des postes de travail externes situés sur différents sous-réseaux.

Cette configuration n’est pas directement exposée dans l’interface graphique standard de Hyper-V. Pour activer le trunk VLAN sur une carte réseau de VM, nous devons utiliser PowerShell — rassurez-vous, il n’y a que deux lignes.

Dans cet exemple, mon hôte Hyper-V fonctionne sous Windows Server 2019, mais la même approche devrait également s’appliquer aux versions plus récentes de Windows Server. Même si la VM est utilisée ici comme routeur Linux, cette configuration peut être utile dans toute situation où une machine virtuelle Hyper-V doit accéder à plusieurs VLANs.

Schéma d’architecture réseau

Dans cet exemple, une VM routeur Linux est connectée au commutateur virtuel Hyper-V au moyen d’un trunk VLAN. Une seconde machine virtuelle est placée sur le VLAN 10 et utilise la VM routeur Linux pour communiquer avec les autres réseaux.

💡 Note : Si les VLANs doivent accéder au réseau physique, le port du switch physique connecté à l’hôte Hyper-V doit également être configuré en mode trunk et autoriser les mêmes VLANs.

Architecture réseau Hyper-V avec un trunk VLAN, une VM routeur Linux et une machine virtuelle sur le VLAN 10
Architecture réseau Hyper-V utilisant un trunk VLAN connecté à une VM routeur Linux et à une machine virtuelle sur le VLAN 10.

Configuration du routeur Linux

💡 Note : Les commandes suivantes sont temporaires et servent principalement à des tests. Pour une configuration en production, vous devriez rendre cette configuration persistante en utilisant les fichiers de configuration réseau de votre distribution Linux, par exemple /etc/network/interfaces sur les systèmes basés sur Debian, ou une méthode de configuration réseau équivalente.

Sur la VM routeur Linux, nous devons d’abord activer la prise en charge des VLAN et le transfert IPv4. Dans cet exemple, l’interface trunk est eth0, et l’interface VLAN sera créée pour le VLAN 10.

  • Charger le module noyau 802.1Q et activer le transfert IPv4 :
root@host:~# modprobe 8021q
root@host:~# echo 1 > /proc/sys/net/ipv4/ip_forward

💡 Note : Le nom d’interface eth0.vlan10 est arbitraire. Une alternative courante est eth0.10.

  • Créer une sous-interface VLAN sur eth0 pour le VLAN 10 :
root@host:~# ip link add link eth0 name eth0.vlan10 type vlan id 10
  • Activer la nouvelle interface eth0.vlan10 :
root@host:~# ip link set eth0.vlan10 up
  • Attribuer une adresse IP à l’interface eth0.vlan10 :
root@host:~# ip addr add 192.168.10.254/24 dev eth0.vlan10

Activer le trunk VLAN sur Hyper-V

Maintenant que la VM routeur Linux est configurée, nous devons activer le trunk VLAN sur sa carte réseau Hyper-V. Ce paramètre n’est pas disponible dans l’interface graphique standard de Hyper-V ; il doit donc être configuré depuis une console PowerShell ouverte avec des droits administrateur.

  • Lister les cartes réseau rattachées à la machine virtuelle nommée router et récupérer l’adresse MAC de la carte sur laquelle vous souhaitez activer le trunk VLAN :
PS C:\ > Get-VMNetworkAdapter -VMName router

Name            IsManagementOs VMName  SwitchName MacAddress   Status IPAddresses
----            -------------- ------  ---------- ----------   ------ -----------
Network Adapter False          ROUTER  vSwitch1   0015DEADBEE5 {Ok}   {}
  • À partir de l’adresse MAC récupérée précédemment, activer le trunk VLAN sur la carte réseau de la VM :
PS C:\ > Get-VMNetworkAdapter -VMName router | Where-Object { $_.MacAddress -eq '0015DEADBEE5' } | Set-VMNetworkAdapterVlan -Trunk -AllowedVlanIdList 1-100 -NativeVlanId 1

💡 Note : Dans cet exemple, -AllowedVlanIdList 1-100 autorise les VLAN ID de 1 à 100 sur le trunk. La valeur -NativeVlanId 1 signifie que le trafic non tagué reçu par la carte réseau de la VM est associé au VLAN 1. Le trafic tagué correspondant aux VLANs indiqués dans -AllowedVlanIdList est transmis à la VM avec ses tags VLAN. Adaptez ces valeurs à votre propre architecture réseau.

Configurer l’accès VLAN sur la VM Hyper-V

Maintenant que le trunk VLAN est activé sur la VM routeur Linux, nous pouvons configurer une autre machine virtuelle afin qu’elle communique avec le routeur via le VLAN 10.

  • Ouvrir les paramètres de la machine virtuelle, aller dans la section Carte réseau, la connecter à vSwitch1, activer Activer l’identification LAN virtuel, puis définir l’ID VLAN sur 10 :
Paramètres de carte réseau d’une VM Hyper-V avec vSwitch1 sélectionné et l’ID VLAN 10 activé
Carte réseau d’une VM Hyper-V connectée à vSwitch1 avec l’ID VLAN 10 activé.

La machine virtuelle devrait maintenant pouvoir communiquer avec le routeur Linux via le VLAN 10.