Невозможно настроить KVM на мостовом интерфейсе с подчинённым интерфейсом в объединении.

Вопрос или проблема

Я не могу получить доступ к KVM через сеть, когда его сеть является мостом с подключенным интерфейсом в качестве слейва. Вот как я создаю соединённый интерфейс bond0:

sudo nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup"
sudo nmcli connection add type ethernet slave-type bond con-name bond0-port1 ifname eno1np0 master bond0
sudo nmcli connection add type ethernet slave-type bond con-name bond0-port2 ifname eno2np1 master bond0

Вот как порты настроены на LAG на коммутаторе:

> show lacp interfaces ae2
Aggregated interface: ae2
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      xe-0/0/2 FUP    Actor   No    No   Yes  Yes  Yes   Yes     Fast    Active
      xe-0/0/2 FUP  Partner   No   Yes    No   No  Yes   Yes     Fast   Passive
      xe-1/0/2       Actor    No   Yes    No   No   No   Yes     Fast    Active
      xe-1/0/2     Partner    No   Yes    No   No   No   Yes     Fast   Passive
    LACP protocol:        Receive State  Transmit State          Mux State
      xe-0/0/2 FUP              Current   Fast periodic Collecting distributing
      xe-1/0/2                Defaulted   Fast periodic           Detached

Вот как я создаю мост kvbr0:

sudo nmcli con add ifname kvbr0 type bridge con-name kvbr0
sudo nmcli con add type bridge-slave ifname bond0 master kvbr0

sudo nmcli con mod kvbr0 ipv4.addresses 10.192.161.200/24
sudo nmcli con mod kvbr0 ipv4.gateway 10.192.161.1
sudo nmcli con mod kvbr0 ipv4.dns "10.250.0.26 10.122.64.26 10.194.0.26"
sudo nmcli con mod kvbr0 ipv4.method manual

Вот как я создаю виртуальную машину:

sudo virt-install
--virt-type kvm  --name kvm1 --ram 4096  --vcpus 2  --disk size=20
--os-variant rocky9  --network network=bridged-network  --graphics none
--location /tmp/Rocky-9.4-x86_64-minimal.iso  --check all=off
--initrd-inject /tmp/kvm1.cfg --extra-args="inst.ks=file:/kvm1.cfg console=tty0 console=ttyS0,115200"
--noautoconsole  --autostart  --wait -1

bridged-network состоит из моста kvbr0.

Я могу пинговать bond0 и kvbr0, но не получаю ответа на пинг для интерфейса на KVM. Вот настройки для интерфейса на виртуальной машине:

2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:5a:01:ed brd ff:ff:ff:ff:ff:ff
    inet 10.192.161.201/24 brd 10.192.161.255 scope global noprefixroute enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe5a:1ed/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

У меня нет никаких проблем, когда базовый интерфейс на мосту является обычным Ethernet-портом.

Хост работает на Rocky9.3, а виртуальная машина на Rocky9.4. Оба работают на ядре 5.14.

Ответ или решение

Проблема с сетевым доступом KVM через мост с объединённым интерфейсом

Ваша проблема заключается в том, что вы не можете получить доступ к виртуальной машине (VM) KVM через сеть, когда её сеть настроена в качестве моста (bridge), использующего объединённый интерфейс (bonded interface) как подчинённый. Вы уже выполнили многие настройки корректно, однако, для того чтобы решить проблему, давайте проанализируем несколько ключевых аспектов конфигурации.

1. Проверка конфигурации объединённого интерфейса

Вы создаёте объединённый интерфейс bond0 в режиме active-backup. Убедитесь, что конфигурация bond0 реально функционирует корректно и оба подчинённых интерфейса (eno1np0 и eno2np1) активны и настроены в одной сети. Вы также можете проверить состояние объединённых интерфейсов командой:

cat /proc/net/bonding/bond0

2. Проверка конфигурации моста

Ваш мост kvbr0 правильно настроен как slave для bond0. Убедитесь, что сам мост также правильно функционирует и может взаимодействовать с хостовой сетью. Убедитесь, что настройки IP правильные и нет конфликтов. Например, вы можете проверить маршрут и состояние интерфейсов с помощью команд:

ip addr show kvbr0
ip route show

3. Настройка VM

Поскольку вы можете успешно пинговать bond0 и kvbr0, но не можете получить ответ от интерфейса VM (enp1s0), важно убедиться, что в подсети 10.192.161.0/24 нет конфликтов IP-адресов. Кроме того, проверьте настройки брандмауэра на хосте и внутри VM, чтобы убедиться, что пакеты не блокируются.

4. Проверка настроек LACP на коммутаторе

Ваш коммутатор настроен для работы с LACP. Убедитесь, что все порты, задействованные в объединении, активны и правильно настроены. Вы также можете проверить соединение на уровне Ethernet, используя команды, например, tcpdump:

sudo tcpdump -i kvbr0

Это позволит вам увидеть, проходят ли пакеты через интерфейс.

5. Логирование и диагностика

Включите логирование сетевых ошибок и просмотрите сообщения в системном журнале:

journalctl -xe

Сюда могут попадать ценные подсказки о том, что происходит на уровне сети.

6. Удаление избыточности

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

Вывод

Проблема с доступом к KVM через сетевой мост с объединённым интерфейсом может быть вызвана рядом причин, включая неправильные настройки на объединённом интерфейсе, ошибки в конфигурации моста или настройки брандмауэра. Пройдя все указанные шаги, вы сможете более точно диагностировать и устранить проблему с сетевым подключением. Если проблема сохраняется, возможно, стоит рассмотреть возможность использования обычного Ethernet интерфейса вместо объединённого, как вы делали раньше, до устранения основного вопроса.

Оцените материал
Добавить комментарий

Капча загружается...