VirtualBox und Host-Only-Networking

Konfiguration unter Linux

Das kann doch eigentlich nicht so schwierig sein! Sollte man meinen, aber irgendwie war ich beim Googlen nach der richtigen Anleitung glücklos. Deshalb – quasi auch als Notiz an mich selbst – meine Einrichtung.

Host-Only vs. NAT

Mein Wunschziel war folgendes: Eine VM, die das Außennetz erreichen kann, selbst aber nur vom Hostsystem aus erreichbar ist, das ganze in einer Konfiguration, die nicht von irgendwelchen externen Komponenten (wie z.B. einem DHCP-Server im LAN) abhängig ist.

Ein NAT-Interface in Virtualbox exponiert die VM nicht gegenüber dem Host. Die VM erreicht zwar das Außennetz, ist aber selbst nicht erreichbar – leider eben auch vom Host nicht.

Also braucht die VM ein Netzwerk-Interface, welches eine Verbindung zum Wirtssystem herstellt. Entweder richtet man dieses als zweites Netzwerk-Device ein, oder man konfiguriert im Hostsystem NAT für die VM. Ich habe mich für erstere Lösung entschieden.

Einrichtung in Virtualbox

Im Hauptmenü unter File – Preferences – Network erhält man eine Liste der Netzwerk-Interfaces, welche Virtualbox erzeugt. Sollte hier noch keines vorhanden sein, fügt man ein neues Device vboxnet0 hinzu. Anschließend konfiguriert man es (Doppelklick).

Unter „Adapter“ teilt man dem Device eine lokal gültige IP-Adresse (z.B. 192.168.42.1) und eine Subnetz-Maske (im Beispiel hier 255.255.255.0) zu. Unter dieser IP ist später das Wirtssystem erreichbar.

Optional kann man noch einen DHCP-Server konfigurieren, wenn man den VMs keine statischen Adressen zuteilen möchte.

Einrichten des Devices

Das war der Punkt, über den ich gestolpert bin. Virtualbox konfiguriert offenbar das Device nicht automatisch. Ich mußte es manuell einrichten:

ifconfig vboxnet0 192.168.42.1 up
route add -net 192.168.42.0/24 dev vboxnet0

That did the trick. IP und Netzwerk-Präfix müssen natürlich zu den oben getroffenen Einstellungen passen.

Sich selbst ein Bein stellen

Wenn es immer noch nicht geht: Kurz prüfen, ob es irgendeine iptables-Regel gibt, welche die Verbindung unterbindet. Wer sein Wirtssystem von der VM aus erreichen möchte und ufw benutzt: Mittels

ufw allow in on vboxnet0

erlaubt man den VMs an vboxnet0 freien Zugriff auf das Wirtssystem.