Virtual Machine Manager & QEMU/KVM: Internes vom Host isoliertes Netzwerk zwischen Gastsystemen herstellen
Aktuell stand ich vor der Frage, wie ich mit dem Virtual Machine Manager in Verbindung mit QEMU/ KVM ein internes isoliertes Netzwerk zwischen zwei VMs (Gastsystemen) herstellen kann. Ziel sollte es sein, dass ausschließlich die Gastsysteme untereinander in einem privaten Netzwerk kommunizieren können. Im Gegensatz zum sogenannten "Host-Only"-Netzwerk sollte eine Kommunikation zwischen Gastsystemen und Host als auch umgekehrt nicht möglich sein.
In diesem Beitrag zeige ich euch Schritt für Schritt, wir so ein internes isoliertes Netzwerk mit dem Virtual Machine Manager einrichtet.
Internes Netzwerk zwischen VMs einrichten
Um ein internes bzw. isoliertes Netzwerk zwischen zwei oder mehreren VMs einzurichten, sind folgende Schritte notwendig:
- Virtuelles Netzwerk vom Typ "Isoliert" erstellen
- Netzwerkquellen der VMs anpassen
- den VMs eine IP zuweisen
Virtuelles Netzwerk vom Typ "Isoliert" erstellen
Als erstes startet den Virtual Machine Manager, so dass ihr die VM-Übersicht vor euch habt.

Als nächstes ist der Verbindungsdetails-Dialog zu öffnen. Dazu folgt ein Rechtsklick auf den Eintrag QEMU/KVM und im sich öffnenden Kontextmenü klickt ihr auf den Eintrag Details. Alternativ wählt über das Hauptmenü Bearbeiten - Verbindungsdetails.
Im Verbindungsdetails-Dialog wählt den Tab Virtuelles Netzwerk aus. Hier solltet ihr in der linken Übersicht den Eintrag default aufgelistet bekommen.

Klickt auf das grüne +, so dass sich ein Dialog zum Erstellen eines neuen virtuellen Netzwerks öffnet. Wählt einen Namen für das Netzwerk aus und wählt den Modus Isolated. Klappt den Bereich IPv4 configuration auf und deaktiviert die Option. Anschließend erstellt das neue private Netzwerk per Klick auf Fertig.

Das neu erstellte Netzwerk sollte anschließend mit der entsprechenden Bezeichnung in der linken Übersicht zu finden sein.

Nachdem das Netzwerk erstellt wurde, sollte der Host über ein neues virtuelles Interface mit der Bezeichnung virbr1 verfügen. Um das zu überprüfen, führt in eurer Konsole folgenden Befehl aus:
ifconfig
[...]
virbr1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 11:22:33:44:55:66 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[...]
Erkennbar ist auch, dass für den Host keine IP vergeben wurde.
Netzwerkquellen der VMs anpassen
Nachdem das virtuelle Netzwerk erstellt wurde, sind im nächsten Schritt die entsprechenden VMs anzupassen. Dazu muss für jede VM, die Teil des isolierten Netzwerks sein soll, das Netzwerk in der VM-Konfiguration eingestellt werden.
Öffnet dazu das Konfigurationsfenster der jeweiligen VM und wählt im linken Bereich das Netzwerkgerät aus. Für dieses Netzwerkgerät passt ihr nun die Netzwerkquelle an. Wählt hier das von euch erstellte isolierte Netzwerk aus. Falls die VM kein bestehendes Netzwerkgerät hat, müsst ihr zuvor noch eines hinzufügen.

IP-Zuweisung für die VMs
Nachdem die VMs nun das isolierte Netzwerk verwenden, können sie gestartet werden. Ihr werdet bemerken, dass den VMs keine IP zugwiesen wurde. Das liegt daran, dass wir die IPv4-Option beim Erstellen des Netzwerk deakitviert hatten. Aus diesem Grund müssen wir für die einzelnen VMs die IPs manuell vergeben.
Die manuelle IP-Zuweisung habe ich per GUI des Netzwerk-Managers des Gastsystems vorgenommen. Dabei habe ich für VM1 die IP 192.168.22.11 und für VM2 die IP 192.168.22.22 vergeben. Ein Gateway ist nicht anzugeben.

Danach sollte eine Kommunikation zwischen den VMs (Gastsystemen) möglich sein. Zum Testen könnt ihr von einer VM eine andere per ping anpingen.
ping 192.168.22.11
PING 192.168.22.11 (192.168.22.11) 56(84) Bytes Daten.
64 Bytes von 192.168.22.11: icmp_seq=1 ttl=64 Zeit=0.531 ms
64 Bytes von 192.168.22.11: icmp_seq=2 ttl=64 Zeit=0.489 ms
64 Bytes von 192.168.22.11: icmp_seq=3 ttl=64 Zeit=0.565 ms
64 Bytes von 192.168.22.11: icmp_seq=4 ttl=64 Zeit=0.471 ms
^C
--- 192.168.22.11 ping statistics ---
4 Pakete übertragen, 4 empfangen, 0% Paketverlust, Zeit 3050ms
rtt min/avg/max/mdev = 0.471/0.514/0.565/0.036 ms
Fazit
Mithilfe des Virtual Machine Manager lässt sich für VMs, die per QEMU/KVM ausgeführt werden, einfach und schnell ein privates Netzwerk zwischen zwei oder mehreren Gastsystem einrichten.
Ich nutze ein vom Host isoliertes Netzwerk z.B. um eine isolierte Verbindung zwischen einer VM mit Kali Linux und einer unsicheren "Boot-to-Root / CTF / Vulnerable"-VM herzustellen.