VLANS für VMs und Host

Nov 25, 2025
54
21
8
Moin zusammen!

Ich habe eine Frage zum Networking.

Wir arbeiten mit vielen VLANS. Ein Teil der VLANS muss nur an meine VMs weitergegeben werden. Einige VLANS müssen an meinen PVE-Host.

Ich habe ein dediziertes VLAN für die WEBGUI unsere PVE-Hosts . (VLAN 10)

Und verschiedene Netze für Backup (BPS) und Storage (Anbindung RBD/NFS). VLAN 11 und 12.

Diese Netzte habe ich an den Hosts mit einer IP auf der vmbr0 definiert (vmbr0.11 etc.). An dieser vmbr0 hängt ein bond0 im LACP.

Alle anderen VLANs, welche für die VMs bestimmt sind, definiere ich per SDN. Also ich habe eine Zone angelegt, hier die vmbr0 hinterlegt und entsprechende VNets angelegt.

Soweit so gut. Funktioniert auch alles.


Jetzt zu meinem Problem:


VLAN 11 und 12 müssen in vereinzelten Fällen auch an VMs anliegen. Wenn ich VLAN 11/12 jetzt per SDN definiere bricht dafür der Kontakt der vmbr0.11/12 ab.
Wie kann ich dies umgehen?

Bei einem Cluster habe ich es jetzt vorerst so "gelöst", dass ich für die VLANs, welche ich am Host benötige, eine separate NIC am Host nutze und hier eine weitere VBridge (vmbr1) mit den entsprechenden VLAN (vmbr1.11/12) definiert habe.
 
Ich habe keine 1.1 gleiche Umgebung, aber so weit ich das gerade mal nachbauen konnte gibt es die Brücke schonmal, die heißt aber anders:

Code:
root@proxmox ~ > brctl show vmbr0v101
bridge name     bridge id               STP enabled     interfaces
vmbr0v101       8000.901b0eb086b6       no              bond1.101
                                                        pr_VLAN101

Vielleicht ist das Problem ... vmbr0.11 vs. vmbr0v11?
 
Ich habe deine Konfig mal nachgebaut:


Code:
root@proxmox:~# brctl show vmbr0v11
bridge name     bridge id               STP enabled     interfaces
vmbr0v11               8000.6c92cf6996b0       no              bond0.11


Habe auf dem bond0 ein Linux-Vlan bond.11 angelegt. Ich habe dann eine Bridge vmbr0v11 angelegt.

Ich habe die IP für meinen Host hier auf der vmbr0v11 definiert.

Ich habe jetzt also eine vmbr0 mit dem interface bond0. Diese Bridge ist in meiner VLAN-Zone im SDN hinterlegt.

Zudem die Bridge vmbr0v11 mit dem Interface bond0.11 Hier soll nichts zu den VMs durchgereicht werden.


Bin jetzt vllt einen Schritt weiter. Die Netzwerkverbindung am Host funktioniert weiterhin, nachdem ich im SDN das VLAN 11 definiert habe.
Habe eine Test-VM aufgesetzt und bei dieser die IP fest vergeben. Leider ohne Erfolg. Ping innerhalb des selben Netzes nicht möglich.




Was genau hat es mit "pr_VLAN101" auf sich, was bei dir noch als Interface definiert ist?
 
Ist deine zugrunde liegende bridge VLAN-aware?

Wenn sie das nicht ist, wird stattdessen eine bridge vmbr0v11 angelegt, mit bond0.11 als bridge port. Das problem hierbei ist dann, dass dieses VLAN subinterface auf dem bond das VLAN auf der bridge selbst 'blackholed'. Wenn sowohl der host, als auch die gaeste auf das VLAN zugreifen muessen, dann muss man die bridge, die im SDN angegeben wird, VLAN-aware machen.


Falls das nicht klappt, poste bitte mal den output der folgenden befehle:

Code:
cat /etc/pve/sdn/zones.cfg
cat /etc/pve/sdn/vnets.cfg

cat /etc/network/interfaces
cat /etc/network/interfaces.d/sdn

ip a
 
Moin zusammen!

Ich habe eine Frage zum Networking.

Wir arbeiten mit vielen VLANS. Ein Teil der VLANS muss nur an meine VMs weitergegeben werden. Einige VLANS müssen an meinen PVE-Host.

Ich habe ein dediziertes VLAN für die WEBGUI unsere PVE-Hosts . (VLAN 10)

Und verschiedene Netze für Backup (BPS) und Storage (Anbindung RBD/NFS). VLAN 11 und 12.
Hier erst einmal eine dumme Frage. meinst du mit RBD Ceph?
VLAN 11 und 12 müssen in vereinzelten Fällen auch an VMs anliegen. Wenn ich VLAN 11/12 jetzt per SDN definiere bricht dafür der Kontakt der vmbr0.11/12 ab.
Wie kann ich dies umgehen?
Wie Stefan eben geschrieben hat, nimmst du dir das VLAN schon vorher weg.
Ich löse das oft so, wenn ich auf dem PVE ein VLAN Interface habe und da soll mal eine VM mit in dem VLAN sprechen, bleibt das PVE Interface vmbr0.11 und der VM gebe ich die vmbr0 und bei der virtuellen NIC dann das VLAN11.
Wenn du das VLAN öfters bei VMs benötigst und der PVE auch unbedingt eine Verbindung benötigt, müsste man mal über das gesamte Design nachdenken. Eventuell ist da auch manchmal ein Routing mit einer Firewall sinnvoll. Nur mal so als Gedankenanschubser.
 
Ist deine zugrunde liegende bridge VLAN-aware?
Ja die vmbr0 ist vlan-aware. Diese ist auch im SDN hinterlegt.
Wenn sie das nicht ist, wird stattdessen eine bridge vmbr0v11 angelegt, mit bond0.11 als bridge port.
Ah ok, das habe ich bei mir manuell angelegt, da ich die Konfiguration von @LnxBil nachbauen wollte.

Ich habe jetzt nochmal alles auf meine Ausgangssituation zurück gebaut. Ich teste es auf einem Test-Host.

Hier habe ich für meinen Host eine IP im VLAN 11 definiert auf vmbr0.111 definiert.

Das VLAN 11 habe ich im SDN ebenfalls definiert.

Der Host kann jetzt keine Verbindung zum VLAN 11 aufbauen (ping -I vmbr0.11 10.x.x.x. funktioniert nicht). Anbindung zum externen Storage, welcher über diese Schnittstelle laufen sollte, funktioniert nicht mehr.

Dafür funktioniert das VLAN an der VM. Diese kann andere Clients in dem Netz pingen.
Falls das nicht klappt, poste bitte mal den output der folgenden befehle:

Code:
root@proxmox:~# cat /etc/pve/sdn/zones.cfg
vlan: zVLAN
        bridge vmbr0
        ipam pve

Code:
root@proxmox:~# cat /etc/pve/sdn/vnets.cfg
vnet: VLAN79
        zone zVLAN
        alias Name1
        tag 79

vnet: VLAN98
        zone zVLAN
        alias Name2
        tag 98

vnet: VLAN100
        zone zVLAN
        alias Name3
        tag 100

vnet: VLAN165
        zone zVLAN
        alias Name4
        tag 165

vnet: VLAN11
        zone zVLAN
        alias Test
        tag 11

Code:
auto lo
iface lo inet loopback

auto nic0
iface nic0 inet static
        address 10.10.101.42/24
        gateway 10.10.101.1
#WEBGUI

auto nic2
iface nic2 inet manual
#DATA-TRAFFIC NIC

auto nic3
iface nic3 inet manual
#DATA-TRAFFIC NIC

iface nic4 inet manual

iface nic5 inet manual

auto nic1
iface nic1 inet static
        address 10.10.110.42/26
#COROSYNC

iface nic6 inet manual

iface nic7 inet manual

auto bond0
iface bond0 inet manual
        bond-slaves nic2 nic3
        bond-miimon 100
        bond-mode 802.3ad
        bond-xmit-hash-policy layer2
#DATA-TRAFFIC BOND

auto vmbr0
iface vmbr0 inet manual
        bridge-ports bond0
        bridge-stp off
        bridge-fd 0
        bridge-vlan-aware yes
        bridge-vids 2-4094
#DATA-TRAFFIC BRIDGE

auto vmbr0.11
iface vmbr0.111 inet static
        address 10.10.11.24/24


Code:
root@vh-pve-app-03:~# cat /etc/network/interfaces.d/sdn
#version:11

auto VLAN100
iface VLAN100
        bridge_ports vmbr0.100
        bridge_stp off
        bridge_fd 0
        alias Name4

auto VLAN11
iface VLAN11
        bridge_ports vmbr0.11
        bridge_stp off
        bridge_fd 0
        alias Test

auto VLAN165
iface VLAN165
        bridge_ports vmbr0.165
        bridge_stp off
        bridge_fd 0
        alias Name3

auto VLAN79
iface VLAN79
        bridge_ports vmbr0.79
        bridge_stp off
        bridge_fd 0
        alias Name2

auto VLAN98
iface VLAN98
        bridge_ports vmbr0.98
        bridge_stp off
        bridge_fd 0
        alias Name1


Ich vermute ich sehe hier schon das Problem:

Die vmbr0.11 wird auch im SDN angesprochen.
 
Ja, ich hatte da im Kopf kurz einen Denkfehler - sorry. Das sollte dann allerdings funktionieren wenn die IP auf die bridge, die von SDN generiert wurde gelegt wird:

Code:
auto VLAN11
iface VLAN11 inet static
        address 10.10.11.24/24

Das Problem hier ist, dass man keine IP adressen direkt auf interfaces konfigurieren kann, die member von einem anderen interface sind.
 
Ich habe den Eintrag von VLAN11 in der File /etc/network/interfaces.d/sdn wie folge bearbeitet:

Code:
auto VLAN11
iface VLAN11 inet static
        address 10.110.11.24/24
        bridge_ports vmbr0.11
        bridge_stp off
        bridge_fd 0
        alias Test

Hat leider nicht geholfen. Jetzt ist das verhalten noch komischer... Angebundener Storage funkt nicht mehr, ping von der VM aus funkt, aber wenn man die IP der VM anpingen möchte, klappt es nicht. Habe mal bei dem Server, welchen ich von er VM aus anpinge, mit iftop geguckt, da kommt es lustigerweise mit der richtigen IP (der VM) an. Aber zurück pingen funkt nicht. Firewallthema kann ich hier ausschließen.

Macht mich fertig, es muss doch irgendwie möglich sein über eine physische NIC (oder in meinem Fall ein Bond) eine IP am Host zu definieren und das Netz noch an die VMs per SDN zu schleifen. :/
 
Ich löse das oft so, wenn ich auf dem PVE ein VLAN Interface habe und da soll mal eine VM mit in dem VLAN sprechen, bleibt das PVE Interface vmbr0.11 und der VM gebe ich die vmbr0 und bei der virtuellen NIC dann das VLAN11
Habe das jetzt mal so gebaut:

-> vmbr0.11 mit IP für den Host definiert.
-> vmbr0 an der VM ausgewählt und VLAN-Tag 11 definiert
-> vlan11 im SDN gelöscht und aktualisiert

Resultat leider das selbe. Die VM kann zwar andere Geräte anpingen, kann aber selbst nicht angepingt werden.


Hier erst einmal eine dumme Frage. meinst du mit RBD Ceph?
Ja wir haben ein externes CEPH-Cluster, welches als Storage angebunden ist. Wir haben kein hyperkonvergentes PVE-Setup.
 
Resultat leider das selbe. Die VM kann zwar andere Geräte anpingen, kann aber selbst nicht angepingt werden.

Wie sieht denn nun die Netzwerkkonfiguration nach den ganzen Umbauten aus?

Code:
cat /etc/network/interfaces
cat /etc/network/interfaces.d/sdn

ip a
 
Ich habe den Eintrag von VLAN11 in der File /etc/network/interfaces.d/sdn wie folge bearbeitet:

Code:
auto VLAN11
iface VLAN11 inet static
        address 10.110.11.24/24
        bridge_ports vmbr0.11
        bridge_stp off
        bridge_fd 0
        alias Test
Hast auch die /etc/network/interfaces-Datei angepasst und dort die IP entfernt und statt static ein manual gesetzt? Also den Teil hier:
Code:
auto vmbr0.11
iface vmbr0.111 inet static
        address 10.10.11.24/24

Sonst hast Du die IP zweimal definiert.