Configuração libvirt NAT - DHCP não funciona

Configuração libvirt NAT - DHCP não funciona

Quero usar a configuração NAT da rede libvirt.

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

"1) Se você não estiver usando dnsmasq na máquina física para servir DHCP para orede física, você deve desabilitar completamente o dnsmasq"

isso corresponde ao meu contexto, então paro e desabilito o dnsmasq no sistema host.

no 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>

Eu inicio a rede padrão:

virsh # net-start default
Network default started

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

Eu inicio os convidados S0 e S1

virsh # start S0
Domain S0 started

virsh # start S1
Domain S1 started

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

mas o DHCP parece não funcionar:

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

na máquina host:

ping: S1: Name or service not known

o que eu tentei:

no virt-manager

hostnamectl set-hostname server1
hostnamectl set-hostname server0

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

no host:

tcpdump -i virbr0

em qemu:

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

tcpdump não vê nada chegando ao virbr0

minha pergunta é: como fazer com que o DHCP funcione neste caso?

questões adicionais:

1. Diz-se que, na libvirt, o nat conf deve funcionar imediatamente (conf padrão), nada a fazer. o que significa exatamente 'fora da caixa'? tanto S1 quanto S0 aqui têm, por padrão, FQDN definido como localhost.localdomain , então como o libvirt DHCP faz a distinção entre S0 e S1?

2.Se eu quiser personalizar minha configuração do dnsmasq (por exemplo, algo como log-facility=/var/log/dnsmasq.log), onde está o arquivo conf? não está em /etc/dnsmasq.conf ou em /etc/dnsmasq.d/anyname.conf porque dnsmasq não funciona no host?

Responder1

Eu tive o mesmo problema em um sistema Debian e estou postando uma solução caso isso ajude, ou se alguém puder melhorar isso seria ótimo :)

A conectividade host-convidado funciona depois de adicionar o seguinte ao arquivo XML do domínio convidado:

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

Isso criou uma interface de rede nunca antes vista no sistema convidado. Em seguida, executei dhclienta interface dentro da VM convidada e obtive um endereço 192.168.122.x com portas acessíveis ao sistema host.

informação relacionada