Chapitre 519 minIntermédiaire
Réseau virtuel Proxmox : bridge Linux, VLAN et SDN
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- expliquer les modes réseau d'un hyperviseur de poste ;
- configurer un pont Linux sensible aux VLAN avec un agrégat LACP ;
- placer une VM dans le bon VLAN et configurer le trunk du switch ;
- décrire les zones et les VNets du SDN de Proxmox.
4 exercices corrigés1 schéma
Le réseau virtuel relie les cartes réseau des machines virtuelles entre elles et au réseau physique : sous Proxmox VE, c'est un pont Linux (bridge), un commutateur logiciel à l'intérieur de l'hôte, sur lequel chaque VM branche sa carte virtuelle, avec ou sans étiquette VLAN. Ce chapitre part des modes réseau d'un hyperviseur de poste, explique le pont vmbr0, configure un pont sensible aux VLAN avec l'agrégation de liens comme chez Sorbier, et présente le SDN de Proxmox.
Les modes réseau d'un hyperviseur de poste
Sur ton PC, VirtualBox te demande de choisir le mode d'accès réseau de chaque carte de VM. Ces modes existent, sous d'autres noms, dans tous les hyperviseurs : les comprendre aide à comprendre un serveur.
| Mode VirtualBox | Ce que voit la VM | La VM joint Internet | Le réseau local joint la VM | Usage |
|---|---|---|---|---|
| NAT | Un petit réseau privé, propre à cette VM, derrière l'hôte | Oui | Non (sauf redirection de port) | Installer et mettre à jour une VM seule |
| Réseau NAT | Un réseau privé partagé par plusieurs VM, derrière l'hôte | Oui | Non | Plusieurs VM qui se parlent et sortent sur Internet |
| Accès par pont (bridged) | Le réseau physique, comme si la VM y était branchée | Oui | Oui | Une VM qui doit être vue comme une vraie machine |
| Réseau interne | Un réseau isolé entre les VM qui ont le même nom de réseau | Non | Non | Un laboratoire fermé, derrière un pfSense virtuel |
| Réseau privé hôte | Un réseau entre les VM et l'hôte seulement | Non | Non | Administrer les VM depuis le PC, sans exposition |
Un hyperviseur de serveur n'a pas besoin de tous ces modes : il fonctionne presque toujours en accès par pont, et c'est le découpage en VLAN qui isole les réseaux. Le mode « réseau interne » correspond à un pont sans carte physique ; le NAT, à une zone SDN avec traduction d'adresses (voir plus bas).
Le pont Linux, commutateur virtuel de l'hôte
Un pont (bridge) Linux se comporte comme un switch : il apprend les adresses MAC des machines qui y sont branchées et transmet les trames de port en port. Sur Proxmox VE, l'installateur crée un pont nommé vmbr0, relié à la carte physique choisie pendant l'installation, et lui donne l'adresse IP d'administration. Chaque VM y branche sa carte virtuelle, qui apparaît sur l'hôte comme une interface tap177i0 (VM 177, carte 0).
La configuration réseau de l'hôte est dans le fichier /etc/network/interfaces, au format ifupdown2. Juste après l'installation de pve1, il ressemble à ceci :
auto lo
iface lo inet loopback
iface eno1 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.10.213/28
gateway 192.168.10.222
bridge-ports eno1
bridge-stp off
bridge-fd 0
eno1 n'a pas d'adresse (inet manual) : c'est un simple port du pont. bridge-ports eno1 branche la carte physique sur le pont ; bridge-stp off désactive le Spanning Tree sur ce pont (le réseau physique s'en charge) ; bridge-fd 0 supprime le délai d'attente avant de transmettre.
On modifie ce fichier de deux façons :
- dans l'interface : sélectionne le nœud, System > Network, puis Create (Linux Bridge, Linux Bond, Linux VLAN) ou Edit. Les changements sont écrits dans
/etc/network/interfaces.new; ils ne s'appliquent qu'au clic sur Apply Configuration ; - en ligne de commande : modifie le fichier, puis applique sans redémarrer avec
ifreload -a.
Le pont sensible aux VLAN
Chez Sorbier, les VM appartiennent à plusieurs VLAN : les serveurs au VLAN 20, le serveur web au VLAN 60 (DMZ), un serveur de tests au VLAN 10. Créer un pont par VLAN fonctionne, mais devient vite ingérable. La bonne méthode est un pont sensible aux VLAN (VLAN aware) : un seul pont, relié au switch par un trunk 802.1Q, et un numéro de VLAN indiqué sur chaque carte de VM.
Le pont étiquette les trames de chaque VM avec le numéro de VLAN de sa carte avant de les envoyer sur le trunk, et ne lui remet que les trames de son VLAN. Pour la VM, rien ne change : elle ne voit pas d'étiquette, comme un poste branché sur un port d'accès. Seule exception chez Sorbier : la VM pfSense, qui route entre les VLAN, reçoit le trunk entier et crée elle-même ses interfaces VLAN (installer pfSense sur Proxmox VE et interfaces et VLAN sur pfSense).
Le plan réseau des hôtes de Sorbier
Chaque hôte de Sorbier a trois cartes 10 Gbit/s :
| Interface | Rôle | Configuration côté hôte | Configuration côté switch |
|---|---|---|---|
eno1, eno2 | Trafic des VM et administration | Agrégées en bond0 (LACP), port du pont vmbr0 sensible aux VLAN | Port-channel en trunk : VLAN 10, 20, 30, 40, 50, 60, 99 ; VLAN natif 999 |
vmbr0.99 | Administration de l'hôte (interface web, SSH, cluster) | 192.168.10.213/28 (pve1), .214 (pve2), .215 (pve3), passerelle 192.168.10.222 | Transporté par le trunk |
eno3 | Stockage (NFS vers TrueNAS, sauvegardes vers Proxmox Backup Server) | 192.168.10.242/28 (pve1), .243 (pve2), .244 (pve3), sans passerelle | Port d'accès du VLAN 80, non routé |
Les VLAN et leurs réseaux sont ceux du cours Routage et commutation, auxquels Sorbier ajoute le VLAN 21 des applications internes et de la recette, et le VLAN 80 de stockage :
| VLAN | Nom | Réseau | Passerelle | Dans ce cours |
|---|---|---|---|---|
| 10 | POSTES | 192.168.10.64/26 | .126 | Un poste de test virtuel |
| 20 | SERVEURS | 192.168.10.176/28 | .190 | srv-ad .177, srv-fichiers .178, srv-gestion .179, srv-journaux .180, srv-ad2 .181 |
| 21 | APPLIS | 192.168.21.0/24 | .254 (pare-feu) | ct-horaires .182, srv-recette .186 |
| 60 | DMZ | 192.168.10.224/28 | .238 (pare-feu) | srv-web .225 |
| 80 | STOCKAGE | 192.168.10.240/28 | Aucune | TrueNAS .241, hôtes .242 à .244, Proxmox Backup Server .245 |
| 99 | ADMIN | 192.168.10.208/28 | .222 | Poste d'administration .209, bastion .210, hôtes .213 à .215 |
Configurer le pont, l'agrégat et l'administration
Voici le fichier /etc/network/interfaces complet de pve1 :
auto lo
iface lo inet loopback
iface eno1 inet manual
iface eno2 inet manual
# Stockage : NFS vers TrueNAS, sauvegardes vers PBS (VLAN 80, non routé)
auto eno3
iface eno3 inet static
address 192.168.10.242/28
# Agrégat LACP vers SW-COEUR
auto bond0
iface bond0 inet manual
bond-slaves eno1 eno2
bond-miimon 100
bond-mode 802.3ad
bond-xmit-hash-policy layer2+3
# Pont des VM, sensible aux VLAN
auto vmbr0
iface vmbr0 inet manual
bridge-ports bond0
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes
bridge-vids 10 20 30 40 50 60 99
# Administration de l'hôte dans le VLAN 99
auto vmbr0.99
iface vmbr0.99 inet static
address 192.168.10.213/28
gateway 192.168.10.222
Ce qu'il faut comprendre, ligne par ligne :
bond0agrègeeno1eteno2en mode 802.3ad, c'est-à-dire LACP : le switch et l'hôte négocient l'agrégat, le trafic se répartit sur les deux liens, et la panne d'un câble ne coupe rien.bond-miimon 100vérifie l'état des liens toutes les 100 ms ;layer2+3répartit les flux selon les adresses MAC et IP. Le fonctionnement de LACP est dans le cours Routage et commutation ;vmbr0n'a plus d'adresse : c'est un pur commutateur.bridge-vlan-aware yesactive les VLAN ;bridge-vidslimite les VLAN autorisés sur le pont à ceux qui existent chez Sorbier ;vmbr0.99est une interface du pont dans le VLAN 99 : c'est elle qui porte l'adresse d'administration de l'hôte. Dans l'interface web, elle se crée avec Create > Linux VLAN, nomvmbr0.99.
Applique avec ifreload -a, puis vérifie :
ip -br address # vmbr0.99 et eno3 ont leurs adresses
cat /proc/net/bonding/bond0 # mode 802.3ad, les deux liens « up », même partenaire LACP
bridge vlan show # les VLAN autorisés sur bond0 et sur chaque tap de VM
La carte réseau d'une VM
Dans l'onglet Hardware d'une VM, la carte réseau (Network Device) a quatre réglages importants :
| Réglage | Valeur chez Sorbier | Rôle |
|---|---|---|
| Bridge | vmbr0 | Le pont sur lequel la carte est branchée |
| VLAN Tag | 20 pour un serveur, 60 pour la DMZ | Le VLAN de la VM ; vide, la VM sort sans étiquette |
| Model | VirtIO (paravirtualized) | La carte la plus performante ; Intel E1000 seulement pour un système sans pilote VirtIO |
| Firewall | Coché | Active le pare-feu de Proxmox sur cette carte (chapitre 11) |
En ligne de commande, la même carte s'écrit virtio,bridge=vmbr0,tag=20,firewall=1 :
qm set 179 --net0 virtio,bridge=vmbr0,tag=20,firewall=1
Le côté du switch
Le trunk doit transporter exactement les VLAN déclarés dans bridge-vids. Sur le switch de cœur, les hôtes sont branchés sur les ports à 10 Gbit/s du module d'extension (Te1/1/x, voir le cours Routage et commutation). Pour pve1 (ports Te1/1/3 et Te1/1/4 en LACP, port Te1/1/5 pour le stockage) :
SW-COEUR(config)# vlan 80
SW-COEUR(config-vlan)# name STOCKAGE
SW-COEUR(config-vlan)# exit
SW-COEUR(config)# interface range TenGigabitEthernet1/1/3 - 4
SW-COEUR(config-if-range)# description pve1 bond0
SW-COEUR(config-if-range)# channel-group 11 mode active
SW-COEUR(config-if-range)# exit
SW-COEUR(config)# interface Port-channel11
SW-COEUR(config-if)# description pve1 trunk des VM
SW-COEUR(config-if)# switchport mode trunk
SW-COEUR(config-if)# switchport trunk native vlan 999
SW-COEUR(config-if)# switchport trunk allowed vlan 10,20,21,30,40,50,60,99
SW-COEUR(config-if)# switchport nonegotiate
SW-COEUR(config-if)# spanning-tree portfast edge trunk
SW-COEUR(config-if)# exit
SW-COEUR(config)# interface TenGigabitEthernet1/1/5
SW-COEUR(config-if)# description pve1 stockage
SW-COEUR(config-if)# switchport mode access
SW-COEUR(config-if)# switchport access vlan 80
SW-COEUR(config-if)# spanning-tree portfast edge
Le VLAN 80 n'a pas de SVI sur le switch : il n'est pas routé. Le VLAN 60 (DMZ) traverse le switch en niveau 2 seulement, sans SVI non plus, pour que le pare-feu reste la seule passerelle de la DMZ : une VM de la DMZ ne peut joindre le reste du réseau qu'à travers lui. Les commandes de trunk, de VLAN natif et d'EtherChannel sont expliquées dans le cours Routage et commutation.
Le SDN de Proxmox : zones et VNets
Quand le cluster grandit, déclarer les mêmes ponts et les mêmes tags sur chaque nœud devient fastidieux. Le SDN (Software-Defined Networking) de Proxmox VE, installé par défaut, décrit le réseau une fois pour tout le cluster, dans Datacenter > SDN :
| Objet | Rôle | Exemple chez Sorbier |
|---|---|---|
| Zone | Une technique de séparation des réseaux, et les nœuds où elle s'applique | Zone sorbier de type VLAN, sur le pont vmbr0 de tous les nœuds |
| VNet | Un réseau virtuel de la zone, que les VM choisissent comme Bridge | VNet serveurs (tag 20), VNet dmz (tag 60) |
| Subnet | Le réseau IP d'un VNet, avec sa passerelle | 192.168.10.176/28, passerelle 192.168.10.190 |
Les types de zones :
| Type | Principe | Usage |
|---|---|---|
| Simple | Un pont isolé sur chaque nœud, sans lien physique, avec traduction d'adresses (SNAT) et DHCP intégré en option | Un laboratoire fermé, l'équivalent du « réseau NAT » de VirtualBox |
| VLAN | Des VLAN sur un pont existant | Le cas de Sorbier |
| QinQ | Des VLAN empilés (802.1ad) | Les hébergeurs, qui transportent les VLAN de plusieurs clients |
| VXLAN | Des réseaux de niveau 2 encapsulés dans UDP, entre nœuds qui ne partagent pas de VLAN | Des nœuds dans plusieurs salles ou centres de données |
| EVPN | VXLAN avec routage BGP entre les nœuds | Les grands clusters |
Une fois la zone et les VNets créés, clique sur Apply dans Datacenter > SDN : Proxmox écrit la configuration sur tous les nœuds. Les VM choisissent alors le VNet serveurs au lieu de vmbr0 avec le tag 20. Deux avantages : impossible de se tromper de numéro de VLAN, et on peut déléguer un VNet à un groupe (rôle PVESDNUser) : un stagiaire ne pourra brancher ses VM que sur le VNet de test. Depuis la version 9.0, le SDN gère aussi des fabrics (OpenFabric, OSPF) pour relier les nœuds entre eux, par exemple pour un réseau Ceph maillé.
Exercices
Exercice 1 sur 4 Le fichier de pve2 Réussi À revoir
Écris le fichier /etc/network/interfaces de pve2, sur le modèle de pve1, avec ses adresses : .214 dans le VLAN 99 et .243 dans le VLAN 80.
Voir la réponseMasquer la réponse de l'exercice 1
auto lo
iface lo inet loopback
iface eno1 inet manual
iface eno2 inet manual
auto eno3
iface eno3 inet static
address 192.168.10.243/28
auto bond0
iface bond0 inet manual
bond-slaves eno1 eno2
bond-miimon 100
bond-mode 802.3ad
bond-xmit-hash-policy layer2+3
auto vmbr0
iface vmbr0 inet manual
bridge-ports bond0
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes
bridge-vids 10 20 30 40 50 60 99
auto vmbr0.99
iface vmbr0.99 inet static
address 192.168.10.214/28
gateway 192.168.10.222
Seules les deux adresses changent. Une seule passerelle par défaut pour l'hôte, dans le VLAN 99 : le réseau de stockage n'en a pas.
Tu avais trouvé ?
Exercice 2 sur 4 La VM qui ne joint rien Réussi À revoir
La nouvelle VM 180 (srv-journaux, 192.168.10.180/28, passerelle 192.168.10.190) ne joint ni sa passerelle ni srv-ad. Sa carte est virtio,bridge=vmbr0,firewall=1. Le trunk du switch vers son hôte est conforme à celui de pve1.
- Dans quel VLAN la VM se trouve-t-elle en réalité ?
- Corrige sa carte, avec la commande
qm.
Voir la réponseMasquer la réponse de l'exercice 2
- La carte n'a pas d'étiquette : les trames sortent sans tag et le switch les place dans le VLAN natif 999, qui ne contient aucune machine. La VM est isolée.
qm set 180 --net0 virtio,bridge=vmbr0,tag=20,firewall=1. Attention : sans précisermacaddr=, la commande attribue une nouvelle adresse MAC à la carte ; pour garder l'ancienne, recopie-la depuisqm config 180(ou modifie seulement le champ VLAN Tag dans Hardware).
Tu avais trouvé ?
Exercice 3 sur 4 Le VLAN oublié Réussi À revoir
Sorbier crée le VLAN 70 pour des serveurs de vidéosurveillance virtualisés. Une VM avec le tag 70 n'a aucun réseau, alors que le VLAN 70 existe sur le switch et qu'une SVI lui a été donnée. Cite les deux endroits à corriger, avec la modification.
Voir la réponseMasquer la réponse de l'exercice 3
- Sur chaque hôte :
bridge-vidsne contient pas 70, le pont rejette donc les trames de ce VLAN. Ajoute 70 à la lignebridge-vidsdevmbr0sur les trois nœuds, puisifreload -a. - Sur le switch : la liste des VLAN autorisés du trunk ne contient pas 70. Sur chaque
Port-channelvers un hôte :switchport trunk allowed vlan add 70(avecadd, sinon la commande remplace la liste et coupe tous les autres VLAN).
Tu avais trouvé ?
Exercice 4 sur 4 Quel mode réseau ? Réussi À revoir
Pour chaque besoin de TP sous VirtualBox, choisis le mode d'accès réseau.
- Une VM Debian seule doit télécharger ses mises à jour.
- Un pfSense virtuel protège trois VM qui ne doivent jamais toucher le réseau de la salle.
- Le serveur web d'une VM doit être consulté par tes camarades depuis leurs postes.
Voir la réponseMasquer la réponse de l'exercice 4
- NAT : la VM sort sur Internet par l'hôte, personne ne la joint.
- Les trois VM en réseau interne (même nom de réseau), avec la carte LAN de pfSense dans ce même réseau interne ; la carte WAN de pfSense en NAT (ou en accès par pont) pour sortir.
- Accès par pont : la VM obtient une adresse du réseau de la salle et se comporte comme un poste de plus. Vérifie que la charte de la salle l'autorise.
Tu avais trouvé ?