KVM-Installation und Konfiguration eines Bridge-Netzwerks unter Debian und Ubuntu

Melden

KVM (Kernel-based Virtual Machine) ist eine leistungsstarke Open-Source-Virtualisierungslösung für Linux. Standardmäßig isoliert KVM virtuelle Maschinen (VMs) hinter einem NAT-Netzwerk. Um den VMs jedoch direkte IP-Adressen aus dem physischen lokalen Netzwerk zuzuweisen, wird eine Netzwerkbrücke (Bridge) benötigt.

Diese Anleitung führt Schritt für Schritt durch die Installation von KVM und das Einrichten eines Bridge-Netzwerks unter Debian und Ubuntu.


Voraussetzungen

  1. Hardware-Virtualisierung (VT-x / AMD-V) prüfen: Prüfen Sie vorab, ob die CPU Virtualisierung unterstützt.

    egrep -c '(vmx|svm)' /proc/cpuinfo

    Wenn das Ergebnis größer als 0 ist, wird Virtualisierung unterstützt.

  2. System aktualisieren:

    sudo apt update && sudo apt upgrade -y

Schritt 1: KVM und Virtualisierungs-Tools installieren

Installieren Sie den KVM-Hypervisor, libvirt zur Verwaltung und nützliche Tools:

sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager

Paketübersicht:

  • qemu-kvm: Der eigentliche Hypervisor.
  • libvirt-daemon-system: Systemdienst zur Steuerung der Virtualisierung.
  • bridge-utils: Werkzeuge zur Konfiguration von Netzwerkbrücken.
  • virtinst: CLI-Tools zum Erstellen von VMs (z. B. virt-install).
  • virt-manager: Grafische Benutzeroberfläche (optional, falls Desktop vorhanden).

Schritt 2: Dienste starten und Berechtigungen setzen

  1. Libvirt-Dienst aktivieren und starten:

    sudo systemctl enable --now libvirtd
  2. Eigenen Benutzer zur kvm- und libvirt-Gruppe hinzufügen: Damit können VMs ohne Root-Rechte verwaltet werden:

    sudo usermod -aG kvm,libvirt $USER

    (Melden Sie sich einmal ab und wieder an, damit die Gruppenrechte aktiv werden).


Schritt 3: Ermitteln der physischen Netzwerkschnittstelle

Finden Sie den Namen Ihrer aktiven Netzwerkschnittstelle (z. B. eth0, enp3s0):

ip link
# oder
ip addr

Merken Sie sich diesen Schnittstellennamen (im Folgenden exemplarisch als enp3s0 bezeichnet).


Schritt 4: Netzwerkbrücke (Bridge) konfigurieren

Die Konfiguration unterscheidet sich je nach Distribution:

  • Ubuntu nutzt standardmäßig Netplan.
  • Debian nutzt standardmäßig /etc/network/interfaces.

Wählen Sie die für Ihr System passende Methode:

Option A: Unter Ubuntu (via Netplan)

  1. Öffnen Sie die Netplan-Konfigurationsdatei (der Name kann variieren, z. B. 01-netcfg.yaml oder 50-cloud-init.yaml):

    sudo nano /etc/netplan/01-netcfg.yaml
  2. Passen Sie die Datei an (Achtung: YAML erfordert exakte Einrückung mit Leerzeichen, keine Tabs):

    network:
      version: 2
      renderer: networkd
      ethernets:
        enp3s0:
          dhcp4: false
          dhcp6: false
      bridges:
        br0:
          interfaces: [enp3s0]
          dhcp4: true
          parameters:
            stp: false
            forward-delay: 0

    (Falls Sie eine statische IP bevorzugen, konfigurieren Sie diese unter br0 anstelle von dhcp4: true).

  3. Konfiguration testen und anwenden:

    sudo netplan try
    sudo netplan apply

Option B: Unter Debian (via /etc/network/interfaces)

  1. Bearbeiten Sie die Netzwerkkonfiguration:

    sudo nano /etc/network/interfaces
  2. Kommentieren Sie die bestehende Konfiguration Ihrer physischen Schnittstelle aus und fügen Sie die Bridge br0 hinzu:

    # Physische Schnittstelle (ohne IP)
    auto enp3s0
    iface enp3s0 inet manual
    
    # Bridge-Schnittstelle (DHCP)
    auto br0
    iface br0 inet dhcp
        bridge_ports enp3s0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0
  3. Netzwerkdienst neu starten:

    sudo systemctl restart networking

Schritt 5: Bridge-Konfiguration überprüfen

Prüfen Sie, ob die Bridge br0 eine IP-Adresse erhalten hat und die physische Schnittstelle zugeordnet ist:

ip addr show br0

Die Ausgabe von brctl show sollte nun zeigen, dass enp3s0 an br0 gebunden ist:

bridge name     bridge id               STP enabled     interfaces
br0             8000.xxxxxxxxxxxx       no              enp3s0

Schritt 6: KVM die neue Bridge mitteilen

Damit KVM die Bridge als virtuelles Netzwerk nutzen kann:

  1. Erstellen Sie eine temporäre XML-Datei:

    nano host-bridge.xml
  2. Fügen Sie folgenden Inhalt ein:

    <network>
      <name>host-bridge</name>
      <forward mode="bridge"/>
      <bridge name="br0"/>
    </network>
  3. Registrieren und aktivieren Sie das Netzwerk in libvirt:

    virsh net-define host-bridge.xml
    virsh net-start host-bridge
    virsh net-autostart host-bridge
  4. Überprüfen Sie den Status der KVM-Netzwerke:

    virsh net-list --all

    host-bridge sollte als active und autostart: yes gelistet sein.


Schritt 7: Neue VM mit Bridge-Netzwerk erstellen (Test)

Beim Erstellen einer neuen VM (z. B. via virt-install auf der Konsole) können Sie nun direkt die Bridge angeben:

virt-install \
  --name debian-vm \
  --ram 2048 \
  --vcpus 2 \
  --disk size=20 \
  --os-variant debiantesting \
  --network bridge=br0 \
  --graphics none \
  --console pty,target_type=serial \
  --location 'http://deb.debian.org/debian/dists/stable/main/installer-amd64/' \
  --extra-args 'console=ttyS0,115200n8 serial'

Wichtig ist der Parameter --network bridge=br0.

Alternativ wählen Sie im grafischen Virtual Machine Manager (virt-manager) bei der Netzwerkauswahl einfach: "Bridge-Gerät..." und tragen br0 ein.

Die erstelle VM erhält nun automatisch eine IP-Adresse direkt von Ihrem physischen Router und ist im gesamten lokalen Heim- oder Firmennetzwerk erreichbar.

0