Commutateurs virtuels et réseaux de machines virtuelles
Chaque hyperviseur embarque un commutateur logiciel qui relie les cartes virtuelles des VM au réseau physique. Comprendre son fonctionnement et les modes de connexion évite les erreurs de conception et de sécurité.
Une machine virtuelle possède une ou plusieurs cartes réseau virtuelles. Celles-ci sont branchées sur un commutateur virtuel, composant logiciel de l'hyperviseur qui se comporte, pour l'essentiel, comme un commutateur Ethernet : il apprend des adresses MAC, transmet des trames et peut gérer des VLAN. Il est relié au réseau physique par une ou plusieurs cartes de l'hôte, appelées uplinks.
Objectif : comprendre le fonctionnement des commutateurs virtuels, choisir le bon mode de connexion pour une VM et éviter les pièges de sécurité. L'architecture globale d'un cluster est traitée dans Virtualisation réseau avec VMware ou Proxmox.
Les principales implémentations
| Plateforme | Commutateur virtuel | Particularités |
|---|---|---|
| Linux (KVM, Proxmox) | Pont Linux (bridge) | Intégré au noyau, simple, prise en charge des VLAN |
| Linux, OpenStack | Open vSwitch (OVS) | Commutateur programmable : OpenFlow, VXLAN, GRE, mise en miroir |
| Microsoft Hyper-V | Hyper-V Virtual Switch | Types externe, interne, privé ; extensions ; SET pour l'agrégation |
| VMware vSphere | vSS / vDS | Groupes de ports, politiques de sécurité par groupe |
Les modes de connexion d'une VM
Mode pont (bridged) ou externe
La carte virtuelle est connectée à un commutateur virtuel relié à une carte physique. La VM apparaît sur le réseau physique comme une machine à part entière, avec sa propre adresse MAC et sa propre adresse IP dans le sous-réseau du VLAN. C'est le mode standard pour les serveurs.
Mode NAT
L'hyperviseur crée un réseau privé et traduit les adresses des VM vers celle de l'hôte. Les VM accèdent à l'extérieur, mais ne sont pas joignables directement depuis le réseau (sauf redirection de port). Pratique sur un poste de travail ou un laboratoire ; rarement adapté à un serveur en production.
Réseau interne (hôte uniquement)
Les VM communiquent entre elles et avec l'hôte, sans accès au réseau physique. Utile pour un réseau d'administration local ou des tests.
Réseau privé
Les VM communiquent uniquement entre elles, sans même l'hôte. Idéal pour isoler un laboratoire ou simuler un segment.
| Mode | VM ↔ VM | VM ↔ hôte | VM ↔ réseau physique |
|---|---|---|---|
| Pont / externe | ✔ | ✔ (selon configuration) | ✔ |
| NAT | ✔ | ✔ | Sortant uniquement |
| Interne (host-only) | ✔ | ✔ | ✘ |
| Privé | ✔ | ✘ | ✘ |
Le pont Linux en pratique
# Créer un pont et y rattacher une carte physique (temporaire)
sudo ip link add br0 type bridge
sudo ip link set eno1 master br0
sudo ip link set br0 up
# Observer
bridge link show
bridge fdb show br br0 # table MAC du pont
bridge vlan show # VLAN autorisés par port (pont VLAN-aware)
Les cartes virtuelles des VM (interfaces tap ou vnet) sont ajoutées automatiquement au pont par l'hyperviseur. La configuration persistante se fait via Netplan, NetworkManager ou /etc/network/interfaces selon le système. Voir Administration réseau sous Linux.
Open vSwitch
Open vSwitch ajoute des fonctions de commutateur d'entreprise et la programmabilité :
sudo ovs-vsctl add-br br-int
sudo ovs-vsctl add-port br-int eno2
sudo ovs-vsctl add-port br-int vnet3 tag=20 # port d'accès VLAN 20
sudo ovs-vsctl show
sudo ovs-ofctl dump-flows br-int
Il est au cœur de nombreuses plateformes de cloud privé et de réseaux définis par logiciel, grâce aux tunnels VXLAN qui étendent des segments de niveau 2 au-dessus d'un réseau IP.
Hyper-V Virtual Switch
# Commutateur externe relié à une carte physique (avec SET sur deux cartes)
New-VMSwitch -Name "vSwitch-Prod" -NetAdapterName "NIC1","NIC2" -EnableEmbeddedTeaming $true -AllowManagementOS $true
# Commutateur interne et privé
New-VMSwitch -Name "vSwitch-Interne" -SwitchType Internal
New-VMSwitch -Name "vSwitch-Lab" -SwitchType Private
# Placer la carte d'une VM dans le VLAN 20
Set-VMNetworkAdapterVlan -VMName "srv-app01" -Access -VlanId 20
Get-VMNetworkAdapterVlan -VMName "srv-app01"
Le paramètre -AllowManagementOS crée une carte virtuelle pour l'hôte lui-même sur ce commutateur.
VLAN et commutateurs virtuels
Trois approches existent pour étiqueter le trafic des VM :
- Étiquetage par le commutateur virtuel (le plus courant) : la VM envoie des trames non étiquetées ; le port virtuel ou le groupe de ports ajoute l'étiquette VLAN. Côté physique, le port est un trunk.
- Étiquetage par la VM (Virtual Guest Tagging) : la VM gère elle-même plusieurs VLAN (cas d'un pare-feu virtuel). Le port virtuel doit alors laisser passer les trames étiquetées.
- Étiquetage externe : le port physique est en mode accès, donc un seul VLAN pour tout le commutateur virtuel. Simple mais peu souple.
Sécurité des commutateurs virtuels
Les plateformes proposent des contrôles à appliquer par défaut :
- Refus des changements d'adresse MAC et des trames forgées (MAC address changes, forged transmits sous vSphere ; MAC spoofing désactivé sous Hyper-V) : une VM ne doit pas pouvoir usurper une autre adresse MAC, sauf besoin explicite (cluster logiciel, appliance réseau).
- Mode promiscuité refusé : une VM ne doit pas recevoir le trafic des autres, sauf sonde de supervision dûment autorisée.
- DHCP Guard et Router Guard (Hyper-V) : empêchent une VM de se comporter en serveur DHCP ou en routeur annonçant des RA.
- Segmentation : chaque VM dans le VLAN correspondant à son rôle ; filtrage entre VLAN par un pare-feu, éventuellement distribué.
Diagnostiquer
- La VM a-t-elle une adresse MAC apprise sur le commutateur virtuel et sur le commutateur physique ?
- Le VLAN de la VM est-il autorisé sur le trunk physique de l'hôte ?
- La carte physique de l'hôte (uplink) est-elle active et liée au bon commutateur ?
- Après une migration, le commutateur physique a-t-il mis à jour sa table MAC ? Les hyperviseurs envoient normalement des trames de notification (RARP ou ARP gratuit) pour cela.
- Une politique de sécurité bloque-t-elle une appliance qui doit changer d'adresse MAC ?
Sous vSphere, esxcli network vm list et esxtop (vue réseau) ; sous Hyper-V, Get-VMNetworkAdapter ; sous Linux, bridge fdb et tcpdump -ni vnet3.
Erreurs courantes
- VLAN non autorisé sur le trunk physique de l'un des hôtes : la VM perd le réseau après une migration vers cet hôte.
- Laisser le mode promiscuité ou l'usurpation MAC activés partout.
- Utiliser le mode NAT pour des serveurs censés être joignables.
- Créer une boucle en reliant deux cartes physiques à un pont sans agrégation ni STP.
Conclusion
Le commutateur virtuel est un commutateur à part entière : il faut le concevoir, le sécuriser et le documenter comme tel. Choisissez le mode de connexion adapté à chaque VM, étiquetez les VLAN de manière cohérente et appliquez les politiques de sécurité par défaut. Pour les conteneurs, le même raisonnement s'applique : voir Réseaux de conteneurs et Docker.


