为什么 libvirt 不能与 fedora 32 上的 iptables 合作

为什么 libvirt 不能与 fedora 32 上的 iptables 合作

我正在尝试使用 Fedora 32 上 libvirt / kvm 的默认安装。

安装 libvirt 后,我​​尝试启动default网络:virsh net-start default

但出于某种原因,缺少了一些链,因此失败了。例如,libvirt 尝试加载的新规则以以下内容开头:

-A IN_libvirt_allow -p udp --dport 67 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT

但没有IN_libvirt_allow(或IN_libvirt_post,,FORWARD_OUT_ZONES...)。

我有一些libvirt 相关链如LIBVIRT_INP/ LIBVIRT_OUT,但我不确定哪些属于 libvirt ,哪些属于firewalld ,以及它们应该如何协同工作。

我缺少了哪部分设置?

答案1

Fedora 32 是第一个切换到 nftables 的 Fedora 版本。Libvirtd 目前通过直接编写(旧版)iptables 规则并要求 Firewalld 创建所需的规则来创建混合防火墙规则。您(目前)必须使用 Firewalld 才能使 libvirtd 在该发行版上正常工作。

答案2

因此,这被证明是 Fedora 31 的配置存在问题,但无法正常工作。删除防火墙自定义设置(删除/移动到/etc/firewalld/zones某处)后,防火墙会正确初始化所需的链。

Firewalld 的日志输出中还出现了一系列错误:

ERROR: COMMAND_FAILED: 'python-nftables' failed: internal:0:0-0: Error: No such file or directory

我没有调查是哪个具体设置导致了这个问题。

相关内容