Herstellen einer Verbindung zum Hostcomputer von einem VirtualBox-Gastbetriebssystem aus?


214

Ich möchte im Wesentlichen vom Gast in VirtualBox auf meinen Host-Computer zugreifen. Gibt es eine IP-Adresse für meinen Host, die ich vom Gast verwenden kann? Sind zusätzliche Schritte erforderlich, um dies einzurichten? Ich möchte auf die Apache-, FTP- und SSH-Dienste meines Hosts zugreifen.


1
Schwierig zu lösen, ohne einen Hinweis darauf zu haben, welche Netzwerkkonfiguration Ihr Gast tatsächlich hat. Einige erlauben keinen Zugang zum Host. Versuchen Sie es mit der Standard-Gateway-Adresse des Gasts.
Turbo J

7
Es stellte sich heraus, dass ich es über mein Standard-Gateway unter 10.0.2.2 erreichen kann.
Naftuli Kay

Antworten:


258

Bei dieser Antwort handelt es sich im Wesentlichen um ein Gastbetriebssystem-Setup in VirtualBox. Sie müssen lediglich die Netzwerk-Gateway-Adresse auf dem Gastbetriebssystem verwenden, um von einem Gastbetriebssystem aus eine Verbindung zum Hostbetriebssystem herzustellen.

In der Standardeinstellung von Vagrant sollten Sie in der Lage sein, Ihren Host über das Standardgateway zu erreichen.

Auf Windows-basierten Gästen können Sie diese IP-Adresse einfach ermitteln, indem Sie den folgenden Befehl ausführen:

ipconfig

Es sollte ungefähr so ​​aussehen:

Windows IP Configuration

Ethernet adapter Local Area Connection:

        Connection-specific DNS Suffix  . :
        IP Address. . . . . . . . . . . . : 10.0.2.15
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 10.0.2.2

In diesem Beispiel kann der Gast den Hostcomputer erreichen 10.0.2.2.


Verwenden Sie auf Unix / Linux-basierten Gästen den folgenden Befehl:

netstat -rn

Es sollte ungefähr so ​​aussehen:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 wlan0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlan0

In diesem Beispiel kann der Gast den Hostcomputer erreichen 192.168.1.1.


Haben Sie eine Idee, warum die Konnektivität bei Verwendung des Standard-Gateways laut Ihrer Antwort fürchterlich langsam ist?
Ben Swinburne

Dies schien bei mir nicht zu funktionieren (Ubuntu 12.04, Vagrant 1.0). Das Standard-Gateway im Gast wurde als 10.0.2.2angezeigt, und eine nmap dieser IP ist fehlgeschlagen. 192.168.33.1 scheint die richtige IP zu sein. (Ich hatte config.vm.network :hostonly, "192.168.33.52"in meiner Konfig.)
Ajedi32

Eigentlich egal. Es hat funktioniert. nmap funktionierte einfach aus irgendeinem Grund nicht. nicht sicher warum. Ich konnte über diese IP-Adresse immer noch eine Verbindung zu Diensten auf dem Host herstellen, obwohl nmap sie nicht zeigte.
Ajedi32

1
netstat -rnUnter CentOS 7.2 zeigte Docker 1.11 eine 172.17Adresse als mein Gateway an, aber diese IP stimmte nicht mit meinem Host überein. Es stellte sich heraus, dass dies der 10.0.2.2Fall war.
Spencer Williams

1
Woher wissen wir, welcher dieser Einträge das Gateway ist?
Kramer

36

Der Zugriff auf den Webserver des Hostcomputers vom Gast aus ist einfach. Dies kann einfach mit zwei Methoden durchgeführt werden. Führen Sie zuerst die folgenden Schritte aus

  • Gehen Sie zu Geräte und wählen Sie Netzwerkadapter ...
  • Aktivieren Sie in den Adaptereinstellungen die Option Angeschlossen an .
  • Wenn der Wert NAT ist , gehen Sie folgendermaßen vor

  • Das Standard-Gateway bei der Einrichtung von Virtual Box ist im Allgemeinen 10.0.2.2der Standardwert. Wenn Sie nichts geändert haben, funktioniert dies. Wenn Sie es jedoch geändert haben und auf dem Gastcomputer Windows ausgeführt wird , führen Sie den folgenden Befehl aus und suchen Sie das Standardgateway

    ipconfig /all

    Wenn Sie unter Linux, Unix oder Mac OS arbeiten, führen Sie den folgenden Befehl aus, um ihn abzurufen

    netstat -rn | grep 'default' | awk '{print $2}'

  • Gehen Sie zum Webbrowser und geben Sie dieses Standard-Gateway ein und drücken Sie die Eingabetaste. Auf den Webserver kann zugegriffen werden.

  • Wenn der Wert Bridged Adapter ist , gehen Sie wie folgt vor
    • Finden Sie die IP-Adresse von Host und Gast
      • Wenn Sie mit Windows arbeiten, führen ipconfigSie das Programm aus und rufen Sie die IP-Adresse ab
      • Wenn Sie unter Linux, Unix oder Mac OS arbeiten, ifconfig | grep 'inet' rufen Sie die IP-Adresse ab
      • Die IP-Adresse lautet 192.168.1.1
    • Wenn Sie auf den Host zugreifen möchten, führen Sie den Browser in guest aus und geben Sie die IP-Adresse des Hosts ein
    • Wenn Sie auf einen Gast zugreifen möchten, führen Sie den Browser im Host aus und geben Sie die IP-Adresse des Gasts ein

9

Eine andere Möglichkeit besteht darin, ein virtuelles Netzwerk vom Typ "Host" zu verwenden. Auf diese Weise erhalten Sie im Gastbetriebssystem eine Schnittstelle mit einer Adresse in einem lokalen Subnetz, die sich von den Subnetzen der "äußeren Welt" unterscheidet, in denen sich Ihr Hostcomputer befindet. Damit dies funktioniert, müssen Sie einige Dinge sicherstellen:

  • Auf Ihrer VM ist ein "Nur-Host" -Adapter konfiguriert.
  • Ihre Host-Services müssen alle lokalen Adapter abhören oder zumindest die, mit denen Sie Kontakt aufnehmen möchten.
  • Ihr Host erhält einen eigenen virtuellen Adapter, und Sie möchten seine IP-Adresse ermitteln und zur "hosts" -Datei in Ihrem Gastbetriebssystem hinzufügen (dies funktioniert jedoch für das Gastbetriebssystem; unter Windows XP ist es nur die " hosts "in C: / WINDOWS / system32 / drivers / etc). Geben Sie einen Namen für den Hostnamen des Hosts ein.

Sobald Sie dies getan haben, sollten Sie in der Lage sein, den Host von der VM über den Namen "zu sehen", den Sie in die Host-Datei eingegeben haben.

Beispielsweise erhalte ich auf meinem Ubuntu 11.04-Host unter 192.168.56.1 eine virtuelle Schnittstelle "vboxnet0". Die Adapter in den Maschinen haben so etwas wie 192.168.56.101. Ich brauche nicht zu gehen in meinem VMs, aber ich nehme an, dass über eine symmetrische Änderung möglich sein würde , um den Host - Datei des Hosts. ich füge hinzu

192.168.56.1 mymachine

auf die Hostdateien des Gastbetriebssystems, und sie können (zum Beispiel) den Webserver meines Hostcomputers unter sehen

http://mymachine/whatever

Sie können natürlich sowohl Bridged- als auch Host-Only-Adapter einrichten.


0

Sie können freigegebene Ordner in VirtualBox erstellen. Dadurch wird automatisch eine Netzwerkfreigabe in Virtual Box erstellt, um auf Ordner in Ihrem Host-Betriebssystem zuzugreifen.

Hier ist eine anständige Schritt für Schritt in einem Windows XP-Gastbetriebssystem:

http://www.giannistsakiris.com/index.php/2007/09/28/virtualbox-access-shared-folders-from-windows-xp-guest-os/


Ich kann also unter / vboxsvr / ShareName auf meinen Host zugreifen.
Naftuli Kay

Ja, Sie würden einen Ordner wie C: \ STUFF festlegen, der für VirtualBox freigegeben werden soll. In VirtualBox Guest OS können Sie zu diesem vboxserver wechseln und auf die freigegebenen Ordner zugreifen.
Kobaltz

Ich möchte den freigegebenen Ordner eigentlich nicht. Ich möchte eine IP-Adresse für meinen Hostcomputer. Wenn ich es bekomme, möchte ich es verwenden, um Dienste auf meinem echo "GET /\r\n\r\n" | nc 192.168.100.100 80
Hostcomputer

1
In diesem Fall müssen Sie möglicherweise Ihren Gastbetriebssystem-Netzwerkadapter auf eine Bridge einstellen. Dadurch wird eine IP-Adresse von Ihrem DHCP oder Router bezogen. Sie können dann nativ über die IP-Adresse auf Ihren Hostcomputer zugreifen, anstatt über den freigegebenen VBox-Ordner.
Kobaltz

0

Hier finden Sie eine weitere Lösung für dieses Problem, indem Sie eine zusätzliche Netzwerkschnittstelle verwenden und den für den Host bestimmten Datenverkehr so ​​einstellen, dass er über eine zusätzliche Schnittstelle geleitet wird.


4
Willkommen bei Super User! Es wäre schön , wenn Sie die wesentlichen Teile der Antwort hier einfügen und den Link nur zum späteren Nachschlagen bereitstellen würden.
Slhck
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.