Cette page est en cours de rédaction.
Apportez votre aide…

libvirt

libvirt est le démon utilisé par virt-manager pour gérer les hyperviseurs qui font tourner les machines virtuelles

NAT IPv4, et routage IPv6 avec autoconfiguration d'adresse

Le support d'IPv6 dans libvirt dépend de la version de libvirt et dnsmasq. Cette configuration a été testé sous Debian 7 avec libvirt 1.1.4 et dnsmasq 2.68.
<network>
  <name>default</name>
  <uuid>#un identifiant#</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='#Une MAC#'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
  <ip family='ipv6' address='#L'IPv6 de l'hôte sur le réseau virbr0#' prefix='64'>
  </ip>
</network>

Explications :

  • En IPv4, dnsmasq fournira les adresses via le DHCP, avec les informations de passerelle par défaut, et configurera le routage dans IPTable sur l'hôte
  • En IPv6
    • le NAT n'existe pas, mais le fait de garder nat dans le forward mode configure dnsmasq pour faire du routage : il répond aux requêtes NDP des VM, et leur fourni une route par défaut pour sortir de leur lien local
    • Avec un préfixe en /64, les VM sont capables de déterminer automatiquement une adresse IP à partir de leur adresse MAC (autoconfiguration IPv6 sans état). Ceci remplace le dhcp, d'où l’absence de directive éponyme dans le second bloc <ip>

L'adresse IPv6 de l'hôte sur le réseau virbr0 une adresse arbitraire du réseau IPv6 attribuée par le FAI, mais sera différente de l'adresse de la carte réseau physique.

Serveur DHCP fixe

Ceci nécessite des connaissances en système et l'utilisation de la ligne de commande.

Préparation du système :

sudo mkdir /var/lib/libvirt/dnsmasq/
sudo touch /var/lib/libvirt/dnsmasq/default.hostsfile

Idée pour enregistrer l'association d'une IP avec une adresse MAC et le nom d'hôte de la machine :

vm_mac=
vm_ip=
vm_hostname=

CONF_libvirt_network="/etc/libvirt/qemu/networks/default.xml"
VAR_libvirt_network="/var/lib/libvirt/network/default.xml"
VAR_dnsmask="/var/lib/libvirt/dnsmasq/default.hostsfile"

for file in $CONF_libvirt_network $VAR_libvirt_network; do
	sudo sed -r -i "s@(^ +</dhcp>)@      <host mac=\"$vm_mac\" name=\"$vm_hostname\" ip=\"$vm_ip\" />\n\1@" $file
done
echo "$vm_mac,$vm_ip,$vm_hostname" | sudo tee -a $VAR_dnsmask >/dev/null

# Prise en compte par dnsmasq des nouveaux paramètres
sudo kill -HUP `pidof dnsmasq`
En ajoutant de la même façon le paramétrage dans /etc/hosts, on utilise la completion des noms en se connectant en ssh à la machine.

Contributeurs principaux : Id2ndR.

  • libvirt.txt
  • Dernière modification: Le 10/02/2014, 00:40
  • par Id2ndR