Как настроить VLAN вместе с Libvirt / KVM / QEMU и OVS?

Я использую машину Debian 9 в качестве маршрутизатора с двумя интерфейсами:

eth0 for WAN
eth1 for LAN

Eth1 имеет субинтерфейсы для нескольких VLAN (eth1.10; eth1.20; eth1.30) и имеет магистральное соединение с управляемым коммутатором. К портам доступа коммутатора подключены различные устройства, имеющие доступ в Интернет. Довольно стандартная установка, все работает, как ожидалось.

Теперь я пытаюсь создать несколько виртуальных машин прямо внутри маршрутизатора Debian, используя libvirt / KVM / Qemu, и подключить их с помощью моста OVS к существующим VLAN. Что-то вроде воссоздания той же физической конфигурации, что я описал выше, но виртуализированной.

Я попытался создать ovsbr0, добавить порт eth1 в мост, а затем добавить помеченные порты для определенных VLAN, к которым я хотел, чтобы виртуальные машины подключались, вот так:

# ovs-vsctl add-br ovsbr0
# ovs-vsctl add-port ovsbr0 eth1
# ovs-vsctl add-port ovsbr0 vnet1 tag=10
# ovs-vsctl add-port ovsbr0 vnet2 tag=20
# ovs-vsctl add-port ovsbr0 vnet3 tag=30

Когда я запускаю реальные виртуальные машины, мост выглядит следующим образом:

# ovs-vsctl show
   Bridge ovsbr0
       Port ovsbr0
           Interface ovsbr0
               type: internal
       Port "eth1"
           Interface "eth1"
       Port "vnet1"
           tag: 10
           Interface "vnet1"
       Port "vnet2"
           tag: 20
           Interface "vnet2"
       Port "vnet3"
           tag: 30
           Interface "vnet3"

К моему удивлению, интерфейсы vnet виртуальных машин не имеют соединения. Из tcpdump на eth1 я вижу, что кадры ARP с виртуальных машин правильно помечены и достигают интерфейса eth1, но по какой-то причине не пересылаются на подинтерфейсы. Я никогда раньше не использовал OVS, поэтому я явно упускаю что-то важное, но не могу понять, что это такое.

Может ли кто-нибудь указать мне правильное направление?

0
задан 7 March 2020 в 01:15
1 ответ

Мост OVS будет пересылать трафик только на порты, которые являются частью реально настроенного моста. Хотя eth1 правильно добавлен к мосту в качестве магистральных интерфейсов, подынтерфейсы (eth1.10; eht1.20; eth1.30) не являются частью моста и никогда не увидят трафик. Решение простое - просто добавьте упомянутые субинтерфейсы VLAN к мосту.

0
ответ дан 30 March 2020 в 01:31

Теги

Похожие вопросы