Вопрос или проблема
Я не могу получить доступ к 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 интерфейса вместо объединённого, как вы делали раньше, до устранения основного вопроса.