libvirt: “Gagal menginisialisasi backend firewall yang valid”

14

Saya mencoba mengatur perangkat jaringan NAT virtual tanpa DHCP untuk libvirt pada host Linux Arch.

Apa yang saya coba:

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

Laptop saya menampilkan yang berikut saat start-up:

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

Semua utas lain mengenai topik ini berbicara tentang peningkatan perangkat lunak - Saya menggunakan versi terbaru:

$ 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

Apa yang bisa menjadi alasan untuk itu internal errordan apa yang bisa saya lakukan melawan?

testandby
sumber

Jawaban:

26

Menginstal ebtables, firewallddan dnsmasqsepertinya memperbaiki masalah. Jangan lupa untuk memulai firewallddan juga untuk me-restart libvirtdlayanan.

Perintah:

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

CATATAN: jangan lupa untuk menutup dan membuka kembali virt-managerGUI Anda (jika Anda menggunakannya).

AliReza Mosajjal
sumber
14
Tidak perlu menginstal firewalld, itu juga tidak terdaftar di ArchLinux wiki , hanya perlu untuk memulai ebtablesdan dnsmasq, dengan libvirtd/ virtlogdsesudahnya.
pepper_chico
9
Saya ingin menekankan, restart libvirtd , setelah menginstal ebtablesdandnsmasq
ThorSummoner
1
Saya mengkonfirmasi tidak perlu menginstal firewalld, seperti dicatat oleh @pepper_chico (komentar) dan Stuart P. Bentley (jawaban lain).
Alex Oliveira
8

Ini adalah kesalahan yang muncul jika libvirtd dimulai tanpa ebtablesdan / atau dnsmasqdiinstal. Jika Anda menginstalnya dan Anda masih mengalami masalah ini, Anda mungkin perlu memulai kembali libvirtdlayanan:

sudo systemctl restart libvirtd.service

Kredit untuk para komentar pada jawaban lain untuk pertanyaan ini untuk menerangi ini. Saya mengirimkannya sebagai jawaban baru dan terpisah untuk pertanyaan awal karena menginstal dan mulai firewalldmenyelesaikan masalah awal dapat menyebabkan masalah baru : begitu firewall daemon berjalan, sebagian besar layanan yang Anda inginkan dalam mesin virtual Anda , termasuk DHCP, akan diblokir secara default , artinya VM Anda tidak akan dapat mencapai jaringan saat inisialisasi.

Saya kehilangan lebih dari satu jam dalam hidup saya mencoba melacak masalah ini, dan melacaknya ke firewall yang baru saja saya aktifkan adalah salah satu sumber bug terbodoh yang pernah saya temui. Jangan biarkan waktu dari Anda .

Stuart P. Bentley
sumber