[Bug 668043] Re: libvirt default network doesn't start, iptables errors, bad rules

Brian J. Murrell brian at interlinx.bc.ca
Fri Feb 4 12:48:40 UTC 2011


On Thu, 2011-02-03 at 21:04 +0000, Serge Hallyn wrote: 
> (If it did in fact fail, then I'll revert the offending patch
> http://libvirt.org/git/?p=libvirt.git;a=commitdiff;h=fd5b15ff1a2ec37e75609c091522ae1e2c74c811
> as per http://bugs.gentoo.org/334921.

Please take note that the fix that I supplied does nothing about
addressing this issue because it should not be an issue.

First of all, the fix I supplied only deals with error:

libvirtError: internal error '/sbin/iptables --table filter --delete
INPUT --in-interface virbr0 --protocol udp --destination-port 69 --jump
ACCEPT' exited with non-zero status 1 and signal 0: iptables: Bad rule
(does a matching rule exist in that chain?).

This other error that Alle is getting:

error: internal error '/sbin/iptables --table mangle --delete POSTROUTING --out-interface virbr0 --protocol udp --destination-port 68 --jump CHECKSUM --checksum-fill' exited with non-zero status 2 and signal 0: iptables v1.4.4: unknown option `--checksum-fill'
Try `iptables -h' or 'iptables --help' for more information.

is not an actual error condition in the libvrit (0.8.3-1ubuntu14) that I
am looking at.  The only code that I can find that tries to add a
checksum rule for port 68 is in networkAddIptablesRules() in the file
src/network/bridge_driver.c:

    if ((network->def->ipAddress || network->def->nranges) &&
        (iptablesAddOutputFixUdpChecksum(driver->iptables,
                                         network->def->bridge, 68) != 0)) {
        VIR_WARN("Could not add rule to fixup DHCP response checksums "
                 "on network '%s'.", network->def->name);
        VIR_WARN0("May need to update iptables package & kernel to support CHECKSUM rule.");
    }

Note that failure of iptablesAddOutputFixUdpChecksum() only emits
warnings.

The actual error string that Alle is seeing comes from virRunWithHook()
which is called to through the following sequence of functions:

iptablesAddOutputFixUdpChecksum
iptablesOutputFixUdpChecksum
iptablesAddRemoveRule
virRun
virRunWithHook

which propagates an error back up the stack to networkAddIptablesRules()
but per the above code snippet, the error is discarded and a couple of
warning messages have been printed.

At this point, seeing as there are two different issues in this one
ticket, I would suggest that Alle open a new ticket covering the second
issue.

I suspect that Alle's network is failing to come up for a reason other
than the message he is seeing and the message that he sees just happens
to be the last message printed.  I have been fooled by libvirt's lack of
printing error messages and misunderstanding that the last message it
did print is not in fact what was causing the failure.

I would suggest that Alle runs libvirtd in the foreground with some
debug/verbosity perhaps to get to the real root of his problem.

-- 
You received this bug notification because you are a member of Ubuntu
Server Team, which is subscribed to libvirt in ubuntu.
https://bugs.launchpad.net/bugs/668043

Title:
  libvirt default network doesn't start, iptables errors, bad rules



More information about the Ubuntu-server-bugs mailing list