Se non si desidera eseguire alcuna configurazione all'interno del guest, l'unica opzione è un server DHCP che distribuisce indirizzi IP statici. Se usi la bridge
modalità, probabilmente sarà un server DHCP esterno. Consulta il suo manuale per scoprire come servire i contratti di locazione statici.
Ma almeno nelle modalità forward nat
o route
, potresti usare il comando integrato di libvirt dnsmasqd
(versioni più recenti di libvirtd supportano l'opzione "dhcp-hostsfile" di dnsmasq). Ecco come:
Innanzitutto, scopri gli indirizzi MAC delle macchine virtuali a cui desideri assegnare indirizzi IP statici:
virsh dumpxml $VM_NAME | grep 'mac address'
Quindi modificare la rete
virsh net-list
virsh net-edit $NETWORK_NAME # Probably "default"
Trova la <dhcp>
sezione, limita l'intervallo dinamico e aggiungi le voci host per le tue VM
<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>
Quindi, riavviare la VM (o riavviare il suo client DHCP, ad es. ifdown eth0; ifup eth0
)
Aggiornamento: vedo che ci sono rapporti secondo cui la modifica potrebbe non entrare in vigore dopo "virsh net-edit". In tal caso, prova questo dopo la modifica:
virsh net-destroy $NETWORK_NAME
virsh net-start $NETWORK_NAME
... e riavvia il client DHCP della VM.
Se il problema persiste, potrebbe essere necessario
- interrompere il servizio libvirtd
- uccide tutti i processi dnsmasq che sono ancora vivi
- avvia il servizio libvirtd
Nota: non è possibile che l'host KVM imponga a una VM con sistema operativo sconosciuto e configurazione sconosciuta di utilizzare una determinata configurazione di rete. Ma se sai che la VM usa un certo protocollo di configurazione di rete - diciamo DHCP - puoi usarlo. Questo è ciò che assume questo post.
Alcuni sistemi operativi (ad esempio alcune distribuzioni Linux) consentono anche di passare le opzioni di configurazione di rete nel guest, ad esempio tramite la riga di comando del kernel. Ma questo è molto specifico per il sistema operativo e non vedo alcun vantaggio rispetto al metodo DHCP.