Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Как настроить мост между хостом и гостем в Linux, если в virt-manager нет пункта "Общее устройство" в настройках сети?

Задачи:
  1. Сделать доступным интернет для гостевой системы.
  2. Сделать доступным подключение к гостевому ssh-серверу с хоста (желательно, по статическому ip).
Пользователь: не-root, добавлен в группы kvm и qemu.
Создал сетевой мост. Этот мост и qemu-bridge-helper доступны пользователю. Настроено как описано на сайте Qemu.
Хочу указать мост в подключении, как во всех туториалах, но там нет пункта Общее устройство (Shared device).
Выбор примерно одинаковый, вне зависимости от того, в каком подключении создана виртуальная машина, qemu:///system или qemu:///session.
Если выбрать "устройство моста", настройки получаются следующие.
<interface type="bridge">
  <mac address="52:54:00:b8:35:3f"/>
  <source bridge="myvirtbridge0"/>
  <target dev="tap0"/>
  <model type="virtio"/>
  <alias name="net0"/>
  <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</interface>
В виртуалке, MAC-адрес определяется тот же самый, но ip-адрес у гостевой машины ipv6 (с хоста не пингуется) притом, что в настройке моста у хоста проиписано, что требует ipv4. Кроме того, на хосте появляется устройство tap0 c ip-адресом, а у хоста, хоть и состояние UP, ip-адреса нет. И у моста в качестве интерфейса команда brctl show показывает tap0, а не сетевой интерфейс хоста.
Ориентируюсь на следющие туториалы:
Пробовал всё это делать при отключенном файрволе, результат не меняется.
Системное администрированиеВиртуальная машинаВиртуализация
Георгий Устинов
  · 6,1 K
Пишу код и т.п.  · 22 апр 2022  · itustinov.ru
Я не разобрался, как настроить мост, но понял, почему он здесь не нужен.
В virt-manager изначально есть два подключения, system и session.
В первом есть сеть default 192.168.122.0/24, а во втором нет ничего. Виртуальные машины во втором подключении, настроенные через "Пользовательский режим сети" могут подключаться к интернету, но получают какие-то произвольные ip-адреса в какой-то автоматически созданной сети.
Кстати, если создавать виртуальные машины в system, то не обязательно хранить образы диска в /var/lib/libvirt/images. Можно создать пул дисков в любой удобной папке.
Так вот, если у виртуальной машины в подключении system выбран тип сети NAT, она автоматически получает ip, выделенный DHCP из дефолтной сети.
Если гостевая система с DE, просто в NetworkManager'е прописываем у текущего подключения статический ip из этой же подсети, после чего переподключаем сеть иконкой в трее.
Теперь всё зависит от настроек файрволов.
Если ICMP-пакеты файрволом не блокируются, гостевая система должна пинговаться с хоста. Если вообще все файрволы выключены и у хоста, и у гостя, можно с хоста обращаться к сервисам гостя напрямую без пробрасывания портов, т.к. у хоста есть интерфейс (virbr0), находящийся в той же подсети.
У меня был чуть более сложный случай. До настройки виртуалок, я настроил у хоста iptables с достаточно простыми правилами, примерно такими, даже еще проще. Тем не менее, там была дефолтная политика INPUT DROP и не фигурировал virbr0.
При старте libvirtd дописывал в правила, что ему там не хватало для выхода в интернет, но вот ответ от 22 порта у меня обратно на хост не приходил.
Решилось добавлением в скрипт такой команды:
iptables -A INPUT -i virbr0 -m state --state ESTABLISHED,RELATED -j ACCEPT
Т.е. разрешить получение ответов через интерфейс virbr0.
После ручной перенастройки iptables (вызова shell-скрипта, который сбрасывает все настройки), надо перезапускать сервис libvirtd, чтобы он снова дописал свои.
Должен также заметить, что net.ipv4.ip_forward у меня остаётся в состоянии 0.