linux-rhel-centos-fedora networking bridge vlan virtualization rhel nmcli

Bridge & Virtual Networking on RHEL (Artikel 083)

Konfiguration von virtuellen Netzwerken unter RHEL. Aufbau von Linux Bridges für KVM/QEMU, VLAN-Tagging und die Integration in das Libvirt-Ökosystem.

# Virtual Networking on RHEL: Bridges und VLANs für den Hypervisor

TL;DR / Management Summary Ein RHEL-Server, der als Virtualisierungs-Host (KVM) fungiert, benötigt eine stabile Netzwerk-Bridge. Eine Linux Bridge agiert als virtueller Switch, der VMs mit dem physikalischen Netzwerk verbindet. In diesem Modul lernen wir, wie man Bridges über Bonds legt, VLAN-Tagging implementiert und wie man sicherstellt, dass der Host-Zugriff (Management IP) auch bei Fehlern in der Bridge erhalten bleibt.


# 1. Einführung & Architektur

Der Software-Switch im Kernel.

Eine Bridge (vmbr0 oder br0) ist ein Layer-2 Gerät. Sie lernt MAC-Adressen von VMs und leitet Pakete an den physikalischen Port weiter.

# Die Architektur-Kette (Mermaid)

graph TD
    A[Physical NICs: eth0, eth1] --> B[bond0: LACP]
    B --> C[br0: Linux Bridge]
    C --> D[Management IP: 192.168.1.10]
    C --- E[VM 1: Tap Device]
    C --- F[VM 2: Tap Device]
    C --- G[VLAN 10 Interface]
    G --> H[VM 3: Restricted Network]

# 2. Die Enterprise Bridge (Bridge over Bond)

Redundanz für den Hypervisor.

Wir bauen eine Bridge, die auf einem LACP-Bond basiert.

# Schritt 1: Den Bond vorbereiten (siehe Artikel 082)

Stellen Sie sicher, dass bond0 existiert, aber keine IP hat.

# Schritt 2: Die Bridge erstellen

sudo nmcli con add type bridge con-name br0 ifname br0

# Schritt 3: Den Bond als Slave zur Bridge hinzufügen

sudo nmcli con mod bond0 master br0

# Schritt 4: IP auf die Bridge legen

Die IP des Hosts wandert von der Karte/vom Bond auf die Bridge!

sudo nmcli con mod br0 ipv4.addresses 192.168.1.10/24 ipv4.gateway 192.168.1.1 ipv4.method manual
sudo nmcli con up br0

# 3. VLANs auf der Bridge

Netzwerktrennung für VMs.

Es gibt zwei Ansätze für VLANs:

  1. VLAN Interfaces: Für jedes VLAN ein Interface auf dem Host (z.B. br0.10).
  2. VLAN Filtering Bridge: Ein virtueller Switch, der alle Tags verarbeiten kann (Proxmox Standard).

# Beispiel: VLAN Interface (br0.10)

sudo nmcli con add type vlan con-name br0.10 dev br0 id 10

# 4. Day-2 Operations: Libvirt Integration

VMs an die Bridge koppeln.

Damit KVM-VMs die Bridge nutzen können, müssen sie in der XML-Konfig (siehe Artikel 042) darauf verweisen:

<interface type='bridge'>
  <source bridge='br0'/>
  <model type='virtio'/>
</interface>

# 5. Troubleshooting & “War Stories”

Wenn die VMs stumm bleiben.

# Story 1: “Der Spanning Tree (STP) Blackout”

Symptom: Sobald die Bridge aktiviert wird, bricht der Netzwerk-Port am physikalischen Switch weg (Disabled by BPDU Guard). Ursache: Die Linux Bridge sendet standardmäßig keine STP-Pakete, oder sie sendet welche und der Switch denkt, es gäbe einen Loop. Lösung: Deaktivieren Sie STP auf der Bridge, wenn der Switch das Management übernimmt: sudo nmcli con mod br0 bridge.stp no.

# Story 2: “Promiscuous Mode Fail”

Symptom: Pakete kommen an der physikalischen Karte an, werden aber nicht an die VMs in der Bridge weitergeleitet. Ursache: In manchen Cloud-Umgebungen (z.B. AWS/Azure) oder bei manchen Treibern darf eine Karte keine Pakete für fremde MAC-Adressen annehmen. Lösung: Aktivieren Sie den Promiscuous Mode manuell (selten nötig bei modernen Karten) oder nutzen Sie spezialisierte Plugins wie macvtap.


# 6. Fazit & Empfehlung

  • Management IP: Legen Sie die Management-IP des Hosts immer auf die Bridge, nicht auf die Slaves.
  • Performance: Nutzen Sie virtio als Modell für VM-Netzwerkkarten.
  • Sicherheit: Trennen Sie Management-Traffic und VM-Traffic physisch oder via VLANs.

# Anhang: Cheatsheet

Aufgabe Befehl
Bridge-Links anzeigen bridge link show
MAC-Tabelle der Bridge bridge fdb show dev br0
Bridge erstellen (nmcli) nmcli con add type bridge ...
Bridge Status nmcli dev show br0
Slave zu Bridge hinzufügen nmcli con mod <slave> master <bridge>
VLAN hinzufügen nmcli con add type vlan ...