Ich versuche, etwas Einfaches zu erreichen.
Ich habe eine Maschine mit einem einzelnen physischen Port enp89s0
. Dieser ist mit dem nativen VLAN ( VLAN=1
) verbunden.
Ich muss VMs erstellen und sie auf einem separaten platzieren VLAN=166
.
Um den Schnittstellennamen der Maschinen nicht im Systemd-Networkd angeben zu müssen, habe ich eine Brücke erstellt und verbinde dort die VMs.
Diese Bridge verfügt als Uplink über eine VLAN-Schnittstelle eth.166
, die mit der Hauptbridge verbunden ist.
Das Design würde wie folgt aussehen
------------- -------------
enps890 | | eth.166 | |
-------------| br0 |-------------| br166 |
| | | |
-------------- --------------
die VMs werden mit dem verbunden br166
.
Die VMs kennzeichnen den Datenverkehr nicht, sodass er ungekennzeichnet ankommt und die Schnittstelle eth.166
ihn kennzeichnen und an den Switch weiterleiten sollte. Mein Switch ist mit Trunk-Port konfiguriert, daher glaube ich nicht, dass es ein Problem des Switches ist. Ich habe einige Zeit damit verbracht, konnte aber den Weg nicht finden.
Hier meine Konfiguration
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
Antwort1
Dies ist meine erste Verwendung von systemd-networkd, aber es schien eindeutig das richtige Tool für einen Headless-Libvirt-Host, eine einzelne physische Schnittstelle und das Hosten von Gästen in mehreren VLANs zu sein. Ich hatte Probleme damit, aber es funktionierte gerade, also werde ich mitteilen, was bei mir funktioniert hat. Host und Gäste können ihr jeweiliges Netzwerk und Internet verwenden. Jeglicher Host-Gast-Verkehr müsste physische Netzwerke und Router (extern zum Host) durchlaufen.
(1) physische INF: enp4s0f0
(2) VLANs: f0.2 , f0.613
(2) Bridges für Gastverbindung: brV2, brV613
Host erhält DHCP-Adresse von ungetaggtem VLAN 1.
Gastverkehr ist für den Gast ungetaggt und zwischen Host und Upstream-Switch getaggt. Gäste verwenden die Bridge-Schnittstelle brV2
oder brV613
.
Bridges sind nur für Gäste gedacht, alle <key>=no
Einträge im Abschnitt [Netzwerk] vermeiden die Anzeige eines „herabgestuften“ Status von networkctl list
.
Für den ersten Einstieg in systemd-networkd fand ich eine Zeichnung hilfreich.
/etc/systemd/network files:
10-enp4s0f0.network
[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.network
[Match]
Name=f0.2
[Network]
Bridge=brV2
30-vlan613.network
[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.network
[Match]
Name=brV2
[Network]
DHCP=no
LinkLocalAddressing=no
LLDP=no
EmitLLDP=no
IPv6AcceptRA=no
IPv6SendRA=no
30-V613-brNET.network
[Match]
Name=brV613
[Network]
DHCP=no
LinkLocalAddressing=no
LLDP=no
EmitLLDP=no
IPv6AcceptRA=no
IPv6SendRA=no