libvirt: "Impossible d'initialiser un backend de pare-feu valide"

18

J'essaie de configurer un périphérique réseau NAT virtuel sans DHCP pour libvirt sur un hôte Arch Linux.

Ce que j'ai essayé:

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

Mon ordinateur portable affiche les éléments suivants au démarrage:

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

Toutes les autres discussions concernant ce sujet parlent de mise à niveau du logiciel - j'utilise les versions les plus récentes:

$ 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

Quelle pourrait être la raison de cela internal erroret contre quoi puis-je faire?

testandby
la source

Réponses:

29

L'installation ebtableset dnsmasqsemble résoudre le problème. N'oubliez pas de redémarrer le libvirtdservice.

Les commandes:

sudo pacman -Syu ebtables dnsmasq
sudo systemctl restart libvirtd

REMARQUE: n'oubliez pas de fermer et de rouvrir votre virt-managerinterface graphique (si vous en utilisez une).

EDIT: La réponse originale suggérait également l'installation firewalld. Cela ne semble pas être nécessaire pour de nombreux utilisateurs et peut ajouter un pare-feu indésirable supplémentaire à votre système. Cependant, si vous voulez l'essayer, vous pouvez également ajouter les commandes suivantes:

sudo pacman -Syu firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo systemctl restart libvirtd
AliReza Mosajjal
la source
17
Il n'est pas nécessaire de l'installer firewalld, il n'est pas non plus répertorié sur le wiki ArchLinux , il est juste nécessaire de démarrer ebtableset dnsmasq, avec libvirtd/ virtlogdaprès.
pepper_chico
11
Je veux souligner, redémarrer libvirtd , après avoir installé ebtablesetdnsmasq
ThorSummoner
3
Je confirme qu'il n'y a pas besoin d'installer firewalld, comme l'ont noté @pepper_chico (commentaire) et Stuart P. Bentley (autre réponse).
Alex Oliveira
"MERCI" votre pare-feu m'a juste enfermé hors de mon serveur distant, et NE FAIT ABSOLUMENT RIEN POUR LA QUESTION ... à quel point VOUS ÊTES STUBIDE, ou vous êtes l'un de ces gars qui JUSTE PROFITEZ DE BRÛLER D'AUTRES PERSONNES ... POUR LE PLAISIR? !?
THESorcerer
9

Il s'agit de l'erreur qui apparaît si libvirtd a été démarré sans ebtableset / ou dnsmasqinstallé. Si vous les avez installés et que vous rencontrez toujours ce problème, vous devrez probablement redémarrer le libvirtdservice:

sudo systemctl restart libvirtd.service

Nous remercions les commentaires sur l'autre réponse à cette question d'avoir éclairé cela. Je le soumets en tant que réponse nouvelle et distincte à la question d'origine, car l'installation et le démarrage firewalldde la résolution du problème d'origine sont susceptibles de provoquer de nouveaux problèmes : une fois le démon de pare-feu en cours d'exécution, la plupart des services dont vous aurez besoin au sein de votre machine virtuelle , y compris DHCP, sera bloqué par défaut , ce qui signifie que vos machines virtuelles ne pourront pas atteindre le réseau lors de l'initialisation.

J'ai perdu plus d'une heure de ma vie en essayant de retrouver ce problème, et le tracer sur un pare-feu que je venais d'activer était l'une des sources les plus stupides d'un bug que j'ai jamais rencontré. Ne le laissez pas prendre le temps de tout le vôtre .

Stuart P. Bentley
la source