Configuración NAT de libvirt: DHCP no funciona

Configuración NAT de libvirt: DHCP no funciona

Quiero utilizar la configuración NAT de la red libvirt.

libvirt dicehttps://wiki.libvirt.org/page/Virtual_network_%22default%22_has_not_been_started:

"1) Si en realidad no está utilizando dnsmasq en la máquina física para servir DHCP para elred fisica, deberías desactivar dnsmasq por completo"

eso corresponde a mi contexto, así que detengo y desactivo dnsmasq en el sistema host.

en el sistema qemu:

virsh # net-edit default

<network>
 <name>default</name>
 <uuid>b6ef8506-d4c7-4bba-9fe7-8f971ea87d10</uuid>
 <forward mode='nat'>
  <nat>
   <port start='1024' end='65535'/>
  </nat>
 </forward>
 <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:06:86:de'/>
  <domain name='circus.net'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
   <dhcp>
    <range start='192.168.122.2' end='192.168.122.10'/>
   </dhcp>
  </ip>
</network>

Inicio la red predeterminada:

virsh # net-start default
Network default started

virsh # net-list
Name State Autostart Persistent
----------------------------------------------------------
default active no yes

Empiezo los invitados S0 y S1

virsh # start S0
Domain S0 started

virsh # start S1
Domain S1 started

virsh # list
Id Name State
----------------------------------------------------
1 S0 running
2 S1 running

pero DHCP no parece funcionar:

virsh # net-dhcp-leases default
Expiry Time MAC address Protocol IP address Hostname Client ID or DUID
-------------------------------------------------------------------------------

en la máquina anfitriona:

ping: S1: Name or service not known

lo que he probado:

en virt-manager

hostnamectl set-hostname server1
hostnamectl set-hostname server0

virsh # shutdown S0
virsh # shutdown S1
virsh # net-destroy default

en el anfitrión:

tcpdump -i virbr0

en qemu:

virsh # net-start default
virsh # start S0
virsh # start S1

tcpdump no ve nada llegando a virbr0

mi pregunta es: ¿cómo hacer que DHCP funcione en este caso?

preguntas adicionales:

1. Se dice que en libvirt, nat conf debería funcionar de fábrica (conf predeterminada), no hay nada que hacer. ¿Qué significa exactamente "listo para usar"? Tanto S1 como S0 aquí tienen, de forma predeterminada, el FQDN configurado en localhost.localdomain, entonces, ¿cómo hace libvirt DHCP la distinción entre S0 y S1?

2.Si quiero personalizar mi configuración de dnsmasq (por ejemplo, algo como log-facility=/var/log/dnsmasq.log), ¿dónde está el archivo de configuración? ¿No está en /etc/dnsmasq.conf o en /etc/dnsmasq.d/anyname.conf porque dnsmasq no funciona en el host?

Respuesta1

Tuve el mismo problema en un sistema Debian y estoy publicando una solución en caso de que ayude, o si alguien puede mejorarla, sería genial :)

La conectividad de host a invitado funciona después de agregar lo siguiente al archivo XML del dominio invitado:

<interface type='bridge'>
  <source bridge='virbr0'/>
  <model type='virtio'/>
</interface>

Eso creó una interfaz de red nunca antes vista en el sistema invitado. Luego ejecuté dhclientla interfaz dentro de la VM invitada y obtuvo una dirección 192.168.122.x con puertos accesibles para el sistema host.

información relacionada