SDN : IPAM et DHCP intégrés¶
Faites distribuer automatiquement des adresses IP aux VM et conteneurs d'un VNet, avec un suivi centralisé dans l'IPAM de Proxmox. Le DHCP intégré s'appuie sur dnsmasq, ne fonctionne qu'avec les zones Simple et reste en aperçu technologique en PVE 9.x (sa stabilisation est inscrite à la feuille de route). Usage conseillé : labs, réseaux de test isolés, environnements NAT. Pour la production, gardez votre DHCP d'entreprise sur une zone VLAN.
Exemple : zone Simple zlab, VNet vnetlab, subnet 10.99.0.0/24, passerelle 10.99.0.1 portée par chaque nœud, SNAT vers le réseau de management, plage DHCP 10.99.0.100 à 10.99.0.200.
Avant de toucher la prod
- Le besoin est compatible avec une zone Simple : réseau local à chaque nœud, sans uplink. Deux VM sur deux nœuds différents ne communiquent pas en niveau 2.
- Le sous-réseau
10.99.0.0/24n'existe nulle part ailleurs dans l'entreprise. - La ligne
source /etc/network/interfaces.d/*est présente à la fin de/etc/network/interfacessur tous les nœuds. - Accord du MSP : fonctionnalité en aperçu technologique, application SDN sur tout le cluster.
Étapes¶
1. Installer dnsmasq sur chaque nœud¶
apt update && apt install dnsmasq
systemctl disable --now dnsmasq # l'instance par défaut ne doit pas tourner
Proxmox lance une instance par zone (dnsmasq@zlab) au moment de l'application SDN.
2. Créer la zone, le VNet et le subnet¶
- Datacenter → SDN → Zones → Add → Simple. ID
zlab, IPAMpve. Cochez Advanced, puis automatic DHCP. - Datacenter → SDN → VNets → Create : nom
vnetlab, zonezlab. - Sélectionnez
vnetlab→ Subnets → Create : Subnet10.99.0.0/24, Gateway10.99.0.1, cochez SNAT. - Onglet DHCP Ranges : Start
10.99.0.100, End10.99.0.200. - Datacenter → SDN → Apply.
pvesh create /cluster/sdn/zones --zone zlab --type simple --ipam pve --dhcp dnsmasq
pvesh create /cluster/sdn/vnets --vnet vnetlab --zone zlab
pvesh create /cluster/sdn/vnets/vnetlab/subnets --type subnet \
--subnet 10.99.0.0/24 --gateway 10.99.0.1 --snat 1 \
--dhcp-range start-address=10.99.0.100,end-address=10.99.0.200
pvesh set /cluster/sdn # applique les changements en attente
Configuration générée dans /etc/pve/sdn/subnets.cfg :
3. Attacher une VM¶
VM 101 → Hardware → carte réseau → Bridge vnetlab. Une adresse est réservée dans l'IPAM quand la carte est ajoutée ou rattachée au VNet ; le mapping MAC → IP est poussé dans dnsmasq au démarrage de la VM. Dans l'invité, configurez l'interface en DHCP.
4. Consulter et ajuster l'IPAM¶
Datacenter → SDN → IPAM : liste des adresses par VNet (passerelle, VM, plages). Avec l'IPAM pve, vous pouvez modifier l'adresse d'une VM. L'invité doit ensuite renouveler son bail (redémarrage du réseau ou de la VM). Les plugins NetBox et phpIPAM se branchent à la place de pve (Datacenter → SDN → Options → IPAM), mais la modification des baux n'est supportée qu'avec l'IPAM pve.
Vérifications
systemctl status dnsmasq@zlab # active (running) sur chaque nœud
ls /etc/dnsmasq.d/zlab/ # fichiers générés, à ne pas éditer
cat /var/lib/misc/dnsmasq.zlab.leases # bail de la VM 101
ip addr show vnetlab # inet 10.99.0.1/24
pvesh get /cluster/sdn/ipams/pve/status # entrées IPAM (vnet, ip, mac, vmid)
10.99.0.100-200, passerelle 10.99.0.1, accès sortant fonctionnel grâce au SNAT.
Rollback
Détachez les VM du VNet (retour sur vmbr0), puis supprimez dans l'ordre subnet, VNet et zone, et appliquez (pvesh set /cluster/sdn). Les instances dnsmasq@zlab s'arrêtent. Vous pouvez désinstaller dnsmasq si aucune autre zone ne l'utilise.
Pièges vus en support
- Instance dnsmasq par défaut laissée active : conflit sur le port 53 ou 67,
dnsmasq@zlabne démarre pas. - Subnet sans passerelle : DHCP automatique inopérant.
- DHCP activé sur une zone VLAN : non supporté, aucune adresse distribuée.
- Personnalisation éditée dans
/etc/dnsmasq.d/zlab/: écrasée à la prochaine application. Utilisez un fichier séparé, par exemple90-custom.conf. - IP changée dans l'IPAM sans renouvellement de bail côté invité : la VM garde l'ancienne adresse.
- Zone Simple attendue comme réseau partagé entre nœuds : chaque nœud a son propre réseau isolé.
Quand ouvrir un ticket iTop
Demande d'activation sur un cluster de production, intégration NetBox ou phpIPAM, DHCP sur autre chose qu'une zone Simple : demande de service P4 au MSP. dnsmasq@<zone> en échec après application : P3. Joindre journalctl -u dnsmasq@zlab, le contenu de /etc/pve/sdn/ et la sortie de pvesh get /cluster/sdn/ipams/pve/status.