Я пытаюсь добиться чего-то простого.
У меня есть машина с одним физическим портом 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 мне пригодился рисунок.
/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