web-dev-qa-db-ja.com

libvirt: "有効なファイアウォールバックエンドの初期化に失敗しました"

Arch Linuxホストでlibvirtの仮想NAT DHCPなしのネットワークデバイスをセットアップしようとしています。

私が試したこと:

# 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そして私は何に反対することができますか?

19
testandby

ebtablesdnsmasqをインストールすると問題が解決するようです。 libvirtdサービスを再起動することを忘れないでください。

コマンド:

Sudo pacman -Syu ebtables dnsmasq
Sudo systemctl restart libvirtd

注:virt-manager GUI(使用している場合)を閉じて再度開くことを忘れないでください。

編集:firewalldのインストールも提案された元の回答。これは多くのユーザーには必要ないと思われ、システムに不要なファイアウォールを追加する可能性があります。ただし、試してみたい場合は、次のコマンドも追加できます。

Sudo pacman -Syu firewalld
Sudo systemctl start firewalld
Sudo systemctl enable firewalld
Sudo systemctl restart libvirtd
32

これは、ebtablesdnsmasqがインストールされていない状態でlibvirtdがstartedされた場合に発生するエラーです。それらをインストールしても問題が解決しない場合は、おそらくlibvirtdサービスを再起動する必要があります。

Sudo systemctl restart libvirtd.service

これを明らかにするためのこの質問に対する他の回答の thecomments へのクレジット。元の問題を解決するためにfirewalldをインストールして起動することは原因となる新しい問題になる可能性があるため、元の質問に対する新しい個別の回答として送信します。ファイアウォールデーモンが実行されると、仮想マシン内で必要なほとんどのサービスDHCPを含む、デフォルトでブロックされます、つまり、初期化時にVMがネットワークに到達できなくなります。

この問題を追跡するために1時間以上失いました。有効にしたばかりのファイアウォールまで追跡しましたは、私が経験したバグの最も愚かな原因の1つでしたに遭遇する。 yoursから時間がかかることはありません。

10