libvirt: "Falha ao inicializar um back-end de firewall válido"

18

Estou tentando configurar um dispositivo de rede NAT virtual sem DHCP para libvirt em um host do Arch Linux.

O que eu tentei:

# 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>

Meu laptop produz o seguinte na inicialização:

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

Todos os outros tópicos relacionados a este tópico estão relacionados à atualização de software - estou usando as versões mais recentes:

$ 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

Qual poderia ser a razão disso internal errore o que posso fazer contra?

testandby
fonte

Respostas:

29

Instalando ebtablese dnsmasqparece corrigir o problema. Não se esqueça de reiniciar o libvirtdserviço.

Os comandos:

sudo pacman -Syu ebtables dnsmasq
sudo systemctl restart libvirtd

NOTA: não esqueça de fechar e reabrir sua virt-managerGUI (se você estiver usando uma).

EDIT: A resposta original sugeriu também a instalação firewalld. Isso não parece ser necessário para muitos usuários e pode adicionar um firewall indesejado adicional ao seu sistema. No entanto, se você quiser experimentá-lo, também poderá adicionar os seguintes comandos:

sudo pacman -Syu firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo systemctl restart libvirtd
AliReza Mosajjal
fonte
17
Não há necessidade de instalar firewalld, também não está listado no ArchLinux wiki , é apenas necessário iniciar ebtablese dnsmasq, com libvirtd/ virtlogddepois.
01
11
Eu quero enfatizar, reinicie o libvirtd , após a instalação ebtablesednsmasq
ThorSummoner
3
Confirmo que não há necessidade de instalar firewalld, como observado por @pepper_chico (comentário) e Stuart P. Bentley (outra resposta).
Alex Oliveira
"OBRIGADO", seu firewall acabou de me trancar do lado de fora do meu servidor remoto e NÃO ESTÁ FAZENDO NADA ABSOLUTAMENTE PELA PERGUNTA ... quão estúpido você é, ou você é um daqueles caras que APENAS APRECIA QUEIMAR OUTRAS PESSOAS ... POR DIVERTIMENTO? !?
THESorcerer
9

Este é o erro que surge se o libvirtd foi iniciado sem ebtablese / ou dnsmasqinstalado. Se você os tiver instalado e ainda tiver esse problema, provavelmente precisará reiniciar o libvirtdserviço:

sudo systemctl restart libvirtd.service

Agradecemos os comentários da outra resposta a esta pergunta por esclarecer isso. Estou enviando-o como uma resposta nova e separada para a pergunta original, porque a instalação e o início firewalldda solução do problema original podem causar novos problemas : assim que o daemon do firewall estiver em execução, a maioria dos serviços que você deseja na sua máquina virtual , incluindo DHCP, será bloqueado por padrão , o que significa que suas VMs não poderão acessar a rede na inicialização.

Perdi mais de uma hora da minha vida tentando rastrear esse problema, e rastreá-lo para um firewall que eu havia acabado de ativar era uma das fontes mais idiotas de um bug em que já encontrei. Não deixe que demore algum tempo para você .

Stuart P. Bentley
fonte