Bug 1813830
Summary: | cannot restart default network and firewalld: iptables: No chain/target/match by that name. | |||
---|---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Martin Pitt <mpitt> | |
Component: | libvirt | Assignee: | Laine Stump <laine> | |
Status: | CLOSED ERRATA | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | |
Severity: | unspecified | Docs Contact: | ||
Priority: | unspecified | |||
Version: | 31 | CC: | agedosier, berrange, clalancette, itamar, jfehlig, jforbes, laine, libvirt-maint, rjones, veillard, virt-maint | |
Target Milestone: | --- | |||
Target Release: | --- | |||
Hardware: | Unspecified | |||
OS: | Unspecified | |||
Whiteboard: | ||||
Fixed In Version: | libvirt-5.6.0-7.fc31 | Doc Type: | If docs needed, set a value | |
Doc Text: | Story Points: | --- | ||
Clone Of: | ||||
: | 1942805 (view as bug list) | Environment: | ||
Last Closed: | 2020-06-16 01:18:33 UTC | Type: | Bug | |
Regression: | --- | Mount Type: | --- | |
Documentation: | --- | CRM: | ||
Verified Versions: | Category: | --- | ||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
Cloudforms Team: | --- | Target Upstream Version: | ||
Embargoed: | ||||
Bug Depends On: | ||||
Bug Blocks: | 1942805 |
Description
Martin Pitt
2020-03-16 09:01:55 UTC
I think I found a workaround: When restarting libvirtd.service *after* starting firewalld, it works: # systemctl start firewalld; systemctl try-restart libvirtd; virsh net-start default (restarting it before starting firewalld it doesn't work). This is good enough for our integration tests. Is firewalld segfaulting? It could be duplicate of https://bugzilla.redhat.com/show_bug.cgi?id=1810473 @Richard: No, it's not crashing. The above journal dump is complete, and coredumpctl also does not show any crash. The reproducer above still works in current F31. This is due to an optimization in libvirt's network driver. Because 1) attempting to create a private iptables chain when it already exists results in an error, and 2) repeatedly looking to see if a chain exists for every network that is started is very inefficient and makes for a slow startup time, the network driver only calls the function that creates the private chains once per libvirtd run. This was done based on the assumption that firewalld would keep all of the iptables chains created by libvirt intact, which is in fact not the case. Instead we need to recreate the private chains any time we are notified (via dbus) that firewalld has restarted. I just posted these two patches upstream: https://www.redhat.com/archives/libvir-list/2020-May/msg00344.html The following two patches will be in upstream libvirt-6.4.0. We should backport them to both the F31 and F32 builds of libvirt. commit de110f110fb917a31b9f33ad8e4b3c1d3284766a Author: Laine Stump <laine> Date: Thu May 7 22:32:59 2020 -0400 network: make it safe to call networkSetupPrivateChains() multiple times commit f5418b427e7d2f26803880309478de9103680826 Author: Laine Stump <laine> Date: Thu May 7 21:54:39 2020 -0400 network: force re-creation of iptables private chains on firewalld restart FEDORA-2020-5cd83efda7 has been submitted as an update to Fedora 31. https://bodhi.fedoraproject.org/updates/FEDORA-2020-5cd83efda7 FEDORA-2020-5cd83efda7 has been pushed to the Fedora 31 testing repository. In short time you'll be able to install the update with the following command: `sudo dnf upgrade --enablerepo=updates-testing --advisory=FEDORA-2020-5cd83efda7` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2020-5cd83efda7 See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates. libvirt-5.6.0-7.fc31 has been pushed to the Fedora 31 stable repository. If problems still persist, please make note of it in this bug report. |