Честно говоря, я не фанат NM, тем более, что обычные конфигурационные файлы RHEL неплохо справляются со своей задачей (по крайней мере, в этом конкретном случае).
Идея заключается в следующем:
[NIC] -> [VLAN X] -> [bridgeX] -> [VM]
L-----> [VLAN Y] -> [мостY] -> [ВМ]
В RHEL/CentOS/etc это будет выглядеть следующим образом:
Базовая сетевая карта eth0 (также может быть бондом) /etc/sysconfig/network-scripts/ifcfg-eth0:
ТИП=Ethernet
BOOTPROTO=нет
ИМЯ=eth0
УСТРОЙСТВО=eth0
ONBOOT=да
NM_CONTROLLED=нет
Маркированный интерфейс VLAN: /etc/sysconfig/network-scripts/ifcfg-eth0.100
УСТРОЙСТВО=eth0.100
BOOTPROTO=нет
ONBOOT=да
VLAN=yes #на самом деле это настройка VLAN
BRIDGE=br100 # мост, который мы прикрепим поверх этого помеченного интерфейса
Вы можете повторить это для любого тега VLAN, просто изменив номер тега.
Настройка моста для каждой VLAN: /etc/sysconfig/network-scripts/ifcfg-br100
УСТРОЙСТВО=br100
ТИП=Мост
DELAY=0 #важно, если вы планируете живую миграцию виртуальных машин между несколькими хостами
STP=выкл.
ONBOOT=да
IPADDR=1.2.3.4 #IP в VLAN 100
СЕТЕВАЯ МАСКА=x.x.x.x
ШЛЮЗ=x.x.x.x
BOOTPROTO=нет
МТУ=1500
NM_CONTROLLED=нет
DNS1=x.x.x.x
Теперь трафик любой виртуальной машины, использующей мост br100, будет помечен тегом 100.