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і що я можу зробити проти?

Відповіді:


30

Встановлення ebtablesі, dnsmasqздається, вирішує проблему. Не забудьте перезапустити libvirtdпослугу.

Команди:

sudo pacman -Syu ebtables dnsmasq
sudo systemctl restart libvirtd

ПРИМІТКА. Не забудьте закрити та знову відкрити virt-managerграфічний інтерфейс (якщо він використовується).

EDIT: Оригінальна відповідь пропонувала також встановити 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 (коментар) та Stuart P. Bentley (інша відповідь).
Алекс Олівейра

9

Це помилка, яка виникає, якщо libvirtd був запущений без ebtablesта / або dnsmasqвстановлений. Якщо ви встановили їх і у вас все ще виникає ця проблема, можливо, вам доведеться перезапустити libvirtdслужбу:

sudo systemctl restart libvirtd.service

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.