Конфигурация libvirt NAT - DHCP не работает

Конфигурация libvirt NAT - DHCP не работает

Я хочу использовать конфигурацию NAT сети libvirt.

libvirt говоритhttps://wiki.libvirt.org/page/Virtual_network_%22default%22_has_not_been_started:

"1) Если вы на самом деле не используете dnsmasq на физической машине для обслуживания DHCP дляфизическая сеть, вам просто следует полностью отключить dnsmasq"

это соответствует моему контексту, поэтому я останавливаю и отключаю dnsmasq в хост-системе.

в системе 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>

Запускаю сеть по умолчанию:

virsh # net-start default
Network default started

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

Я начинаю гостей S0 и S1

virsh # start S0
Domain S0 started

virsh # start S1
Domain S1 started

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

но DHCP, похоже, не работает:

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

на хост-машине:

ping: S1: Name or service not known

что я пробовал:

в virt-менеджере

hostnamectl set-hostname server1
hostnamectl set-hostname server0

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

на хосте:

tcpdump -i virbr0

в QEMU:

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

tcpdump не видит ничего, приходящего на virbr0

У меня вопрос: как заставить работать DHCP в этом случае?

дополнительный вопрос:

1. Говорят, что в libvirt конфигурация nat должна работать из коробки (конфигурация по умолчанию), ничего не нужно делать. Что именно означает «из коробки»? У обоих S1 и S0 по умолчанию установлено полное доменное имя localhost.localdomain, так как же libvirt DHCP различает S0 и S1?

2. Если я хочу настроить конфигурацию dnsmasq (например, что-то вроде log-facility=/var/log/dnsmasq.log), где находится файл conf? Не в /etc/dnsmasq.conf или не в /etc/dnsmasq.d/anyname.conf, так как dnsmasq не работает на хосте?

решение1

У меня была та же проблема на системе Debian, и я публикую решение на случай, если оно поможет, или если кто-то сможет улучшить его, это было бы здорово :)

Подключение хоста к гостю работает после добавления следующего в XML-файл гостевого домена:

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

Это создало ранее невидимый сетевой интерфейс в гостевой системе. Затем я запустил dhclientинтерфейс внутри гостевой виртуальной машины, и она получила адрес 192.168.122.x с портами, доступными для хостовой системы.

Связанный контент