Я хочу использовать конфигурацию сетевого 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
<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-manager
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 conf должен работать из коробки (конфиг по умолчанию), делать нечего. что именно означает «из коробки»? как S1, так и S0 здесь по умолчанию имеют полное доменное имя localhost.localdomain, так как libvirt DHCP делает различие между S0 и S1?
2. Если я хочу настроить свою конфигурацию dnsmasq (например, sthg, например, log-feature = / var / log / dnsmasq.log), где находится файл conf? не в /etc/dnsmasq.conf или в /etc/dnsmasq.d/anyname.conf, поскольку dnsmasq не работает на хосте?
У меня была такая же проблема в системе Debian, и я публикую решение, если оно поможет, или если кто-то может улучшить его, это было бы здорово :)
Связь между хостами и гостями работает после добавления следующего в XML-файл гостевого домена:
<interface type='bridge'>
<source bridge='virbr0'/>
<model type='virtio'/>
</interface>
Это создало ранее невидимый сетевой интерфейс в гостевой системе. Затем я побежал dhclient
на интерфейсе внутри гостевой виртуальной машины, и он получил адрес 192.168.122.x с портами, доступными для хост-системы.