Package: libvirt-bin Version: 0.8.3-4 Severity: normal Hi.
I want to be able to resolv dns names of the VMs managed by libvirt. For that, I use a system dnsmasq, which loads this config file: $ cat /etc/dnsmasq.d/00_libvirtd.conf # only bind to loopback by default interface=lo bind-interfaces server=/my.private.domain.example/192.168.122.1 # <-- added this $ Thus, any request for a host in the my.private.domain.example will be forwarded to the libvirt's private dnsmasq instance. The problem is that libvirt is silently ignoring the domain element in the default network xml. This element is documented on sources: libvirt-0.8.3/docs/schemas/network.rng and also in http://libvirt.org/formatnetwork.html (look for 'domain'). Let me show you this: $ sudo LIBVIRT_DEBUG=1 virsh 06:34:31.864: debug : virInitialize:339 : register drivers 06:34:31.865: debug : virRegisterDriver:927 : registering Test as driver 0 06:34:31.865: debug : virRegisterNetworkDriver:733 : registering Test as network driver 0 06:34:31.865: debug : virRegisterInterfaceDriver:764 : registering Test as interface driver 0 06:34:31.865: debug : virRegisterStorageDriver:795 : registering Test as storage driver 0 06:34:31.865: debug : virRegisterDeviceMonitor:826 : registering Test as device driver 0 06:34:31.865: debug : virRegisterSecretDriver:857 : registering Test as secret driver 0 06:34:31.865: debug : virRegisterNWFilterDriver:888 : registering Test as network filter driver 0 06:34:31.865: debug : virRegisterDriver:927 : registering Xen as driver 1 06:34:31.865: debug : virRegisterDriver:927 : registering OPENVZ as driver 2 06:34:31.866: debug : vboxRegister:122 : VBoxCGlueInit failed, using dummy driver 06:34:31.866: debug : virRegisterDriver:927 : registering VBOX as driver 3 06:34:31.866: debug : virRegisterNetworkDriver:733 : registering VBOX as network driver 1 06:34:31.866: debug : virRegisterStorageDriver:795 : registering VBOX as storage driver 1 06:34:31.866: debug : virRegisterDriver:927 : registering remote as driver 4 06:34:31.866: debug : virRegisterNetworkDriver:733 : registering remote as network driver 2 06:34:31.866: debug : virRegisterInterfaceDriver:764 : registering remote as interface driver 1 06:34:31.866: debug : virRegisterStorageDriver:795 : registering remote as storage driver 2 06:34:31.866: debug : virRegisterDeviceMonitor:826 : registering remote as device driver 1 06:34:31.866: debug : virRegisterSecretDriver:857 : registering remote as secret driver 1 06:34:31.866: debug : virRegisterNWFilterDriver:888 : registering remote as network filter driver 1 06:34:31.866: debug : virConnectOpenAuth:1498 : name=(null), auth=0x7f98b32d5460, flags=0 06:34:31.866: debug : do_open:1206 : no name, allowing driver auto-select 06:34:31.866: debug : do_open:1243 : trying driver 0 (Test) ... 06:34:31.866: debug : do_open:1249 : driver 0 Test returned DECLINED 06:34:31.866: debug : do_open:1243 : trying driver 1 (Xen) ... 06:34:31.866: debug : do_open:1249 : driver 1 Xen returned DECLINED 06:34:31.866: debug : do_open:1243 : trying driver 2 (OPENVZ) ... 06:34:31.866: debug : do_open:1249 : driver 2 OPENVZ returned DECLINED 06:34:31.866: debug : do_open:1243 : trying driver 3 (VBOX) ... 06:34:31.866: debug : do_open:1249 : driver 3 VBOX returned DECLINED 06:34:31.866: debug : do_open:1243 : trying driver 4 (remote) ... 06:34:31.866: debug : remoteOpen:1120 : Auto-probe remote URI 06:34:31.866: debug : doRemoteOpen:564 : proceeding with name = 06:34:31.866: debug : remoteIO:9886 : Do proc=66 serial=0 length=28 wait=(nil) 06:34:31.866: debug : remoteIO:9961 : We have the buck 66 0x7f98b077b010 0x7f98b077b010 <network> 06:34:31.867: debug : remoteIODecodeMessageLength:9314 : Got length, now need 64 total (60 more) 06:34:31.867: debug : remoteIOEventLoop:9812 : Giving up the buck 66 0x7f98b077b010 (nil) 06:34:31.867: debug : remoteIO:9990 : All done with our call 66 (nil) 0x7f98b077b010 06:34:31.867: debug : remoteIO:9886 : Do proc=1 serial=1 length=40 wait=(nil) 06:34:31.867: debug : remoteIO:9961 : We have the buck 1 0x181c920 0x181c920 06:34:31.868: debug : remoteIODecodeMessageLength:9314 : Got length, now need 56 total (52 more) 06:34:31.868: debug : remoteIOEventLoop:9812 : Giving up the buck 1 0x181c920 (nil) 06:34:31.868: debug : remoteIO:9990 : All done with our call 1 (nil) 0x181c920 06:34:31.868: debug : remoteIO:9886 : Do proc=110 serial=2 length=28 wait=(nil) 06:34:31.868: debug : remoteIO:9961 : We have the buck 110 0x181c920 0x181c920 06:34:31.869: debug : remoteIODecodeMessageLength:9314 : Got length, now need 76 total (72 more) 06:34:31.869: debug : remoteIOEventLoop:9812 : Giving up the buck 110 0x181c920 (nil) 06:34:31.869: debug : remoteIO:9990 : All done with our call 110 (nil) 0x181c920 06:34:31.869: debug : doRemoteOpen:922 : Auto-probed URI is qemu:///system 06:34:31.869: debug : doRemoteOpen:941 : Adding Handler for remote events 06:34:31.869: debug : doRemoteOpen:948 : virEventAddHandle failed: No addHandleImpl defined. continuing without events. 06:34:31.869: debug : do_open:1249 : driver 4 remote returned SUCCESS 06:34:31.869: debug : do_open:1269 : network driver 0 Test returned DECLINED 06:34:31.869: debug : do_open:1269 : network driver 1 VBOX returned DECLINED 06:34:31.869: debug : do_open:1269 : network driver 2 remote returned SUCCESS 06:34:31.869: debug : do_open:1288 : interface driver 0 Test returned DECLINED 06:34:31.869: debug : do_open:1288 : interface driver 1 remote returned SUCCESS 06:34:31.869: debug : do_open:1308 : storage driver 0 Test returned DECLINED 06:34:31.869: debug : do_open:1308 : storage driver 1 VBOX returned DECLINED 06:34:31.869: debug : do_open:1308 : storage driver 2 remote returned SUCCESS 06:34:31.869: debug : do_open:1328 : node driver 0 Test returned DECLINED 06:34:31.869: debug : do_open:1328 : node driver 1 remote returned SUCCESS 06:34:31.869: debug : do_open:1355 : secret driver 0 Test returned DECLINED 06:34:31.869: debug : do_open:1355 : secret driver 1 remote returned SUCCESS 06:34:31.869: debug : do_open:1375 : nwfilter driver 0 Test returned DECLINED 06:34:31.869: debug : do_open:1375 : nwfilter driver 1 remote returned SUCCESS Welcome to virsh, the virtualization interactive terminal. Type: 'help' for help with commands 'quit' to quit virsh # net-edit default 06:34:46.265: debug : virNetworkLookupByName:5885 : conn=0x1817060, name=default 06:34:46.266: debug : remoteIO:9886 : Do proc=46 serial=3 length=40 wait=(nil) 06:34:46.266: debug : remoteIO:9961 : We have the buck 46 0x183fcf0 0x183fcf0 06:34:46.266: debug : remoteIODecodeMessageLength:9314 : Got length, now need 84 total (80 more) 06:34:46.266: debug : remoteIOEventLoop:9812 : Giving up the buck 46 0x183fcf0 (nil) 06:34:46.266: debug : remoteIO:9990 : All done with our call 46 (nil) 0x183fcf0 06:34:46.266: debug : virNetworkGetXMLDesc:6390 : network=0x1836610, flags=0 06:34:46.266: debug : remoteIO:9886 : Do proc=43 serial=4 length=60 wait=(nil) 06:34:46.266: debug : remoteIO:9961 : We have the buck 43 0x183fcf0 0x183fcf0 06:34:46.267: debug : remoteIODecodeMessageLength:9314 : Got length, now need 372 total (368 more) 06:34:46.267: debug : remoteIOEventLoop:9812 : Giving up the buck 43 0x183fcf0 (nil) 06:34:46.267: debug : remoteIO:9990 : All done with our call 43 (nil) 0x183fcf0 06:35:28.225: debug : virNetworkGetXMLDesc:6390 : network=0x1836610, flags=0 06:35:28.225: debug : remoteIO:9886 : Do proc=43 serial=5 length=60 wait=(nil) 06:35:28.225: debug : remoteIO:9961 : We have the buck 43 0x187ff70 0x187ff70 06:35:28.225: debug : remoteIODecodeMessageLength:9314 : Got length, now need 372 total (368 more) 06:35:28.225: debug : remoteIOEventLoop:9812 : Giving up the buck 43 0x187ff70 (nil) 06:35:28.225: debug : remoteIO:9990 : All done with our call 43 (nil) 0x187ff70 06:35:28.225: debug : virNetworkFree:6229 : network=0x1836610 06:35:28.225: debug : virUnrefNetwork:601 : unref network 0x1836610 default 1 06:35:28.225: debug : virReleaseNetwork:557 : release network 0x1836610 default 445a3551-a33c-7ba1-6228-098e7d191ec3 06:35:28.226: debug : virReleaseNetwork:571 : unref connection 0x1817060 2 06:35:28.226: debug : virNetworkDefineXML:6054 : conn=0x1817060, xml=<network> <name>default</name> <uuid>445a3551-a33c-7ba1-6228-098e7d191ec3</uuid> <forward mode='nat'/> <bridge name='virbr0' stp='on' delay='0' /> <domain name='my.private.domain.example' /> # <-- added this <ip address='192.168.122.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.122.2' end='192.168.122.254' /> </dhcp> </ip> </network> 06:35:28.226: debug : remoteIO:9886 : Do proc=41 serial=6 length=380 wait=(nil) 06:35:28.226: debug : remoteIO:9961 : We have the buck 41 0x187ff70 0x187ff70 06:35:28.227: debug : remoteIODecodeMessageLength:9314 : Got length, now need 84 total (80 more) 06:35:28.227: debug : remoteIOEventLoop:9812 : Giving up the buck 41 0x187ff70 (nil) 06:35:28.227: debug : remoteIO:9990 : All done with our call 41 (nil) 0x187ff70 06:35:28.227: debug : virNetworkGetName:6289 : network=0x1842d10 Network default XML configuration edited. 06:35:28.227: debug : virNetworkFree:6229 : network=0x1842d10 06:35:28.227: debug : virUnrefNetwork:601 : unref network 0x1842d10 default 1 06:35:28.227: debug : virReleaseNetwork:557 : release network 0x1842d10 default 445a3551-a33c-7ba1-6228-098e7d191ec3 06:35:28.227: debug : virReleaseNetwork:571 : unref connection 0x1817060 2 virsh # net-dumpxml default 06:36:37.105: debug : virNetworkLookupByName:5885 : conn=0x1817060, name=default 06:36:37.106: debug : remoteIO:9886 : Do proc=46 serial=7 length=40 wait=(nil) 06:36:37.106: debug : remoteIO:9961 : We have the buck 46 0x183fcf0 0x183fcf0 06:36:37.106: debug : remoteIODecodeMessageLength:9314 : Got length, now need 84 total (80 more) 06:36:37.106: debug : remoteIOEventLoop:9812 : Giving up the buck 46 0x183fcf0 (nil) 06:36:37.106: debug : remoteIO:9990 : All done with our call 46 (nil) 0x183fcf0 06:36:37.106: debug : virNetworkGetXMLDesc:6390 : network=0x1836740, flags=0 06:36:37.106: debug : remoteIO:9886 : Do proc=43 serial=8 length=60 wait=(nil) 06:36:37.106: debug : remoteIO:9961 : We have the buck 43 0x183fcf0 0x183fcf0 06:36:37.107: debug : remoteIODecodeMessageLength:9314 : Got length, now need 372 total (368 more) 06:36:37.107: debug : remoteIOEventLoop:9812 : Giving up the buck 43 0x183fcf0 (nil) 06:36:37.107: debug : remoteIO:9990 : All done with our call 43 (nil) 0x183fcf0 <network> <name>default</name> <uuid>445a3551-a33c-7ba1-6228-098e7d191ec3</uuid> <forward mode='nat'/> <bridge name='virbr0' stp='on' delay='0' /> # <-- my edit is gone! <ip address='192.168.122.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.122.2' end='192.168.122.254' /> </dhcp> </ip> </network> 06:36:37.107: debug : virNetworkFree:6229 : network=0x1836740 06:36:37.107: debug : virUnrefNetwork:601 : unref network 0x1836740 default 1 06:36:37.107: debug : virReleaseNetwork:557 : release network 0x1836740 default 445a3551-a33c-7ba1-6228-098e7d191ec3 06:36:37.107: debug : virReleaseNetwork:571 : unref connection 0x1817060 2 virsh # exit 06:37:01.789: debug : virConnectClose:1524 : conn=0x1817060 06:37:01.789: debug : virUnrefConnect:294 : unref connection 0x1817060 1 06:37:01.790: debug : remoteIO:9886 : Do proc=2 serial=9 length=28 wait=(nil) 06:37:01.790: debug : remoteIO:9961 : We have the buck 2 0x183fcf0 0x183fcf0 06:37:01.790: debug : remoteIODecodeMessageLength:9314 : Got length, now need 56 total (52 more) 06:37:01.790: debug : remoteIOEventLoop:9812 : Giving up the buck 2 0x183fcf0 (nil) 06:37:01.790: debug : remoteIO:9990 : All done with our call 2 (nil) 0x183fcf0 06:37:01.790: debug : virReleaseConnect:249 : release connection 0x1817060 $ ps aux | grep dnsmasq dnsmasq 1344 0.0 0.0 22752 880 ? S 06:24 0:00 /usr/sbin/dnsmasq -x /var/run/dnsmasq/dnsmasq.pid -u dnsmasq -r /var/run/dnsmasq/resolv.conf -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new nobody 1762 0.0 0.0 21264 884 ? S 06:24 0:00 dnsmasq --strict-order --bind-interfaces --pid-file=/var/run/libvirt/network/default.pid --conf-file= --listen-address 192.168.122.1 --except-interface lo --dhcp-range 192.168.122.2,192.168.122.254 --dhcp-lease-max=253 pancho 2354 0.0 0.0 7548 852 pts/0 S+ 06:37 0:00 grep dnsmasq $ >>> END-OF-DUMP <<< As you can see, the private dnsmasq is hence not called with the --domain parameter. Tried also to edit directly the /etc/libvirt/qemu/network/default.xml, and reboot the system. No effect. The result is that the private dnsmasq is able to resolv the host names of the VMs as if they were top level domains: $ dig @192.168.122.1 debianvm ; <<>> DiG 9.7.1-P2 <<>> @192.168.122.1 debianvm ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43919 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;debianvm. IN A ;; ANSWER SECTION: debianvm. 0 IN A 192.168.122.95 ;; Query time: 0 msec ;; SERVER: 192.168.122.1#53(192.168.122.1) ;; WHEN: Fri Nov 26 07:02:58 2010 ;; MSG SIZE rcvd: 40 $ >>> END-OF-DUMP <<< This prevents the system dnsmasq from resolving correctly. N.B.: Tried this on sid and a freshly installed squeeze, same libvirt-bin version. Maybe the bug should be reported against libvirt0? Thanks! -- System Information: Debian Release: squeeze/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: amd64 (x86_64) Kernel: Linux 2.6.34.1-macmini-amd64 (SMP w/2 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages libvirt-bin depends on: ii adduser 3.112+nmu2 add and remove users and groups ii libavahi-client3 0.6.27-3 Avahi client library ii libavahi-common3 0.6.27-3 Avahi common library ii libblkid1 2.17.2-3.3 block device id library ii libc6 2.11.2-7 Embedded GNU C Library: Shared lib ii libcap-ng0 0.6.4-1 An alternate posix capabilities li ii libdevmapper1.02.1 2:1.02.48-4 The Linux Kernel Device Mapper use ii libgcrypt11 1.4.5-2 LGPL Crypto library - runtime libr ii libgnutls26 2.8.6-1 the GNU TLS library - runtime libr ii libnl1 1.1-6 library for dealing with netlink s ii libparted0debian1 2.3-4 The GNU Parted disk partitioning s ii libpciaccess0 0.12.0-1 Generic PCI access library for X ii libreadline6 6.1-3 GNU readline and history libraries ii libsasl2-2 2.1.23.dfsg1-6 Cyrus SASL - authentication abstra ii libudev0 164-2 libudev shared library ii libuuid1 2.17.2-3.3 Universally Unique ID library ii libvirt0 0.8.3-4 library for interfacing with diffe ii libxenstore3.0 4.0.1-1 Xenstore communications library fo ii libxml2 2.7.8.dfsg-1 GNOME XML library ii logrotate 3.7.8-6 Log rotation utility Versions of packages libvirt-bin recommends: ii bridge-utils 1.4-5 Utilities for configuring the Linu ii dnsmasq-base 2.55-2 A small caching DNS proxy and DHCP pn ebtables <none> (no description available) ii gawk 1:3.1.7.dfsg-5 GNU awk, a pattern scanning and pr ii iptables 1.4.10-1 administration tools for packet fi ii libxml2-utils 2.7.8.dfsg-1 XML utilities ii netcat-openbsd 1.89-4 TCP/IP swiss army knife ii qemu 0.12.5+dfsg-2 fast processor emulator ii qemu-kvm 0.12.5+dfsg-5 Full virtualization on x86 hardwar Versions of packages libvirt-bin suggests: ii policykit-1 0.96-4 framework for managing administrat -- no debconf information -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org