Virtualbox – Port forwarding
Zugriff per NAT auf das Gastsystem
Virtuelle Maschinen lassen sich ja für alles Mögliche einsetzen. Ob nun als Labor-Umgebung für irgendwelche Netzwerk-Geschichten, zum Testen von Software, als zusätzliches Betriebssystem oder zum "sicheren Surfen". In meinem Fall möchte ich das Debian 4.0 Gastsystem als Entwicklungsserver für Webseiten nutzen. Wie und wo man Virtualbox installiert, downloaded und mit einem Gastsystem bestückt soll nicht das Thema dieses Beitrags sein. In diesem Tutorial geht es wirklich nur um das NAT (Network Adress Translation, eigentlich Network Address Port Translation in diesem Fall) und wie man diese Portweiterleitung einrichten und anwendet.
Ich möchte von meinem Windows-Rechner per SSH und HTTP auf die Virtuelle Maschine zugreifen ohne aber die Konfiguration "Hostinterface" oder "Internes Netzwerk" zu nutzen. SSH lauscht auf auf Port 22 und HTTP ebenfalls unverändert auf dem bekannten Port 80. Ansprechen, also vom Windows her aufrufen, möchte ich SSH auf Port 9022 und HTTP auf 9080. Die Ports sind hierbei oberhalb von Port 1024 prinzipiell frei wählbar; ein bisschen Ordnung schadet sicherlich nicht und somit hat diese VM von mir die Nummer 90 bekommen und die Original-Ports habe ich einfach an gehangen.

NAT-Konfiguration
Bei den Einstellungen für das Netzwerk innerhalb von Virtualbox muss NAT ausgewählt werden und beim direkten Bearbeiten der Konfigurations-XML-Datei ist ein Beenden des Programms notwendig, da Windows sonst das Schreiben in diese Datei verweigert. Da meine Maschine "Debian 4.0" und mein Anmeldename bei Windows "daniel" ist, lautet der Pfad zur XML bei mir
C:\Dokumente und Einstellungen\daniel\.VirtualBox\Machines\Debian 4.0\Debian 4.0.xml
Diese mit einem Texteditor öffnen und die folgenden 3 Zeilen zwischen <ExtraData> und </ExtraData> hinzufügen
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/SSH/HostPort" value="9022"/>
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/SSH/GuestPort" value="22"/>
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/SSH/Protocol" value="TCP"/>
Für den HTTP-Port einfach 3 weitere Zeilen anhängen; ggf. weitere Dienste einfach entsprechend erweitern
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/HTTP/HostPort" value="9080"/>
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/HTTP/GuestPort" value="80"/>
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/HTTP/Protocol" value="TCP"/>
Nun nur noch speichern, Virtual Box ausführen und die entsprechende VM starten.
Alternative zur XML-Bearbeitung
Eine andere Möglichkeit die XML-Datei zu beschreiben lässt sich mit Hilfe des sich im Funktionsumfang befindlichen VBoxManager bewerkstelligen. DOS-Box öffnen (Start > Ausführen > CMD) und zum Virtualbox-Verzeichnis navigieren
cd "c:\Programme\Sun\xVM VirtualBox\"
hier angekommen (die Pfade/ Laufwerke können natürlich von meinen abweichen) gilt es die 3 folgenden Befehle abzusetzen (STRG+C und in der DOS-Box Rechtsklick und Einfügen wählen)
VBoxManage setextradata "Debian 4.0" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/SSH/HostPort" 9022
VBoxManage setextradata "Debian 4.0" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/SSH/GuestPort" 22
VBoxManage setextradata "Debian 4.0" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/SSH/Protocol" TCP
Einstellungen im Putty
Die VM läuft und nun möchte ich mit dem Putty auf die Linux-Konsole zugreifen. Hier habe ich einige Zeit gebraucht, um auf die Idee zu kommen, bei Hast Name nicht die IP der virtuellen Maschine einzugeben, sondern localhost oder 127.0.0.1. Bei Port kommt der weiter oben gewählte hinein und das war’s eigentlich schon. Der Zugriff müsste per SSH möglich sein; vorausgesetzt, dass auf der VM auch ein Dienst auf Port 22 lauscht.

Was macht der Port 80?
Ein frisch installierter Apache auf dem Gastsystem liefert beim Aufruf von "http://localhost:9080" im Browser: "It works" – und genau so ist’s gemeint.
Weiterführende Informationen zum Thema:


bereits 3 Kommentare zu "Virtualbox – Port forwarding"
am 10.06.2009 um 23:38 Uhr
Was gibt es denn noch für eine Möglichkeit außer Portforwarding wenn ich auf mehrere virtuelle Maschinen zugreifen möchte.
Bei der Möglichkeit hier könnte man ja nur unterschiedliche Ports nehmen.
Gehts nicht auch direkt über die IP wenn man Gastsystem und Hostsystem in das gleiche Subnetz hängt??
Grüße aus Berlin!
am 23.10.2009 um 15:44 Uhr
Wow!! Genau diese Infos suche ich schon seit langem!
Super!! Vielen Dank für die Infos.
Jetzt funktioniert alles auch bei mir einwandfrei!! :-)
am 09.01.2010 um 17:15 Uhr
Klasse Anleitung – die Nutzung von VirtualBox auf einem WindowsXP System mit virtuellem Debian Lenny hat mich schon einige Stunden beschäftigt, um endlich per SSH und WinSCP auf die VB zuzugreifen. Die Anleitung hier löste sofort mein Problem – jetzt läuft alles wie gewünscht.
Thnx!
mauronaut