On 08/22/2012 06:51 AM, Gene Czarcinski wrote:
On 08/21/2012 11:04 AM, Daniel P. Berrange wrote:
On Tue, Aug 21, 2012 at 10:43:44AM -0400, Gene Czarcinski wrote:
RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=849787

As currently configured, dnsmasq for a virtual network will pass
some queries upstream toward the Internet.  This includes AAAA and
MX queries as well a A queries when dnsmasq cannot answer for that
name.  This is occurring whether a domain name is specified or not.
The problem is that dnsmasq will, by default, forward all queries
unless "local=" is specified.  I cannot envision a situation where
such queries should be forwarded.

See the bugzilla report for more info.  While I did a lot of testing
to figure out the problem and what needed to be done to fix it, I am
unable to actually rebuild the libvirt rpm in my environment.

The solution is the following patch:

diff -uNr libvirt-0.9.11.4.orig/src/network/bridge_driver.c
libvirt-0.9.11.4/src/network/bridge_driver.c
--- libvirt-0.9.11.4.orig/src/network/bridge_driver.c 2012-06-15
14:23:21.000000000 -0400
+++ libvirt-0.9.11.4/src/network/bridge_driver.c    2012-08-21
09:03:17.387602485 -0400
@@ -491,7 +491,13 @@
      virCommandAddArgList(cmd, "--strict-order",
"--bind-interfaces", NULL);

      if (network->def->domain)
- virCommandAddArgList(cmd, "--domain", network->def->domain, NULL);
+//        virCommandAddArgList(cmd, "--domain",
network->def->domain, NULL);
+    virCommandAddArgFormat(cmd,
+                "--domain %s --local=/%s/",
+                network->def->domain,
+                network->def->domain);
+    else
+        virCommandAddArg(cmd, "--local=");

      if (pidfile)
          virCommandAddArgPair(cmd, "--pid-file", pidfile);

Since this changes the code that generates dnsmasq args, you'll
also need to update the tests/networkxml2argvdata/ data files
to take account of your new additions.


And here I thought it was just a tiny patch. When I get thinks finalized, there will be an update to the tests also.

But, the patch itself is not good. For example, for no domain specified, instead of "--local=", it should be "--local-//". And then with the domain specified, this just does not work for some reason dnsmasq has errors starting.

I must say that I believe that whoever chose to use dnsmasq definitely made the right choice. However, I wich it was easier to change and test new parameter seetings for dnsmasq rather than having it in the code.

So that I do not have to go through a lot of code changes, I am testing with two virtual guests. The first has two NICs one connected to the default network and a second to a private network with dnsmasq (dns and dhcp) for the private network. The second guest is on the private network and tests the various setups for dnsmasq.

My initial simplified test used the /etc/dnsmasq.conf and supplied some additional parameters that I had not realized. My testing is not attempting to create a situation similar to that for libvirtd which has everything specified on the command-line.

Any comments, suggestions will be appreciated.

OK, I am going to need a little help here.

First, is there any documentation on things that need to be done in test when changes are made? Right now there is a lot of stuff there and I am not sure what needs to be added where.

Second, I have since the rpm will compile with my patch and goes through enough of -bi --short-circuit to create BUILDROOT/libvirt.../usr/sbin/libvirtd I am copying this over to a real system and installing it replacing the original /usr/sbin/libvirtd

With my patch installed, when libvirtd attempts to start a network, it errors out with something like the follow:
====================
internal error Child process (/sbin/dnsmasq --strict-order --bind-interfaces --domain virt123 --local=/virt123/ --domain-needed --filterwin2k --pid-file=/var/run/libvirt/network/net123.pid --conf-file= --except-interface lo --listen-address 192.168.123.1 --dhcp-range 192.168.123.128,192.168.123.254 --dhcp-leasefile=/var/lib/libvirt/dnsmasq/net123.leases --dhcp-lease-max=127 --dhcp-no-override --expand-hosts) status unexpected: exit status 1
====================

About the only version that does not have a problem is replacing "--domain virt123 --local=/virt123/ --domain-needed --filterwin2k" with "--local="

OK, something is wrong.

However, is I "kill -9 <the running instance or dnsmasq>" and then, as root, manually start dnsmasq with all of the above parameters, it runs and works find on the virtual network!

Obviously, I am missing something! Can someone point me in the right direction?

Gene

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to