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

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

Я пытаюсь добиться чего-то простого.

У меня есть машина с одним физическим портом enp89s0. Он подключен к собственной VLAN ( VLAN=1).

Мне нужно создать виртуальные машины и разместить их на отдельном VLAN=166.

Чтобы не указывать имя интерфейса машин в systemd networkd, я создал мост и подключил виртуальные машины туда.

Этот мост имеет в качестве восходящего канала интерфейс VLAN eth.166, который подключен к основному мосту.

дизайн будет выглядеть следующим образом

              -------------               -------------
  enps890    |             |     eth.166 |              |
-------------|   br0       |-------------|    br166     | 
             |             |             |              |
             --------------               --------------

виртуальные машины подключаются к br166.

Виртуальные машины не маркируют трафик, поэтому трафик приходит без тега, а интерфейс eth.166должен маркировать его и передавать на коммутатор. Мой коммутатор настроен на порт транка, поэтому я не думаю, что проблема в коммутаторе. Я потратил на это некоторое время, но так и не смог найти способ.

Вот моя конфигурация

br0.netdev

[NetDev]
Name=br0
Kind=bridge

[Bridge]
VLANFiltering=yes

br0.network

[Match]
Name=br0

[Network]
DHCP=yes

[Network]
VLAN=eth.166

enps890.network

[Match]
Name=enp89s0
[Network]
Bridge=br0
[BridgeVLAN]
VLAN=166

br166.netdev

[NetDev]
Name=br166
Kind=bridge

[Bridge]
VLANFiltering=yes

br166.network

[Match]
Name=br166

[Network]
DHCP=no

eth.166.network

[Match]
Name=eth.166

[Network]
Bridge=br166
DHCP=no

[BridgeVLAN]
VLAN=166
PVID=166
EgressUntagged=166

eth.166.netdev

[NetDev]
Name=eth.166
Kind=vlan

[VLAN]
Id=166
$ bridge vlan

port              vlan-id
enp89s0           1 PVID Egress Untagged
                  166
br0               1 PVID Egress Untagged
br166             1 PVID Egress Untagged
eth.166           1 Egress Untagged
                  166 PVID Egress Untagged
virbr0            1 PVID Egress Untagged

решение1

Это мой первый опыт использования systemd-networkd, но он явно показался мне правильным инструментом для headless libvirt host, одного физического интерфейса, размещения гостей в нескольких VLAN. Я боролся с ним, но только что заставил его работать, поэтому поделюсь тем, что сработало для меня. Хост и гости могут использовать свои соответствующие сети и Интернет. Любой трафик хост-гость должен будет проходить через физические сети и маршрутизатор (внешние по отношению к хосту).

(1) физический INF: enp4s0f0
(2) VLAN: f0.2, f0.613
(2) Мосты для гостевого подключения: brV2, brV613
Хост получает DHCP-адрес из немаркированной VLAN 1
Гостевой трафик немаркирован для гостя и тегирован между хостом и вышестоящим коммутатором. Гости используют интерфейс Bridge brV2или brV613.
Мосты, предназначенные только для гостей, все <key>=noзаписи в разделе [Сеть] избегают отображения статуса «деградировавший» от networkctl list.

Для первого входа в systemd-networkd мне пригодился рисунок.
Рисунок конфигурации - systemd.networkd с VLAN для гостевых libvirt

/etc/systemd/network files:  

10-enp4s0f0.сеть

[Match]
Name=enp4s0f0

[Network]
DHCP=ipv4
VLAN=f0.2
VLAN=f0.613

[DHCPv4]
UseDNS=no

28-vlan2.netdev

[NetDev]
Name=f0.2
Kind=vlan

[VLAN]
Id=2

28-vlan613.netdev

[NetDev]
Name=f0.613
Kind=vlan

[VLAN]
Id=613

30-vlan2.сеть

[Match]
Name=f0.2

[Network]
Bridge=brV2  

30-vlan613.сеть

[Match]
Name=f0.613

[Network]
Bridge=brV613

30-br2.netdev

[NetDev]
Name=brV2
Kind=bridge

30-br613.netdev

[NetDev]
Name=brV613
Kind=bridge

30-V2-brNET.сеть

[Match]
Name=brV2

[Network]
DHCP=no
LinkLocalAddressing=no
LLDP=no
EmitLLDP=no
IPv6AcceptRA=no
IPv6SendRA=no

30-V613-brNET.сеть

[Match]
Name=brV613

[Network]
DHCP=no
LinkLocalAddressing=no
LLDP=no
EmitLLDP=no
IPv6AcceptRA=no
IPv6SendRA=no

Связанный контент