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:
- VLAN Interfaces: Für jedes VLAN ein Interface auf dem Host (z.B.
br0.10). - 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
virtioals 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 ... |