Création d'un bridge pour QEMU/KVM avec NetworkManager et Libvirt

Afin de pouvoir bénéficier d'une connectivité sur un réseau d'entreprise (avec DHCP, DNS...etc), il est nécessaire que les machines virtuelles puissent "parler" sur le réseau. Par défaut, Libvirt crée un réseau de type NAT par défaut, ce qui ne convient pas l'usage décrit précédemment.

Si vous disposez d'un système GNU/Linux disposant de NetworkManager (ex: Fedora Server), il est tout à fait possible de créer un bridge qui va permettre aux machines virtuelles de communiquer sur le réseau de l'entreprise ou votre réseau home. Un bridge Linux est simplement une implémentation de switching Layer 2 au niveau du noyau Linux, il va faire le même travail qu'un vSwitch sur VMware ou un Hyper-V Switch.

Les noms des interfaces sont à adapter en fonction de votre configuration !

  • Création du bridge avec nmcli
sudo nmcli con add ifname virbr1 type bridge con-name virbr1
  • Ajout du bridge à l'interface physique :
sudo nmcli con add type bridge-slave ifname enp3s0 master virbr1
  • Éteignez votre interface physique
sudo nmcli con down "enp3s0"
  • Démarrez votre nouveau bridge
sudo nmcli con up virbr1

Une fois ces étapes accomplies, vous devriez voir votre bridge fonctionnel (ne pas hésiter à redémarrer le service NetworkManager) :

Il est également intéressant de déclarer ce bridge à Libvirt pour pouvoir l'utiliser plus facilement avec ce dernier :

  • Créer un fichier "virbr1.xml" : vim virbr1.xml
  • Ajouter le bout de code XML suivant :
<network>
  <name>virbr1</name>
  <forward mode="bridge"/>
  <bridge name="virbr1" />
</network>
  • Définissez le réseau à Libvirt : sudo virsh net-define virbr1.xml
  • Démarrez le réseau : sudo virsh net-start virbr1
  • Activer l'autostart du réseau au boot : sudo virsh net-autostart virbr1

Pour éditer des configurations réseaux (IP statique notamment), cela se fait au niveau du bridge ! Pensez à bien flush la configuration de votre interface physique.

That's it !