Configuration réseau d'une machine virtuelle KVM sur Proxmox

Si la configuration réseau d'un container LXC peut s'effectuer directement depuis l'interface web de Proxmox VE, il est était nécessaire (et pénible) de la réaliser via la console NoVNC pour les machines virtuelles KVM tournant sous Debian/Ubuntu.

Nous allons voir dans ce tutoriel, comment configurer le réseau d'une machine virtuelle KVM en utilisant qemu-nbd, qui permet de monter le disque d'une VM et donc d'accéder directement aux fichiers de configuration des interfaces réseau.
Si la procédure peut sembler longue pour configurer une seule VM, il sera tout à fait possible de l'automatiser avec un script bash par la suite.

PS : Alors que j'écris ces lignes, le module cloud-init a déjà fait son apparition sur Proxmox VE 5.1, et représentera très probablement une excellente alternative à la solution présentée dans cette article. Mais cela fera sûrement l'objet d'un autre article.

Installer le client nbd

Pour commencer, il faut installer le client nbd sur votre serveur Proxmox.

apt-get update && apt-get install nbd-client -y

Puis charger le module :

modprobe nbd max_part=16

Et enfin, pour rendre la configuration persistente, on utilise :

echo "nbd" >> /etc/modules
cat > /etc/modprobe.d/nbd.conf <<\EOT

options nbd max_part=16

EOT

Monter le disque d'un VM avec qemu-nbd

Cas d'une machine virtuelle sans LVM

Pour monter le disque d'une VM, on utilise qemu-nbd :

qemu-nbd -c  /dev/nbd0 vm-101* -f raw

vm-101 correspond à l'ID de la machine virtuelle dans Proxmox.

On créer ensuite un dossier dans lequel nous allons pouvoir monter le disque de la machine virtuelle :

mkdir /mnt/ma-vm 
mount /dev/nbd0p1 /mnt/ma-vm

Cas d'une machine virtuelle avec LVM

Dans le cas d'un LVM, il n'est pas possible de monter directement la partition car il faut pour cela connaître le nom du volume group qui contient les fichiers de configuration.

La procédure pour monter le disque est quasiment la même que précédemment :

qemu-nbd -c  /dev/nbd0 vm-101*

Mais cette fois-ci on utilise vgscan pour détecter les volume groups disponibles

vgscan

On obtient alors la liste des volume group et on active le volume auquel on souhaite accéder :

vgchange -a y vp-vg

Nous pouvons alors monter le VG :

mkdir /mnt/ma-vm
mount /dev/vp-vg/root /mnt/ma-vm

Configurer l'interface réseau

Maintenant que le disque de notre machine virtuelle est monté dans le répertoire /mnt/ma-vm, nous pouvons modifier la configuation de ses interfaces réseau.
On se déplace à la racine du disque :

cd /mnt/ma-vm/

Et nous pouvons modifier directement le fichier /etc/network/interfaces dans le cas d'une machine virtuelle tournant sous Debian ou Ubuntu (exemple avec Ubuntu 16.04 LTS sur un serveur dédié OVH) :

cat > etc/network/interfaces << EOF

auto ens18
iface ens18 inet static
        address IP.FAIL.OVER
        netmask 255.255.255.255
        broadcast IP.FAIL.OVER
        post-up route add IP.SERVEUR.DEDIE.254 dev ens18
        post-up route add default gw IP.SERVEUR.DEDIE.254
        pre-down route del IP.SERVEUR.DEDIE.254 dev ens18
        pre-down route del default gw IP.SERVEUR.DEDIE.254
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 213.186.33.99

iface ens18 inet6 static
       address IP:V6:FAIL:OVER
       netmask 64
       post-up /sbin/ip -f inet6 route add XXXX:XXXX:XXX:XXff:ff:ff:ff:ff dev ens18
       post-up /sbin/ip -f inet6 route add default via XXXX:XXXX:XXX:XXff:ff:ff:ff:ff
       pre-down /sbin/ip -f inet6 route del XXXX:XXXX:XXX:XXff:ff:ff:ff:ff dev ens18
       pre-down /sbin/ip -f inet6 route del default via XXXX:XXXX:XXX:XXff:ff:ff:ff:ff

EOF

Terminer la configuration

Une fois la modification terminée, nous pouvons démonter le disque de la VM.

Sans LVM

Sans LVM, la méthode est la même que pour monter le disque

cd ..
umount /dev/nbd0p1
qemu-nbd -d /dev/nbd0
rm -r /mnt/ma-vm

Avec LVM

Avec LVM, il faut utiliser à nouveau vgchange de désactiver le volume group :

cd ..
umount /dev/vp-vg/root
vgchange -a n vp-vg
qemu-nbd -d /dev/nbd0
rm -r /mnt/ma-vm

Dernière étapes, redémarrer la machine virtuelle pour appliquer les modificiations. J'espère que cet article vous aidera à automatiser un peu plus vos création de machines virtuelles.

Commentaires

licence creative common

L’ensemble des articles publiés sur jesuisadmin.fr sont mis à disposition
selon les termes de la licence CC BY-NC-SA 4.0.

Article précédent Article suivant