Ce que je voudrais faire, c'est définir la configuration réseau des invités (adresse IP, sous-réseau, passerelle, adresse de diffusion) à partir du système hôte. La configuration réseau utilisée est en bridge
mode. Comment puis-je configurer le réseau à partir de l'hôte plutôt que de configurer le client lui-même sur une configuration réseau statique?
Si j'exécute:
virsh edit vm1
il y a aussi un <network>
bloc et j'ai essayé de configurer l'interface réseau à partir de là, mais malheureusement la machine virtuelle invitée ne semble pas l'utiliser et en tant que telle est hors ligne sur le réseau (car elle utilise uniquement la configuration automatique du réseau) ... Les machines virtuelles sont toutes deux basées sur Linux et Windows. Toute aide serait très appréciée.
Réponses:
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
ouroute
, vous pouvez utiliser la fonction intégrée de libvirtdnsmasqd
(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:
Puis éditez le réseau
Recherchez la
<dhcp>
section, limitez la plage dynamique et ajoutez des entrées d'hôte pour vos machines virtuellesEnsuite, 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:
... et redémarrez le client DHCP de la VM.
Si cela ne fonctionne toujours pas, vous devrez peut-être
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.
la source
virsh net-update
est une bonne commande pour vous (vous n'avez pas besoin de redémarrer / détruire votre réseau, etc.)voir: https://www.redhat.com/archives/libvir-list/2012-September/msg01380.html
la source
J'ai pu faire
dnsmasq
«voir» le mappage IP-MAC nouvellement ajouté en envoyant simplement un-HUP
signal audnsmasq
processus. Après cela, le redémarrage du nouvel invité était suffisant pour lui attribuer la bonne IP, sans avoir besoin de redémarrerlibvirtd
ni le réseau lui-même.La documentation officielle de libvirt ( http://wiki.libvirt.org/page/Networking#Applying_modifications_to_the_network ) mentionne ce script Perl non officiel qui automatise l'ensemble du processus: https://gist.github.com/bendiken/032ea1bddb9ffafe98b4
Je n'ai pas essayé ce script moi-même, car j'ai compris que le fichier hosts était déjà mis à jour et l'envoi du signal -HUP suffisait.
L'hôte exécute Debian 7.8 et les versions des packages sont:
la source