Virtualisierung unter Debian

28. Januar 2021 · Anwendungen · andreas · Kein Kommentar

Wird auf Windows-Clients oft VirtualBox als Desktop-Virtualisierungslösung eigesetzt, stellt man nach dem Wechsel auf Debian fest, daß VirtualBox seit Buster nicht mehr in den Paketquellen enthalten ist.

Das Debian-Wiki empfieht als Ersatzlösung das auf QEMU/KVM basierende Paket virt-manager, welches in den “normalen” Paketquellen enthalten ist und somit einfach installiert werden kann:

$ sudo apt install virt-manager

Nach dem ersten Aufruf poppt erst einmal ein Fenster “System policy prevents management of local virtualized systems” zur Eingabe des Kennwortes hoch. Wer dies vermeiden möchte, kann seinen Benutzer der Gruppe “libvirt” hinzufügen:

$ sudo usermod -aG libvirt $(whoami)

Anschließend kann eine virtuelle Maschine aufgesetzt (und verwendet) werden.

Netzwerkbrücke

Je nach Anwendungsszenario stellt man sehr schnell fest, daß zwar die virtuelle Maschine ohne Probleme überall ins Netz kommunizieren kann, eine Kommunikation vom Host zur virtuellen Maschine hingegen nicht möglich ist.

Um dies zu ermöglichen, muß eine virtuelle Netzwerkbrücke eingerichtet werden. Hierzu schlagen die meisten per Suchmaschinen auffindbaren Lösungsmöglichkeiten vor, den Network-Manager zu deaktivieren und die Konfiguration der Netzwerkinterfaces komplett von Hand zu übernehmen, aber es funktioniert auch mittels Network-Manager, und das sogar recht einfach und elegant.

Zuerst einmal gilt es, die aktuelle Netzwerkverbindung sowie das verwendete Interface auszulesen, das in der Spalte “DEVICE” zu finden ist.

$ sudo nmcli connection show
NAME                         UUID  TYPE      DEVICE
Kabelgebundene Verbindung 1  ****  ethernet  enp3s0

Als nächstes wird die Brücke hinzugefügt, das Spanning Tree Protocol wird hierbei nicht benötigt.

$ sudo nmcli connection add type bridge ifname br0 stp no
Verbindung »bridge-br0« (****) erfolgreich hinzugefügt.

Die bestehende Netzwerkverbindung wird dann als Slave zur Brücke hinzugefügt, hierbei ist “enp3s0” durch das im ersten Schritt ermittelte Device zu ersetzen:

$ sudo nmcli connection add type bridge-slave ifname enp3s0 master br0
Verbindung »bridge-slave-enp3s0« (****) erfolgreich hinzugefügt

Wirft man einen Blick auf die nun vorhandenen Verbindungen, so werden neben der ursprünglichen Verbindung auch die beiden neuen Einträge angezeigt:

$ sudo nmcli connection show
NAME                         UUID  TYPE      DEVICE
Kabelgebundene Verbindung 1  ****  ethernet  enp3s0
bridge-br0                   ****  bridge    br0
bridge-slave-enp3s0          ****  ethernet  --

Als letzte Schritte folgen das Deaktivieren der bisherigen Verbindung und das Aktivieren der Netzwerkbrücke:

$ sudo nmcli connection down "Kabelgebundene Verbindung 1"
Verbindung »Kabelgebundene Verbindung 1« wurde erfolgreich deaktiviert (aktiver D-Bus-Pfad: /org/freedesktop/NetworkManager/ActiveConnection/3)

$ sudo nmcli connection up bridge-br0
Verbindung wurde erfolgreich aktiviert (master waiting for slaves) (Aktiver D-Bus-Pfad: /org/freedesktop/NetworkManager/ActiveConnection/6)

Ein abschließender Blick auf die Verbindungen zeigt, daß die Umschaltung erfolgreich war:

$ sudo nmcli connection show
NAME                         UUID  TYPE      DEVICE
bridge-br0                   ****  bridge    br0
bridge-slave-enp3s0          ****  ethernet  enp3s0
Kabelgebundene Verbindung 1  ****  ethernet  --

Die so erzeugte Brücke kann dann in virt-manager für die Netzwerkverbindungen der virtuellen Maschinen verwendet werden:

Im entsprechenden Dialog ist aber eine Stolperfalle eingebaut: Im Feld “Brückenname” muß nicht der von nmcli ausgegebene NAME, sondern das DEVICE angegeben werden.