Dawan Proxmox VE — TSSR

Chapitre 5 — SDN, pare-feu et sauvegarde

1. SDN : pourquoi, et comment il s'organise

Au chapitre 3, le réseau se construisait pont par pont : un vmbr sur chaque nœud, écrit à la main dans /etc/network/interfaces. Cela suffit sur un serveur seul. Mais maintenant que les trois nœuds forment un cluster, une nouvelle contrainte apparaît.

Un réseau virtuel utile doit exister à l'identique sur les trois nœuds. Sinon, une VM qui migre perd sa connectivité en changeant d'hôte.

C'est exactement ce que résout le SDN (Software-Defined Networking) de Proxmox VE. On déclare zones, VNets et subnets une seule fois, au niveau du Datacenter ; pmxcfs réplique la configuration sur tous les nœuds, et chaque Apply la transcrit en interfaces réseau réelles. C'est la raison pour laquelle le SDN est traité ici, une fois le cluster monté : c'est à plusieurs nœuds qu'il prend tout son sens.

Ce chapitre présente le SDN : à quoi il sert, comment il s'organise. Il détaille les deux zones les plus utiles, Simple et VXLAN (Virtual Extensible LAN, réseau de niveau 2 transporté sur IP). VXLAN est normalisé par une RFC (Request for Comments, document de norme de l'Internet), la 7348.

1.1 Pourquoi le SDN existe dans Proxmox

Les ponts classiques suffisent pour un seul hyperviseur. Mais une VM du nœud 1 doit parfois parler à une VM du nœud 3 comme sur un même commutateur, sans VLAN configuré à la main sur chaque nœud.

Le SDN déclare ce réseau une seule fois, au niveau du Datacenter, et Proxmox le reproduit sur tous les nœuds. Même sur un seul nœud, il crée simplement des réseaux isolés.

Dans la pile réseau de Proxmox, le pont vmbr0 reste le socle. La segmentation VLAN (chapitre 3) et le pare-feu (section 4) s'y ajoutent selon le besoin, et le SDN les orchestre.

Pile réseau Proxmox : bridge vmbr0, VLAN, firewall et SDN

Le SDN est inclus dans Proxmox VE depuis la version 8 : rien à installer. Sa configuration est rangée dans /etc/pve/sdn/ (zones.cfg, vnets.cfg, subnets.cfg), répliquée sur tous les nœuds par pmxcfs. Ces fichiers se lisent, ils ne s'éditent pas : on passe par l'interface ou par pvesh, sinon le prochain Apply écrase la modification.

1.2 Les trois objets fondamentaux du SDN

Le SDN Proxmox s'organise en trois niveaux hiérarchiques, du plus général au plus précis :

Composant Rôle
Zone Technologie de transport réseau utilisée (Simple, VLAN, VXLAN, EVPN — Ethernet Virtual Private Network)
VNet Réseau virtuel rattaché à une zone — équivalent d'un bridge classique
Subnet Plage d'adresses IP associée à un VNet (facultatif)
Hiérarchie SDN Proxmox : Zone (technologie de transport) contient des VNets (bridges virtuels), qui contiennent éventuellement des Subnets (plan d'adressage, passerelle, SNAT)

Les trois niveaux sont imbriqués : la zone contient le VNet, le VNet contient le subnet. Les invités se branchent sur un VNet comme sur un pont classique.

Les noms (zonedemo, vnetdemo) font huit caractères au maximum, sans tiret. Les objets, du contenant au contenu :

Terme Ce que c'est Exemple
Zone La technologie de transport : Simple (un nœud), VLAN, VXLAN (entre nœuds), EVPN zonetp, de type Simple
VNet Le réseau que voient les invités ; sur chaque nœud, un pont Linux à son nom vnettp
Subnet La plage d'adresses du VNet 10.10.100.0/24
Passerelle L'adresse du nœud dans le subnet, qui mène dehors 10.10.100.1
SNAT La traduction d'adresse qui fait sortir le subnet sous l'adresse du nœud Case SNAT du subnet
Invité Une VM ou un CT dont la carte est branchée sur le VNet CT 201 ct-sdn-test, en 10.10.100.50
Apply La commande qui transforme la configuration en ponts et en règles sur chaque nœud Datacenter → SDN → Apply ; pvesh set /cluster/sdn

Un VNet n'existe que dans une zone, un subnet que dans un VNet. D'où l'ordre zone, VNet, subnet à la création, et l'ordre inverse à la suppression. Tant que la configuration n'est pas appliquée, rien n'est créé sur les nœuds : c'est l'état pending.

Où voir le SDN sur votre cluster :

Notion Où la voir
Zones, VNets, subnets Datacenter → SDN : Zones, VNets (et leurs subnets) ; colonne State (pending avant l'Apply)
La configuration partagée /etc/pve/sdn/ : zones.cfg, vnets.cfg, subnets.cfg (se lisent, ne s'éditent pas)
Ce que l'Apply a construit /etc/network/interfaces.d/sdn ; le pont vnettp dans ip link
Le VNet d'un invité Sa carte réseau : Bridge = vnettp

1.3 Types de zones SDN : panorama

Le type d'une zone dit comment ses réseaux virtuels sont séparés les uns des autres, et comment ils passent d'un nœud à l'autre. Quatre types sont présentés ici.

Trois notions servent à les lire :

  • Niveau 2 (L2 : Layer 2) : le réseau Ethernet. Les machines s'y trouvent par leur adresse MAC, comme branchées sur un même commutateur. Niveau 3 (L3 : Layer 3) : le réseau IP, où des routeurs relient des réseaux différents.
  • Étiquette VLAN (tag) : le numéro ajouté à chaque trame Ethernet pour dire à quel réseau virtuel elle appartient. C'est la norme 802.1Q, vue au chapitre 3 (§2.1) : de 1 à 4094.
  • Encapsuler : emballer une trame dans un autre paquet pour la transporter, puis la déballer à l'arrivée.
Type Ce que c'est Ce qu'il exige du réseau physique Nœuds
Simple Un pont isolé, propre à chaque nœud. Les invités d'un même nœud se parlent ; rien ne sort du nœud. Rien 1
VLAN Chaque réseau virtuel reçoit son étiquette VLAN, posée sur un pont existant du nœud. Des commutateurs qui laissent passer ces VLAN 1 à N
VXLAN La trame Ethernet de l'invité est encapsulée dans un paquet IP (UDP) entre les nœuds : un réseau de niveau 2 tendu au-dessus d'un réseau de niveau 3. On parle de réseau superposé (overlay). Seulement que les nœuds se joignent en IP 2 et plus
EVPN Du VXLAN, dont les nœuds s'échangent automatiquement les adresses des invités par BGP, le protocole de routage qu'utilisent les opérateurs d'Internet, au lieu d'une liste de pairs écrite à la main. Un contrôleur BGP déclaré dans le SDN 2 et plus
Correspondance entre besoin et type de zone SDN : lab isolé vers Simple, segmentation vers VLAN, datacenter distribué vers VXLAN, routage inter-datacenters vers EVPN

Le type de zone selon le besoin. Un lab ou un réseau de développement isolé : Simple. La segmentation d'un réseau d'entreprise : VLAN.

Un réseau étendu entre des nœuds reliés en IP : VXLAN. Et quand il faut router entre plusieurs datacenters (DC : datacenter, centre de données), avec BGP (Border Gateway Protocol, protocole de routage entre réseaux) : EVPN, l'étape suivante après VXLAN.

La zone Simple est la seule qui ne demande ni pair ni réglage du réseau physique : c'est par elle que commence la pratique.

1.4 En pratique : créer, appliquer, étendre

Tout se fait dans Datacenter → SDN. On crée d'abord la zone (Zones → Add, type Simple), puis un VNet dans cette zone (VNets → Create), puis éventuellement un subnet avec sa passerelle et la case SNAT.

Rien n'existe sur les nœuds tant qu'on n'a pas cliqué sur Apply : les objets restent à l'état pending. Une fois appliqué, le VNet apparaît sur chaque nœud comme un pont, et une VM s'y branche en choisissant ce VNet comme Bridge de sa carte réseau.

À faire sur votre cluster : une zone Simple, puis sa suppression.

Dans l'interface web, menu Datacenter → SDN :

  1. Zones → Add → Simple : ID zonetp, IPAM pve, puis Add. L'IPAM (IP Address Management, gestion des adresses IP) pve est celle de Proxmox : elle tient la liste des adresses attribuées dans les subnets.
  2. VNets → Create : Name vnettp, Zone zonetp. Le champ Tag est grisé : une zone Simple n'a ni VLAN ni VXLAN.
  3. Sélectionnez vnettp, puis Subnets → Create : Subnet 10.10.200.0/24, Gateway 10.10.200.1, case SNAT cochée.
  4. Datacenter → SDN → Apply. Le tableau Status montre zonetp sur chacun des trois nœuds.

Dans le Shell du nœud 1 (interface web → votre nœud 1 → Shell) :

ip -br link show vnettp   # le pont du VNet, créé sur le nœud par l'Apply

Résultat attendu : vnettp UNKNOWN …. Le pont existe ; il est UNKNOWN tant qu'aucun invité n'y est branché. Avant l'Apply, la même commande répond Device "vnettp" does not exist.

On supprime ensuite dans l'ordre inverse de la création, car un subnet vit dans un VNet et un VNet dans une zone :

  1. sélectionnez vnettp → panneau Subnets → le subnet → Remove ;
  2. VNets → vnettp → Remove ;
  3. Zones → zonetp → Remove ;
  4. Datacenter → SDN → Apply.

Dans le Shell du nœud 1 :

ip -br link show vnettp   # le pont a-t-il disparu ?

Résultat attendu : Device "vnettp" does not exist. Le pont a disparu des nœuds.

Une zone VXLAN se crée de la même façon, avec la liste des adresses des nœuds (Peers). Un même réseau de niveau 2 est alors tendu entre les trois nœuds, et une VM qui migre garde sa connectivité. Les noms des zones et des VNets font huit caractères au plus, sans tiret.

À retenir : le SDN déclare les réseaux une seule fois, au niveau du Datacenter, et Proxmox les déploie sur tous les nœuds. Trois objets imbriqués : la zone (la technologie de transport), le VNet (le réseau des invités), le subnet (sa plage d'adresses) ; rien n'est créé avant l'Apply. Simple pour un réseau isolé par nœud, VXLAN pour un réseau tendu entre les nœuds.