Назад | Перейти на главную страницу

Настройка моста Linux для всех VLAN (с тегами), когда существуют мосты для тех же сетей VLAN (без тегов)

TL; DR: Кто-нибудь знает, как связать мосты с VLAN (например, virbr0.101) и общий мост, который поддерживает сосуществование всех VLAN (например, virbr0)?

Извините за бессвязную предысторию, но я создаю ее для вас слоями. У меня довольно общая (общая) конфигурация для запуска гостей KVM / LibVirt на сервере CentOS 7, где

«eno1» + «eno2» + «eno3» + «eno4» связаны, чтобы стать «bond0». В моей коммутационной фабрике у меня есть интерфейс 803.2ad + LACP, где я затем настраиваю режим магистрали 802.1Q и добавляю к нему vlan 101, 102, 103, 104.

Вернувшись в Linux, я затем расширил "bond0" с помощью интерфейсов vlan: "bond0.101", "bond0.102", "bond0.103", "bond0.104"

и, наконец, набор мостов, которые я использую для гостей KVM: "virbr0.101", "virbr0.102", "virbr0.103", "virbr0.104"

Все идет нормально. Гости используют мост типа «virbr0.101» и получают доступ к VLAN 101 с нетегированными пакетами. Я настраиваю всех гостей с помощью простого "eth0", и они НЕ знают, в каком сегменте сети они работают. Мост снимает теги с пакетов для них. Я занимаюсь этим годами. Работает как мечта.


Перенесемся в настоящий момент, и у меня есть новый виртуальный брандмауэр, в котором я хочу (должен) передать весь тегированный канал VLAN этому гостю KVM.

Вернувшись на сервер, я, естественно, настраиваю «virbr0», который является мостом для «bond0», и создаю свой виртуальный межсетевой экран. Я сделал это и на стандартной машине Centos, поэтому позвольте мне использовать жаргон Linux вместо жаргона Juniper Junos vSRX для объяснения:

У меня есть гость CentOS 7, работающая на том же хост-сервере KVM, что и другие гости, и этот новый гость использует «virbr0»; который, как я предполагаю, является полностью помеченным мостом. Затем я перехожу к этому новому гостю и настраиваю интерфейс «eth0.101» с IP-адресом, который должен работать в VLAN 101 (примечание: на самом деле мне понадобится «eth0.102», «eth0.103» ", а также" eth0.104 ".)


Пробую пинг, ничего не работает. Я ничего не могу достичь в сети VLAN 101.

Просмотр с помощью tcpdump на KVM сервере:

Итак, я думаю, что происходит следующее:

Трафик перенаправляется на bond0.101 / virbr0.101 и никогда не появляется на virbr0, который является мостом, подключенным к bond0.

В конечном итоге MAC-адрес eth0.101 на том «гостевом соединении VLAN», использующем virbr0, никогда не узнается, и сеть к / от этого гостя нарушается.


Я искал все решения этой проблемы и перепробовал так много вещей, что смог заполнить небольшую книгу. Кто-нибудь знает, как связать мосты с VLAN (например, virbr0.101) и универсальным мостом, который поддерживает сосуществование всех VLAN (например, virbr0)?

-Марк