Retour : Proxmox VE

Principe

Proxmox utilise des bridges Linux (vmbr0, vmbr1…) comme commutateurs virtuels. Les cartes réseau des VM et des conteneurs se branchent sur un bridge, lui-même relié — ou non — à une carte physique de l'hôte.

                    Hôte Proxmox
 ┌──────────────────────────────────────────┐
 │  VM 100 (tap100i0) ─┐                    │
 │  VM 101 (tap101i0) ─┼── vmbr0 ── eno1 ───┼── Switch physique
 │  CT 200 (veth200i0)─┘                    │
 └──────────────────────────────────────────┘
Élément Exemple Rôle
Carte physique eno1, enp1s0 Lien vers le réseau physique
Bond bond0 Agrégation de plusieurs cartes physiques
Bridge vmbr0 Commutateur virtuel
Interface VLAN vmbr0.10 Adresse de l'hôte dans un VLAN donné

La configuration est stockée dans /etc/network/interfaces et appliquée par ifupdown2. Les modifications faites dans l'interface web sont d'abord préparées dans /etc/network/interfaces.new, puis appliquées avec Apply Configuration.


Configuration par défaut

Après l'installation, l'adresse d'administration est portée par le bridge vmbr0 :

auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0
iface vmbr0 inet static
        address 192.168.4.10/24
        gateway 192.168.4.1
        bridge-ports eno1
        bridge-stp off
        bridge-fd 0

Toutes les VM branchées sur vmbr0 sont alors sur le même réseau que l'hôte, sans VLAN.


VLAN

Rappels

Un VLAN (802.1Q) découpe un même réseau physique en réseaux logiques isolés, numérotés de 1 à 4094.

Mode du port de switch Trafic Usage
Accès Un seul VLAN, trames non étiquetées Poste, imprimante
Trunk Plusieurs VLAN, trames étiquetées Lien vers un hyperviseur, un autre switch
VLAN natif VLAN passant sans étiquette sur un trunk À choisir explicitement

Le port du switch relié à l'hôte Proxmox doit être en trunk et autoriser les VLAN des VM. Exemple Cisco :

Switch(config)# interface GigabitEthernet0/1
Switch(config-if)# description Uplink pve1
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport trunk allowed vlan 10,20,30
Switch(config-if)# switchport trunk native vlan 999

Bridge « VLAN aware »

Un seul bridge transporte tous les VLAN ; le VLAN de chaque VM est indiqué sur sa carte réseau (VLAN Tag). La VM ne voit aucune étiquette, comme sur un port d'accès.

Via interface graphique
  1. Nœud → System → Network → vmbr0 → Edit → cocher VLAN aware → OK.
  2. Apply Configuration.
  3. Sur une VM : Hardware → Network Device → Edit → VLAN Tag : 20.
Via fichier de configuration

Hôte administré dans le VLAN 10, bridge transportant les VLAN 2 à 4094 :

auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0
iface vmbr0 inet manual
        bridge-ports eno1
        bridge-stp off
        bridge-fd 0
        bridge-vlan-aware yes
        bridge-vids 2-4094

auto vmbr0.10
iface vmbr0.10 inet static
        address 192.168.10.5/24
        gateway 192.168.10.1
# Appliquer sans redémarrer
ifreload -a
VLAN d'une VM en ligne de commande
# Carte actuelle (noter l'adresse MAC)
qm config 100 | grep net0

# VLAN 20, en conservant l'adresse MAC
qm set 100 --net0 virtio=BC:24:11:12:34:56,bridge=vmbr0,tag=20

# Conteneur LXC
pct set 200 --net0 name=eth0,bridge=vmbr0,tag=20,ip=dhcp

⚠️ Sans l'adresse MAC dans la commande, Proxmox en génère une nouvelle : le bail DHCP réservé de la VM ne correspond plus.

⚠️ Passer l'adresse d'administration dans un VLAN étiqueté coupe l'accès si le switch n'est pas prêt : préparer le trunk d'abord et garder un accès console (écran / clavier, IPMI).


Agrégation de liens (bond)

Plusieurs cartes physiques réunies pour la redondance et/ou le débit.

Mode Switch Effet
active-backup Aucune configuration Une carte active, l'autre en secours
802.3ad (LACP) Port-channel LACP obligatoire Charge répartie sur les liens + redondance
balance-alb Aucune configuration Répartition adaptative, sans LACP
auto bond0
iface bond0 inet manual
        bond-slaves eno1 eno2
        bond-miimon 100
        bond-mode 802.3ad
        bond-xmit-hash-policy layer3+4

auto vmbr0
iface vmbr0 inet manual
        bridge-ports bond0
        bridge-stp off
        bridge-fd 0
        bridge-vlan-aware yes
        bridge-vids 2-4094

Vérifier l'état du bond :

cat /proc/net/bonding/bond0

Réseau isolé entre VM

Un bridge sans carte physique relie les VM entre elles, sans accès au réseau physique (laboratoire, réseau de test) :

auto vmbr1
iface vmbr1 inet manual
        bridge-ports none
        bridge-stp off
        bridge-fd 0

💡 Pour donner un accès Internet à ce réseau, une VM pare-feu (OPNsense, pfSense) avec une carte sur vmbr0 et une sur vmbr1 sert de routeur.


SDN (réseaux définis par logiciel)

Datacenter → SDN permet de définir les réseaux une seule fois pour tout le cluster :

Élément Rôle
Zone Type de réseau : Simple, VLAN, QinQ, VXLAN, EVPN
VNet Réseau virtuel, qui apparaît comme un bridge sur chaque nœud
Subnet Plage IP d'un VNet, avec passerelle et DHCP optionnels

Exemple : une zone VLAN sur vmbr0 et un VNet vm20 (tag 20) : les VM se branchent sur vm20 sans renseigner de tag elles-mêmes. Toujours terminer par Apply dans Datacenter → SDN.


Cartes réseau des VM

Modèle Usage
VirtIO (paravirtualized) Par défaut : le plus performant (pilote inclus dans Linux, ISO virtio-win pour Windows)
Intel E1000 / E1000E Compatibilité pour un système sans pilote VirtIO
Realtek RTL8139 Très anciens systèmes

Le pare-feu peut être activé carte par carte (case Firewall de la carte réseau), avec des règles propres à la VM : VM → Firewall.


Dépannage

Symptôme Pistes
VM sans réseau Bon bridge ? Pilote réseau présent dans l'invité ? Pare-feu de la VM ?
VM sans réseau dans un VLAN Bridge VLAN aware ? VLAN autorisé sur le trunk (show interfaces trunk côté Cisco) ?
Hôte injoignable après modification Accès console, vérifier /etc/network/interfaces, ifreload -a
Débit faible Carte E1000 ou Realtek au lieu de VirtIO
# Interfaces et état
ip -br link
ip -br addr

# VLAN autorisés sur chaque port du bridge
bridge vlan show

# Trafic d'une VM (VM 100, carte net0)
tcpdump -i tap100i0 -e -n

# Trames étiquetées sur la carte physique
tcpdump -i eno1 -e -n vlan

Étape suivante