On Ubuntu 17.04 with libvirt 3.0.0
I have multiple virtual networks defined on my Server:
# virsh net-list --all
Name State Autostart Persistent
----------------------------------------------------------
default active yes yes
...
virtual-mgt-5 active yes yes
...
When a VM is started on "virtual-mgt-5" with an interface which needs the dnsmasq DHCP server to get its IP address/subnet length, it remains inaccessible through its FQDN once the IP information is acquired.
The default values are used for each dnsmasq instance:
systemctl status libvirtd
● libvirtd.service - Virtualization daemon
Loaded: loaded (/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2017-06-10 19:48:58 CEST; 3ms ago
Docs: man:libvirtd(8)
http://libvirt.org
Main PID: 25365 (libvirtd)
Tasks: 35 (limit: 4915)
Memory: 27.1M
CPU: 28ms
CGroup: /system.slice/libvirtd.service
├─22262 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper
├─22263 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper
...
├─24061 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/virtual-mgt-5.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper
├─24062 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/virtual-mgt-5.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper
...
├─25365 /usr/sbin/libvirtd
└─25384 /usr/sbin/dnsmasq --help
I wonder whether the option "–leasefile-ro" gets in the way or not: there may be a key=value in /etc/libvirt/qemu/networks/virtual-mgt-5.xml to enable this behavior, but I could not find it in the Network XML format.
The contents of the corresponding XML file are:
virsh net-edit virtual-mgt-5
<network ipv6='yes'>
<name>virtual-mgt-5</name>
<uuid>193ac2c9-13fc-44a6-83f8-477790f1f470</uuid>
<forward mode='route'/>
<bridge name='virbr5' stp='on' delay='0'/>
<mac address='52:54:00:b9:ea:63'/>
<domain name='actionmystique.net'/>
<ip address='172.21.0.1' netmask='255.255.0.0'>
<dhcp>
<range start='172.21.0.1' end='172.21.255.254'/>
</dhcp>
</ip>
<ip family='ipv6' address='fc21::1' prefix='64'>
<dhcp>
<range start='fc21::1' end='fc21::fffe'/>
</dhcp>
</ip>
</network>
Any suggestion?
Best Answer
Libvirt provides two 'nss' modules that can enable name resolution for guests. The 'libvirt' module resolves hostnames (defined in the network XML) to IP addrs. The 'libvirt-guest' module takes a slightly different approach, resolving the guest domain name, instead of hostname, to IP addresses. The latter means you don't need to add hostnames to the network XML - you can just
virsh start myguest && ssh myguest
https://wiki.libvirt.org/page/NSS_module