libvirt: „Nie udało się zainicjować prawidłowego zaplecza zapory”

18

Próbuję skonfigurować wirtualne urządzenie sieciowe NAT bez DHCP dla libvirt na hoście Arch Linux.

Co próbowałem:

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

Mój laptop wyświetla następujące informacje podczas uruchamiania:

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

Wszystkie inne wątki dotyczące tego tematu mówią o aktualizacji oprogramowania - używam najnowszych wersji:

$ 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

Co może być tego przyczyną internal errori co mogę zrobić przeciwko?

testandby
źródło

Odpowiedzi:

30

Instalowanie ebtablesi dnsmasqwydaje się rozwiązać problem. Nie zapomnij ponownie uruchomić libvirtdusługi.

Polecenia:

sudo pacman -Syu ebtables dnsmasq
sudo systemctl restart libvirtd

UWAGA: nie zapomnij zamknąć i ponownie otworzyć virt-managerGUI (jeśli go używasz).

EDYCJA: Oryginalna odpowiedź sugerowała również instalację firewalld. Nie wydaje się to konieczne dla wielu użytkowników i może dodać do systemu dodatkową niechcianą zaporę ogniową. Jeśli jednak chcesz go wypróbować, możesz również dodać następujące polecenia:

sudo pacman -Syu firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo systemctl restart libvirtd
AliReza Mosajjal
źródło
17
Nie ma potrzeby instalowania firewalld, nie ma go również na wiki ArchLinux , wystarczy rozpocząć ebtablesi dnsmasq, z libvirtd/ virtlogdpóźniej.
pepper_chico
11
Chcę podkreślić, zrestartuj libvirtd , po instalacji ebtablesidnsmasq
ThorSummoner
3
Potwierdzam, że nie ma potrzeby instalacji firewalld, jak zauważyli @pepper_chico (komentarz) i Stuart P. Bentley (inna odpowiedź).
Alex Oliveira
9

Jest to błąd, który pojawia się, jeśli libvirtd został uruchomiony bez ebtablesi / lub dnsmasqzainstalowany. Jeśli masz je zainstalowane i nadal występuje ten problem, prawdopodobnie musisz ponownie uruchomić libvirtdusługę:

sudo systemctl restart libvirtd.service

Kredytowej w komentarzach po drugiej odpowiedź na to pytanie to dla oświetlania. Przekazuję go jako nową i osobną odpowiedź na pierwotne pytanie, ponieważ instalacja i rozpoczęcie firewalldrozwiązywania pierwotnego problemu może powodować nowe problemy : po uruchomieniu demona zapory większość usług, które będą potrzebne na maszynie wirtualnej , w tym DHCP, zostanie domyślnie zablokowany , co oznacza, że ​​maszyny wirtualne nie będą mogły uzyskać dostępu do sieci podczas inicjalizacji.

Straciłem ponad godzinę swojego życia, próbując wyśledzić ten problem, a prześledzenie go do zapory ogniowej, którą właśnie włączyłem, było jednym z najgłupszych źródeł błędu, na jaki kiedykolwiek wpadłem. Nie pozwól mu wziąć dowolny czas od twoich .

Stuart P. Bentley
źródło