Virtual Networking mit VirtualBox
Diese Version bezieht sich auf VirtualBox 2.0
Ab 2.1 hat Sun beispielsweise das Host Interface stark überarbeitet.
Lesen Sie bitte die aktuelle Version: VirtualBox Tutorial
innotek VirtualBox ist eine Anwendung für die Virtualisierung
von Rechnersystemen. Als Host-System werden Windows, Linux und Mac OS X
unterstützt. In der virtuellen Maschine können Linux, Windows, OS/2, BSD oder DOS als
Gast laufen. Die Gastsysteme lassen sich untereinander und mit dem Host vernetzen.
Dieser Artikel beschreibt die Möglichkeiten der virtuellen Vernetzung mit VirtualBox.
innotek wurde Anfang 2008 von Sun übernommen.
1 Grundlagen
Mit VirtualBox lassen sich jedem Gast bis zu vier Netzwerkkarten zuweisen.
Die emulierten Karten melden sich wahlweise als:
- PCnet-PCI II Am79C970A
- PCnet-FAST III Am79C973
- Intel PRO/1000 MT Desktop 8254 OEM
Diese Karten werden von vielen Linux- und Windows-Versionen erkannt. Unter Vista muss der AMD-Treiber
manuell installiert werden.
Jede der vier Netzwerkkarten kann innerhalb von VirtualBox separat
konfiguriert werden. Dabei wird zwischen vier Betriebsarten unterschieden:
- Nicht angeschlossen
- NAT
- Hostinterface
- Internes Netzwerk
2 Betriebsart "Nicht angeschlossen"
In dieser Konfiguration sieht der Gast eine Netzwerkkarte ohne angeschlossenes Kabel.
Das virtuelle Kabel kann auch im laufenden Gast über das Menü Geräte/Netzwerk-Adapter
gezogen und gesteckt werden.
3 Betriebsart Network Address Translation (NAT)
VirtualBox stellt den Gastsystemen einen NAT-Router inklusive DHCP-Server zur Verfügung.
Die erste Netzwerkkarte eines Gastes liegt im IP-Netz 10.0.2.0, die zweite in 10.0.3.0 und so weiter.
Bedingt durch den NAT-Router ist per Default kein Verbindungsaufbau vom Host oder aus dem LAN zu einem Gast möglich.
Dazu können aber Portweiterleitungen (port forwarding) eingerichtet werden. Um eine Weiterleitung des
TCP-Ports 8022 auf den Port 22 des Gastes "debian 1" einzurichten, sind die folgenden Kommandos notwendig:
VBoxManage setextradata "debian 1" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP
VBoxManage setextradata "debian 1" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22
VBoxManage setextradata "debian 1" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 8022
VirtualBox leitet nun alle Anfragen die den Host auf Port 8022 erreichen an den Gast (Port 22) weiter.
Damit kann ein SSH-Server auf dem Gast angesprochen werden.
Der NAT-Router der VirtualBox transportiert kein ICMP. Daher funktionieren Ping und ICMP-Traceroute
aus dem Gast nicht. VPN-Verbindungen über PPTP bereiten ebenfalls Probleme in der Betriebsart NAT.
Vermutlich wird das Protokoll GRE nicht korrekt behandelt.
Mit Apple Mac OS X als Host unterstützt VirtualBox bis zur Version 1.5.51 nur NAT als Netzwerkverbindung für
den Gast.
4 Betriebsart Hostinterface (HIF)
Mit dem Host Interface (HIF) verfügt VirtualBox über eine sehr flexible
Möglichkeit der Netzwerkeinbindung für virtuelle Maschinen.
VirtualBox legt dazu neue Netzwerkinterface auf dem Host an.
Unter Linux wird das erste Host Interface vbox0 benannt, unter Windows VirtualBox Hostinterface 1.
Jedes dieser Interface kann mit einem Gast verbunden werden. Für jede Netzwerkkarte in einem
Gast ist dabei ein separates Host Interface erforderlich. Zusätzliche Hostinterface können
über das GUI von VirtualBox oder die Kommandozeile angelegt werden. Unter Windows legt das Kommando:
VBoxManage createhostif "Hostinterface 2"
ein neues Hostinterface an.
Um für den Gast eine Verbindung zum Netzwerk herzustellen, muss auf dem Host
eine Bridge oder ein Router zwischen dem Host Interface und einem "echten" Interface
eingerichtet werden.
Bridging verbindet die Netze auf dem OSI-Layer 2, wie ein einfacher Switch. Alle Interfaces
innerhalb eines Layer 2 Netzwerkes müssen IP-Adressen aus dem selben IP-Netz nutzen.
4.1 Bridging unter Windows
Unter Windows XP kann eine Bridge zwischen einem LAN-Interface und einen Hostinterface in den
Netzwerkverbindungen erstellt werden. Markieren Sie dazu beide Schnittstellen in den Netzwerkverbindungen
und wählen im Kontextmenü Verbindungen überbrücken aus. An der Netzwerkbrücke müssen Sie keine Einstellungen
durchführen.
Wenn das Hostinterface von einer aktiven virtuellen Maschine genutzt wird, sollten in dieser
Ansicht keine roten Kreuze an den Symbolen sichtbar sein.
Bridging funktioniert nur mit LAN-Schnittstellen zuverlässig.
Bei vielen WLAN-Treibern gibt es Probleme beim Bridging. Der MS Knowledge Base-Artikel
Bridge May Not Work With a Non-Promiscuous Mode Network Adapter
beschreibt einen Workaround für einige Wireless-Adapter. Nach dem Einrichten der Bridge müssen beide Adapter in den Kompatibilitätsmodus geschaltet werden.
Dazu lassen Sie sich in der NetShell zuerst die Bridge anzeigen und stellen dann die Adapter um:
C:\> netsh
netsh>bridge show adapter
-------------------------------------------------------------
ID-Adapteranzeigename Kompatibilitätsmodus erzwingen
-------------------------------------------------------------
1 VirtualBox Hostinterface 1 unbekannt
2 LAN-Verbindung unbekannt
-------------------------------------------------------------
netsh>bridge set adapter 1 forcecompatmode=enable
netsh>bridge set adapter 2 forcecompatmode=enable
netsh>bridge show adapter
-------------------------------------------------------------
ID-Adapteranzeigename Kompatibilitätsmodus erzwingen
-------------------------------------------------------------
1 VirtualBox Hostinterface 1 aktiviert
2 LAN-Verbindung aktiviert
-------------------------------------------------------------
Es scheint allerdings auch Netzwerktreiber zu geben, die sich auch über diese Lösung nicht zum Bridgen nutzen lassen.
5 Betriebsart Internes Netzwerk (intnet)
Über ein internes Netzwerk können Gastsysteme untereinander kommunizieren.
Die internen Netze werden über ihren Namen identifiziert. Den Namen können Sie in den
Netzwerkeinstellungen einer virtuellen Maschine vergeben bzw. auswählen.
Jedes dieser internen Netze kann man sich als autarken Switch vorstellen. VirtualBox
stellt in diesen Netzen keine Dienste wie DHCP, DNS oder Routing
zur Verfügung.
Um in einem internen Netz via IP kommunizieren zu können müssen die Gäste feste
IP-Adressen nutzen (aus dem selben IP-Netzwerk) oder ein Gast muss
einen DHCP-Server auf dem internen Netz betreiben. Um mit dem Hostsystem oder einem
externen Netz Daten austauschen zu können, muss ein Gast einen Router oder eine Bridge
zwischen dem internen Netz und einem weiterem Netz (NAT oder Hostinterface) betreiben.
Dazu kann man zum Beispiel Software-Router wie m0n0wall, pfSense oder IPCop verwenden.
Laut innotek ist die Kommunikation über ein internes Netz performanter als
die Nutzung des Hostinterfaces.
6 Beispiel einer Vernetzung mit pfSense als Router
Im folgenden Beispiel wird von einem Gast zwischen einem Hostinterface (HIF) und einem internen Netzwerk
geroutet. Auf dem Host ist eine Bridge zwischen LAN und HIF eingerichtet.
Im Gast 1 ist die Software-Firewall pfSense installiert. Deren LAN-Interface erhält seine IP-Adresse
via DHCP vom ADSL-Router. Zum internen Netz hin agiert pfSense als DHCP-Server. Gast 2 und 3 erhalten ihre
IP-Adressen von pfSense und nutzen die 10.0.0.1 als Default Router.
Über diese Adresse können Gast 2 und 3 auch auf das Webinterface von pfSense zugreifen.
7 Links
|