libvirt:“无法初始化有效的防火墙后端”


18

我正在尝试在Arch Linux主机上为libvirt设置一个不带DHCP的虚拟NAT网络设备。

我尝试过的

# virsh net-define network.xml 
Network default defined from network.xml

[ network.xml]:

<network>
  <name>default</name>
  <bridge name="maas0" />
  <forward mode="nat" />
  <ip address="10.137.0.1" netmask="255.255.255.0" />
</network>

我的笔记本电脑在启动时会输出以下内容:

# virsh net-start default
error: Failed to start network default
error: internal error: Failed to initialize a valid firewall backend

与该主题相关的所有其他线程都在谈论软件升级-我使用的是最新版本:

$ pacman -Q ebtables dnsmasq libvirt iptables
ebtables 2.0.10_4-5
dnsmasq 2.75-1
libvirt 1.3.3-1
iptables 1.4.21-3

这可能是什么原因,internal error我该怎么办?

Answers:


30

安装ebtablesdnsmasq似乎可以解决问题。不要忘记重启libvirtd服务。

命令:

sudo pacman -Syu ebtables dnsmasq
sudo systemctl restart libvirtd

注意:不要忘记关闭并重新打开virt-managerGUI(如果使用的是GUI)。

编辑:原始答案建议还安装firewalld。对于许多用户而言,这似乎不是必需的,并且可能会向系统中添加其他不需要的防火墙。但是,如果要尝试,也可以添加以下命令:

sudo pacman -Syu firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo systemctl restart libvirtd

17
无需安装firewalld,也没有在ArchLinux Wiki上列出,仅需在/ 之后以ebtables和开头。dnsmasqlibvirtdvirtlogd
pepper_chico '18

11
我想强调的是,在安装ebtablesdnsmasq

3
我确认没有必要安装firewalld,如@pepper_chico(评论)和Stuart P. Bentley(其他答案)所述。
Alex Oliveira

9

这是如果的libvirtd是出现错误开始没有ebtables和/或dnsmasq安装。如果已安装它们,但仍然存在此问题,则可能需要重新启动libvirtd服务:

sudo systemctl restart libvirtd.service

感谢 意见对对方的回答这个问题照亮这一点。我将其作为原始问题的新的单独答案提交,因为安装并开始firewalld解决原始问题很可能会引起新的问题:防火墙守护程序运行后,您在虚拟机中需要的大多数服务,包括DHCP,默认情况下将被阻止,这意味着您的VM在初始化时将无法访问网络。

我花了一个多小时来寻找这个问题,并将其追溯到我刚刚启用的防火墙是我遇到过的最愚蠢的错误之一。不要让它采取任何时间

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.