854 Stimmen

Adressierung von localhost von einer virtuellen VirtualBox-Maschine aus

Ich habe einen lokalen Test-/Entwicklungsserver (HTTP, natürlich), der auf Port 8000 hört.

Ich arbeite mit Linux, also kann ich die Seite mit Internet Explorer 6, 7, 8 usw. testen. Ich führe eine virtuelle Maschine mit VirtualBox; ich muss auch sehen, wie es auf Firefox in einer Windows-Umgebung aussehen (Schriften zum Beispiel sind anders).

Auf meinem echten Rechner öffne ich die Website einfach über die URL http://localhost:8000 Wie kann ich diesen localhost von der virtuellen Maschine aus ansprechen?

Im Moment besteht meine Lösung darin, die IP-Adresse zu verwenden. Gibt es bessere Ideen?

55 Stimmen

Ich kann nicht glauben, dass das immer noch so mühsam ist. Ich benutze VB seit Jahren, und obwohl es um ein Haar einfacher geworden ist, ist es immer noch die größte Hürde, und die Netzwerkoptionen sind immer noch schwer zu verstehen, und es funktioniert immer noch nicht ohne weiteres für das, wofür die große Mehrheit der Benutzer es benutzen will. Wahrscheinlich benutzen Hunderttausende VB, um Websites (oder Anwendungen) für verschiedene Plattformen auf localhost zu testen. Es ist unglaublich, wie viel Zeit und Ärger man sich sparen kann, wenn man diesen speziellen Aspekt der Software verbessert.

1 Stimmen

Siehe auch die gleiche Frage auf superuser.com: superuser.com/questions/310697/

1000voto

hasen Punkte 154413

Beim Googeln habe ich das hier gefunden: http://data.agaric.com/localhost-from-virtualbox-xp-install-ubuntu

Sie schlägt die Verwendung von IP vor: http://10.0.2.2 und es hat bei mir funktioniert.

Also habe ich die Hosts-Datei bearbeitet, C:\windows\system32\drivers\etc\hosts und fügte diesen Eintrag hinzu:

10.0.2.2   outer

Wenn Sie mit dem IE8 testen, denken Sie daran, die Option http:// in der Adressleiste. Die direkte Eingabe der IP-Adresse ist nicht möglich.

Zum Beispiel:

http://10.0.2.2:3000/

7 Stimmen

Ich habe in ipconfig (Windows in VirtualBox) festgestellt, dass der Standard-Router für meine VirtualBox diese IP-Adresse ist... das macht also Sinn für mich.

50 Stimmen

Damit Sie Ihre Änderungen in der Hosts-Datei speichern können, starten Sie Notepad, indem Sie mit der rechten Maustaste darauf klicken und "Als Administrator ausführen" wählen.

26 Stimmen

Ich musste mein VirtualBox-Netzwerk umschalten Attached to Einstellung von Bridged Adapter a NAT damit das für mich funktioniert.

429voto

Jonathan Lin Punkte 18242

MacOS

Ich verwende Virtual Box unter macOS (früher OS X), ich verwende Virtual Box, um IE unter Windows zu testen, usw.

Gehen Sie in der Virtual Box zum IE und rufen Sie localhost via http://10.0.2.2 para localhost 或いは http://10.0.2.2:3000 para localhost:3000 .

Ich habe die Netzwerkeinstellungen auf NAT belassen, so dass in meinem Fall keine Brücke erforderlich ist, wie oben vorgeschlagen. Es besteht keine Notwendigkeit, irgendwelche Konfigurationsdateien zu bearbeiten.

39 Stimmen

Ich musste sogar "http://" vor die IP-Adresse setzen, damit es funktioniert (IE8 / WinXP-Box).

8 Stimmen

Aber gibt es eine Möglichkeit, 10.0.2.2 auf localhost:8888 abzubilden? Ich habe localhost:8888 als Home-Url in meiner Datenbank. Wenn ich 10.0.2.2 in VB aufrufe, wird die HTML-Seite geladen, aber alle Links brechen ab, weil sie auf localhost:8888 verweisen.

0 Stimmen

@MichaelGiovanniPumo Meines Wissens kann man die URL nicht direkt einem bestimmten Port zuordnen, sondern muss den Port explizit angeben.

87voto

Stephen Saucier Punkte 1695

Um dies unter OSX zu aktivieren, musste ich Folgendes tun:

  1. Fahren Sie Ihre virtuelle Maschine herunter.
  2. Gehe zu VirtualBox Preferences -> Network -> Host-only Networks -> Klicken Sie auf das "+"-Symbol. Klicken Sie auf OK.
  3. Wählen Sie Ihre Box aus und klicken Sie auf die Schaltfläche "Settings" icon -> Network -> Adapter 2 -> Wählen Sie in der Dropdown-Liste "Angeschlossen an:" die Option "Host-only Adapter" und Ihr Netzwerk ( vboxnet0 ) sollte standardmäßig unten angezeigt werden. Klicken Sie auf OK.
  4. Sobald Sie Ihren Rechner wieder hochgefahren haben, sollten Sie in der Lage sein, auf localhost unter http://10.0.2.2/

Sie können darauf verweisen durch localhost und auf andere lokal gehostete Websites zugreifen, indem Sie deren Verweise in die Datei hosts ( C:\windows\system32\drivers\etc\hosts ) wie die folgenden:

10.0.2.2    localhost
10.0.2.2    subdomain.localhost

5 Stimmen

Diese Lösung hat bei mir mit einer kleinen Änderung funktioniert: Nachdem Sie den neuen Host-Only-Adapter (vboxnet0) erstellt haben, bearbeiten Sie den Adapter. In dem Fenster, das sich öffnet, gehen Sie auf die Registerkarte Adapter und kopieren die IPv4 Address (z.B.. 192.168.56.1 ). Sobald Sie die VM gestartet haben, öffnen Sie Ihren Browser und gehen Sie zu http://192.168.56.1:3000

0 Stimmen

Funktioniert sowohl unter xp als auch unter Windows 7

1 Stimmen

Leider kann ich meine Subdomains nicht auflösen. Ich bin die Schritte in der akzeptierten Antwort hier durchgegangen, um zu überprüfen, ob die Hosts-Datei unter Win10 wie erwartet funktioniert: serverfault.com/questions/452268/ Irgendwelche Ideen?

62voto

ActualAl Punkte 1132

Die Möglichkeit, Anfragen an localhost in der VM nicht auf den localhost des Hosts umzuleiten, ist nun in Windows integriert ( https://www.rfc-editor.org/rfc/rfc6761#section-6.3 ), einschließlich der VMs, die unter https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/

Aus Sicherheitsgründen verhindert Microsoft jetzt, dass Einträge in der Hostdatei die Adresse von localhost auf etwas anderes als die Loopback-Adresse ::1 überschreiben. Fügen Sie also der Hostdatei der VM eine Zeile hinzu wie

10.0.2.2 localhost

werden ignoriert.

Es gibt zwei Möglichkeiten (soweit ich weiß), dies außer Kraft zu setzen:

  1. NETSH für den Portproxy zum Host verwenden

    netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=8000 connectaddress=10.0.2.2 connectport=8000

(wobei 10.0.2.2 das Standard-Gateway auf der VM und 8000 der Port ist, den Sie auf dem Host auflösen möchten).

  1. IIS so einrichten, dass er Application Request Routing durchführt und dann Anfragen für localhost:port auf hostIP:port umschreibt

https://docs.microsoft.com/en-us/iis/extensions/configuring-application-request-routing-arr/creating-a-forward-proxy-using-application-request-routing

11 Stimmen

Ich habe den NETSH-Ansatz verwendet. Hat wunderbar funktioniert. Dies ist IMO die beste Antwort.

3 Stimmen

Ich habe auch NETSH verwendet, das hat wie ein Wunder funktioniert. Dies ist auch meine beste Antwort. Es war die einzige, die funktionierte

1 Stimmen

netsh hat mir geholfen, ich habe alles ausprobiert, was ich im Netz gefunden habe, aber ohne Erfolg. Dies ermöglicht den Zugriff auf <protocol>://localhost:<port> anstatt direkt über die IP-Adresse zuzugreifen. Dies sollte die akzeptierte Antwort für Windows 10 sein.

60voto

Nick Haddad Punkte 8507

Wahrscheinlich ist das Netzwerk Ihrer virtuellen Maschine auf NAT eingestellt. Wenn Sie Ihr Netzwerk auf "Bridged" eingestellt haben, sollten Sie in der Lage sein, über den Hostnamen auf Ihren Computer zuzugreifen. Wenn Ihr Hostname zum Beispiel "jsmith-Precision-7510" lautet und Sie Folgendes öffnen möchten http://localhost:3000/ können Sie diese Seite unter folgender Adresse aufrufen http://jsmith-Precision-7510:3000/ .

Um Ihren Hostnamen zu ermitteln, öffnen Sie ein Terminal/eine Konsole und führen Sie den Befehl hostname . Ihr Hostname wird in der nächsten Zeile ausgegeben.

Siehe die VirtualBox-Dokumentation für Anweisungen, wie Sie Ihre Netzwerkeinstellungen auf Bridged setzen können.

0 Stimmen

Hmm, aus irgendeinem Grund hat die Benutzeroberfläche (auf meinem Rechner) diese Option nicht!

0 Stimmen

Welche Version verwenden Sie? Ich habe festgestellt, dass auf dem Mac einige der grundlegenden Handbuchdokumente völlig anders sind.

0 Stimmen

Ich liebe diese Lösung. Beachten Sie, dass Sie unter einigen älteren Windows-Versionen nicht in der Lage sein werden, die whatever.local es sei denn, Sie installieren Bonjour.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X