Wie greife ich vom Host aus auf einen in VirtualBox laufenden Server zu?

Wie greife ich vom Host aus auf einen in VirtualBox laufenden Server zu?

Ich führe eine Webanwendung auf der VM aus.

localhost:8888Ich kann die App über einen Browser innerhalb der VM sehen .

Ich kann die App vom Host unter derselben URL nicht sehen. Das ist das Ziel.

Ich habe es versucht VBoxManage modifyvm "VM name" --natdnshostresolver1 on, aber es hatte keine Wirkung.

Meine Konfiguration ist:

  • Gastgeber:Windows 7
  • Gast:Ubuntu 16.04.1 LTS
  • VirtualBox:5.1.4r110228

Gastkonfiguration

(Gast) ifconfigwenn auf NAT

kirkland@GC:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:d0:fc:0e  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::4c67:70b5:c37b:8fa8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7431 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3587 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7444830 (7.4 MB)  TX bytes:731870 (731.8 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1566 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1566 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:655936 (655.9 KB)  TX bytes:655936 (655.9 KB)

(Gast) /etc/hosts

127.0.0.1   localhost
127.0.1.1   GC

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Antwort1

Die localhost:8888URL ist nur innerhalb Ihrer VM gültig. Außerhalb dieser VM müssen Sie ip.ad.dr.ess:8888oder verwenden hostname:8888. Im letzteren Fall ip.ad.dr.essentsteht eine Abhängigkeit von der Hostnamenauflösung in Ihrem Netzwerk.

Wenn Sie in VirtualBox eine VM erstellen, ist Netzwerkadapter 1 standardmäßig auf NAT eingestellt. Dadurch erhält die VM eine IP-Adresse von 10.0.2.15/24und eine Standardroute von 10.0.2.2(die Ihr Host sein sollte). Kurz gesagt: Windows routet nicht zu einer Adresse, für die es NAT bereitstellt, ohne vorher weitere Hürden zu überwinden.

Wenn Sie die VM herunterfahren und die Einstellung des VM-Netzwerkadapters1 auf „überbrückt“ ändern, kann Ihr Host (und jeder Host in Ihrem lokalen Netzwerk) mit dieser VM kommunizieren, ohne dass spezielle Routen hinzugefügt werden oder Hürden genommen werden müssen.

Starten Sie die VM neu. Überprüfen Sie Ihre Verbindung zu localhost:8888. Überprüfen Sie auch Ihre Verbindung zu hostname:8888(vorausgesetzt, der Hostname wurde notder Loopback-/Localhost-Adresse in der Datei /etc/hosts hinzugefügt) und ip-address:8888. BEARBEITEN: Basierend auf den veröffentlichten Details in /etc/hosts arebinden Sie Ihre VM und damit die Webanwendung an das Loopback-Netzwerk. Diese Konfiguration ist außerhalb der VM überhaupt nicht verwendbar.

Wenn Ihr Webserver und Ihre Anwendung nicht von der IP abhängig sind, auf der sie ursprünglich konfiguriert/installiert wurden, und Sie über einen DHCP-Server in Ihrem LAN verfügen, ist die einzige andere Information, die Sie zum Herstellen einer Verbindung mit der VM benötigen, die IP-Adresse, die ihr per DHCP zugewiesen wurde.

So finden Sie die IP-Adresse der VM: Öffnen Sie ein Terminal-/Konsolenfenster auf dem Ubuntu-Desktop (Strg-Alt-T). Wir verwenden die /etc/hostsBefehle hostname, ifconfig und grep, um die Teile zusammenzusetzen und Ihre Adresse zu finden. Geben Sie im geöffneten Terminal ein und hostnamedrücken Sie die Eingabetaste. Dies ist wahrscheinlich gc. Wenn Sie im selben Terminal tippen, ifconfig eth0 | awk '/Bcast/{print $2}'wird die Adresse angezeigt. Sie sollten in /etc/hosts eine Zeile mit der Adresse gefolgt vom Hostnamen haben. grep [hostname] /etc/hostsoder grep [address] /etc/hostsSie sollten die gewünschte Zeile finden. Wenn Sie etwas anderes als Ihre aktuelle Adresse gefolgt vom Hostnamen erhalten, müssen Sie die Datei /etc/hosts ändern, um die richtigen Informationen hinzuzufügen.

Hosts in Ihrem LAN sollten jetzt in der Lage sein, eine Verbindung mit der IP Ihrer VM über Port 8888 herzustellen. Der Zugriff dieser Hosts/Clients auf die Webanwendung hostname:8888hängt von den Hostdateien der Clients, dem lokalen DNS oder sogar von mDNS-Diensten ab, die möglicherweise auf Ihrem DHCP-Server bereitgestellt werden.

Antwort2

Hier ist eine schnelle Lösung mit Portweiterleitung, wenn Sie nicht möchten, dass die VM einem externen Netzwerk ausgesetzt wird. Erstellen Sie einfach dieses Portweiterleitungsprofil für Web und SSH, wie unten in den NAT-Einstellungen der VM gezeigt

Bildbeschreibung hier eingeben

Antwort3

Um dies zu erreichen, wäre es meiner Meinung nach viel besser, den Bridged-Modus zu verwenden. Wenn das nicht möglich oder wünschenswert ist, benötigen Sie eine statische Route auf Ihrem Host.

So fügen Sie eine statische Route hinzu: Sehen Sie in den Netzwerkeigenschaften Ihres Hosts nach. Sie sollten dort einen Adapter namens „VirtualBox Host-Only Network“ finden. Suchen Sie nach seiner IP-Adresse. Wahrscheinlich ist es 192.168.56.1, was meiner Meinung nach die Standardeinstellung ist, aber es könnte auch etwas anderes sein. Nennen Sie diese abcd. Suchen Sie als Nächstes die IP-Adresse Ihres Gasts. Nennen Sie diese wxyz (die ersten 3 Oktette sollten bei beiden Adressen gleich sein). Wenn Sie diese haben, öffnen Sie eine DOS-Eingabeaufforderung auf Ihrem Host und geben Sie diesen Befehl ein:

route add w.x.y.z mask 255.255.255.0 a.b.c.d

Wenn dies funktioniert, können Sie denselben Befehl mit dem Schalter -p ausführen, um es dauerhaft zu machen (andernfalls verschwindet es beim nächsten Neustart des Hosts).

verwandte Informationen