libvirt: «Не удалось инициализировать действительный брандмауэр брандмауэра»

18

Я пытаюсь настроить виртуальное сетевое устройство NAT без DHCP для libvirt на хосте Arch Linux.

Что я пробовал:

# 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и что я могу сделать против?

testandby
источник

Ответы:

29

Установка ebtablesи, dnsmasqкажется, решить проблему. Не забудьте перезапустить libvirtdсервис.

Команды:

sudo pacman -Syu ebtables dnsmasq
sudo systemctl restart libvirtd

ПРИМЕЧАНИЕ: не забудьте закрыть и снова открыть virt-managerграфический интерфейс (если вы его используете).

РЕДАКТИРОВАТЬ: оригинальный ответ предложил также установить firewalld. Это не кажется необходимым для многих пользователей и может добавить дополнительный нежелательный межсетевой экран в вашу систему. Однако, если вы хотите попробовать это, вы можете добавить следующие команды:

sudo pacman -Syu firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo systemctl restart libvirtd
АлиРеза Мосаджал
источник
17
Нет необходимости устанавливать firewalld, его также нет в вики ArchLinux , просто нужно начать ebtablesи dnsmasqс libvirtd/ virtlogdпосле.
pepper_chico
11
Я хочу подчеркнуть, перезапустите libvirtd , после установки ebtablesиdnsmasq
ThorSummoner
3
Я подтверждаю, что нет необходимости устанавливать firewalld, как отмечают @pepper_chico (комментарий) и Стюарт П. Бентли (другой ответ).
Алекс Оливейра
«СПАСИБО», ваш firewalld только что запер меня за пределами моего удаленного сервера и не делает абсолютно ничего для вопроса ... насколько вы глупы, или вы один из тех парней, которые просто наслаждаются сжиганием других людей ... ради удовольствия? !?
THESorcerer
9

Это ошибка, которая появляется, если libvirtd был запущен без ebtablesи / или dnsmasqустановлен. Если они установлены, но проблема все еще не устранена, вам, вероятно, необходимо перезапустить libvirtdслужбу:

sudo systemctl restart libvirtd.service

Благодарим за комментарии к другому ответу на этот вопрос для освещения этого. Я представляю его как новый и отдельный ответ на исходный вопрос, поскольку установка и запуск firewalldдля решения исходной проблемы могут вызвать новые проблемы : после запуска демона брандмауэра большинство служб, которые вы захотите использовать на своей виртуальной машине , включая DHCP, по умолчанию будет заблокирован , что означает, что ваши виртуальные машины не смогут подключиться к сети при инициализации.

Я потерял более часа своей жизни, пытаясь отследить эту проблему, и отслеживание ее на брандмауэре, который я только что включил, было одним из самых глупых источников ошибок, с которыми я когда-либо сталкивался. Не позволяй этому занять какое-то время у тебя .

Стюарт П. Бентли
источник