Si no desea realizar ninguna configuración dentro del invitado, entonces la única opción es un servidor DHCP que distribuye direcciones IP estáticas. Si usa el bridge
modo, probablemente será un servidor DHCP externo. Consulte su manual para saber cómo servir arrendamientos estáticos.
Pero al menos en los modos de reenvío nat
o route
, podría usar el libvirt incorporado dnsmasqd
(las versiones más recientes de libvirtd admiten la opción "dhcp-hostsfile" de dnsmasq). Aquí es cómo:
Primero, descubra las direcciones MAC de las máquinas virtuales a las que desea asignar direcciones IP estáticas:
virsh dumpxml $VM_NAME | grep 'mac address'
Luego edite la red
virsh net-list
virsh net-edit $NETWORK_NAME # Probably "default"
Encuentre la <dhcp>
sección, restrinja el rango dinámico y agregue entradas de host para sus máquinas virtuales
<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>
Luego, reinicie su VM (o reinicie su cliente DHCP, por ejemplo ifdown eth0; ifup eth0
)
Actualización: veo que hay informes de que el cambio podría no tener efecto después de "virsh net-edit". En ese caso, intente esto después de la edición:
virsh net-destroy $NETWORK_NAME
virsh net-start $NETWORK_NAME
... y reinicie el cliente DHCP de la VM.
Si eso todavía no funciona, es posible que deba
- detener el servicio libvirtd
- matar cualquier proceso dnsmasq que aún esté vivo
- iniciar el servicio libvirtd
Nota: No hay forma de que el host KVM pueda forzar a una VM con SO desconocido y configuración desconocida a usar una determinada configuración de red. Pero si sabe que la VM usa un cierto protocolo de configuración de red, digamos DHCP, puede usar eso. Esto es lo que supone esta publicación.
Algunos sistemas operativos (por ejemplo, algunas distribuciones de Linux) también permiten pasar opciones de configuración de red al invitado, por ejemplo, a través de la línea de comandos del núcleo. Pero eso es muy específico para el sistema operativo, y no veo ninguna ventaja sobre el método DHCP.