我正在尝试使用 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
我没有调查是哪个具体设置导致了这个问题。