Ich nutze folgende XML Definition in Libvirt um automatisch meine VMs mit IP-Adressen und PXE zu versorgen:
<network connections='6'> <name>internet</name> <uuid>37b888cc-510f-46f1-9246-346da96222ed</uuid> <forward dev='enp5s0f0' mode='route'> <interface dev='enp5s0f0'/> </forward> <bridge name='virbr1' stp='on' delay='0'/> <mac address='52:54:00:13:39:d5'/> <ip family='ipv6' address='2a01:4f8:11a:b00::2' prefix='64'> </ip> <ip address='88.198.253.2' netmask='255.255.255.224'> <dhcp> <range start='88.198.253.4' end='88.198.253.30'/> <host mac='52:54:00:5a:d8:30' name='webserver01.rackmonkey.de' ip='88.198.253.6'/> <bootp file='pxelinux.0' server='213.133.99.100'/> </dhcp> </ip> <route family='ipv6' address='2a01:4f8:11a:b00::' prefix='56' gateway='2a01:4f8:11a:b00::2'/> </network>
Libvirt triggert hier dnsmasq unter anderem um automatisch Router Advertisments zu versenden. Dies funktioniert in dnsmasq-266 nicht richtig. Beim starten des virtuellen Netzwerks per
virsh net-define internet.xml; virsh net-start internet
Erhält man folgende Fehlermeldung:
error: Failed to start network internet
error: internal error: Child process (/usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/internet.conf) unexpected exit status 2:
dnsmasq: failed to set SO_BINDTODEVICE on DHCP socket: Socket operation on non-socket
Dazu existiert ein Bugreport:
https://bugzilla.redhat.com/show_bug.cgi?id=962874
Sowie ein Fix:
http://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=commitdiff;h=cfcad42ff1ddee8e64d120f18016a654152d0215
in Version 2.67 ist dieses Problem gefixt. Diese ist aktuell in gentoo als testing markiert für die amd64 Architektur. Um diese zu installieren muss sie erst explizit freigeschaltet werden:
echo "=net-dns/dnsmasq-2.67 ~amd6" >> /etc/portage/package.accept_keywords
Danach kann sie installiert werden:
emerge -q dnsmasq