Si vous ne voulez pas faire de configuration à l'intérieur de l'invité, la seule option est un serveur DHCP qui distribue des adresses IP statiques. Si vous utilisez le bridge
mode, ce sera probablement un serveur DHCP externe. Consultez son manuel pour savoir comment servir les baux statiques.
Mais au moins dans les modes avancés nat
ou route
, vous pouvez utiliser la fonction intégrée de libvirt dnsmasqd
(les versions plus récentes de libvirtd prennent en charge l'option "dhcp-hostsfile" du dnsmasq). Voici comment:
Tout d'abord, recherchez les adresses MAC des machines virtuelles auxquelles vous souhaitez attribuer des adresses IP statiques:
virsh dumpxml $VM_NAME | grep 'mac address'
Puis éditez le réseau
virsh net-list
virsh net-edit $NETWORK_NAME # Probably "default"
Recherchez la <dhcp>
section, limitez la plage dynamique et ajoutez des entrées d'hôte pour vos machines virtuelles
<dhcp>
<range start='192.168.122.100' end='192.168.122.254'/>
<host mac='52:54:00:6c:3c:01' name='vm1' ip='192.168.122.11'/>
<host mac='52:54:00:6c:3c:02' name='vm2' ip='192.168.122.12'/>
<host mac='52:54:00:6c:3c:03' name='vm3' ip='192.168.122.12'/>
</dhcp>
Ensuite, redémarrez votre machine virtuelle (ou redémarrez son client DHCP, par exemple ifdown eth0; ifup eth0
)
Mise à jour: je constate qu'il y a des rapports selon lesquels la modification pourrait ne pas entrer en vigueur après "virsh net-edit". Dans ce cas, essayez ceci après la modification:
virsh net-destroy $NETWORK_NAME
virsh net-start $NETWORK_NAME
... et redémarrez le client DHCP de la VM.
Si cela ne fonctionne toujours pas, vous devrez peut-être
- arrêtez le service libvirtd
- tuer tous les processus dnsmasq encore en vie
- démarrer le service libvirtd
Remarque: Il n'y a aucun moyen que l'hôte KVM puisse forcer une machine virtuelle avec un système d'exploitation inconnu et une configuration inconnue à utiliser une certaine configuration réseau. Mais si vous savez que la machine virtuelle utilise un certain protocole de configuration réseau - par exemple DHCP - vous pouvez l'utiliser. C'est ce que suppose ce post.
Certains systèmes d'exploitation (par exemple, certaines distributions Linux) permettent également de passer des options de configuration réseau à l'invité, par exemple via la ligne de commande du noyau. Mais c'est très spécifique à l'OS, et je ne vois aucun avantage sur la méthode DHCP.