Changer le réseau par défaut libvirt

libvirtd crée par défaut un réseau de type nat, c'est a dire qu'en plus de faire le café, libvirt lance automatiquement un serveur DHCP sur ce réseau, mais aussi insere des règles de firewall qui ont la facheuse tendance a ne pas cohabiter avec les règles existantes.

Du coup si vous voulez remplacer le réseau par défaut par un ou vous gérez vous mêmes vos regles de firewall/NAT, ce guide est fait pour vous. On va remplacer le réseau par defaut de type NAT par un réseau de type bridge. Il faut gérer manuellement la création du bridge ainsi que les regles de firewall

Detruire l'ancien réseau par défaut

# virsh net-destroy default
# virsh net-undefine default

Definir notre nouveau réseau libvirt par défaut

Créer les interfaces nécessaires

Pour ne pas que votre bridge change d'adresse MAC (il prend l'adresse MAC de la première interface intégrée dans le bridge) nous allons définir une interface dummy avec MAC connue et fixe.

Génération d'adresse MAC

Pour générer une adresse MAC aléatoire conforme à ce qu'attend libvirt pour du KVM (52:54:00:xx:xx:xx) :

$ hexdump -vn3 -e '/3 "52:54:00"' -e '/1 ":%02x"' -e '"\n"' /dev/urandom

Notez cette adresse MAC que nous allons réutiliser dans la suite (52:54:00:78:f9:8c pour nous)

Pour du Xen il aurait fallu générer une adresse MAC en 00:16:3e:xx:xx:xx

Création des interfaces dummy et bridge

Nous utiliserons une interface bridge nommee virbr0, adapter la suite si vous souhaitez modifier le nom. Idem pour notre sous réseau ip associé 192.168.123.0/24.

Sous Debian (stretch) nous définirons ces interfaces dans le fichier /etc/network/interfaces.d/libvirt avec le contenu suivant :

auto virbr0-dummy
iface virbr0-dummy inet manual
    pre-up /sbin/ip link add virbr0-dummy type dummy
    up /sbin/ip link set virbr0-dummy address 52:54:00:78:f9:8c
    down /sbin/ip link del virbr0-dummy

auto virbr0
iface virbr0 inet static
    bridge_ports virbr0-dummy
    bridge_stp on
    bridge_fd 2
    address 192.168.123.1
    netmask 255.255.255.0

ces interfaces seront automatiquement activées lors du prochain redémarrage, mais pour les activer manuellement pour l'instant sans redémarrer :

# ifup virbr0-dummy

On peut vérifier la configuration obtenue avec un petit “ip a s virbr0” comme dans l'exemple suivant :

# ip a s virbr0
13: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:78:f9:8c brd ff:ff:ff:ff:ff:ff
    inet 192.168.123.1/24 brd 192.168.123.255 scope global virbr0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe78:f98c/64 scope link 
       valid_lft forever preferred_lft forever

Definir réellement notre nouveau réseau libvirt par défaut

  • Créer le fichier XML de définition du réseau (par exemple /tmp/default-network.xml) avec le contenu suivant :
    <network>
      <name>default</name>
      <forward mode='bridge'/>
      <bridge name='virbr0' />
    </network>
  • Définir ce réseau, le démarrer et activer son autodémarrage :
    # virsh net-define /tmp/default-network.xml
    # virsh net-start default
    # virsh net-autostart default

On peut vérifier a l'aide de la commande “virsh net-list” que tout est conforme, comme par exemple :

# virsh net-list
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              active     yes           yes
Si vous souhaitez continuer à utiliser dnsmasq pour gérer le NDS/DHCP sur ce réseau par exemple, n'oubliez pas de l'installer completement : service et configuration globale :
# apt-get install dnsmasq

Il reste ensuite à le configurer pour n'écouter que sur cette interface virbr0

Références

sysadmin/virtualisation/libvirt/default_network.txt · Dernière modification: 2019/03/07 16:50 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0