Virtualbox "port forward" da Guest a Host [chiuso]


162

Ecco la mia configurazione:

- Host: Windows XP
- Guest: Ubuntu 10.04
- Networking: NAT

Sto impostando un server Web Apache sul Guest, ma voglio essere in grado di farlo sul computer Windows:

- go to the browser, type http://localhost:8000

Inoltre, ho provato a cambiare il mio networking in bridge e ho ottenuto un nuovo IP. Ma quando ho provato a fare http: //: 8000, si dice che non è stato possibile connettersi.


1
Ho avuto lo stesso problema. Si è scoperto che il sistema operativo guest aveva un firewall attivo che stava bloccando la porta 80.
Nicholas Shanks

149
Come sviluppatore web che utilizza VirtualBox come parte del mio flusso di lavoro quotidiano, non sono d'accordo con questo essere contrassegnato come off topic. Si prega di considerare la riapertura.
sparecycle

1
1. Vai alla VM 2. ifconfig (ottieni IP locale - dovrebbe essere 10.0.2.X) 3. ssh 10.0.2.2 per arrivare al computer host
Mark Roberts

@deeperDATA Potrebbe essere nell'ambito del lavoro di uno sviluppatore web, ma lo overflow dello stack non è pensato per incapsulare ogni parte del lavoro. È una testimonianza della complessità della nostra professione che i suoi requisiti abbracciano più siti di scambio di stack.
Kevin Lawrence,

1
Mi ci è voluto molto tempo per farlo funzionare. Il nostro problema era l'associazione IP dell'applicazione nel sistema guest, che si legava al nome della macchina, che significa 127.0.1.1 in Ubuntu. Abbiamo modificato l'associazione a 0.0.0.0. Impostazioni di port forwarding: IP host = IP host DNS, Porta host = 8080, IP ospite = IP di eth0, Porta ospite = 8080.
Lento

Risposte:


222

Host di comunicazione di rete -> Ospite

Connettiti al Guest e scopri l'indirizzo IP:

ifconfig 

esempio di risultato (l'indirizzo IP è 10.0.2.15):

eth0      Link encap:Ethernet  HWaddr 08:00:27:AE:36:99
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0

Vai alla finestra dell'istanza di Vbox -> Menu -> Schede di rete:

  • l'adattatore dovrebbe essere NAT
  • clicca su "port forwarding"
  • inserisci nuovo record (+ icona)
    • per l'host IP immettere 127.0.0.1 e per l'indirizzo IP dell'ospite ottenuto da anteprima. passaggio (nel mio caso è 10.0.2.15)
    • nel tuo caso la porta è 8000 - mettila su entrambi, ma puoi cambiare la porta host se preferisci

Vai al sistema host e provalo nel browser:

http://127.0.0.1:8000

o il tuo indirizzo IP di rete (scoprilo sul computer host eseguendo: ipconfig).

Comunicazione di rete Ospite -> Host

In questo caso non è necessario il port forwarding, la comunicazione passa attraverso la LAN all'host.

Sul computer host: scopri il tuo indirizzo IP della rete:

ipconfig

esempio di risultato:

IP Address. . . . . . . . . . . . : 192.168.5.1

Sul computer guest è possibile comunicare direttamente con l'host, ad esempio verificarlo con ping:

# ping 192.168.5.1
PING 192.168.5.1 (192.168.5.1) 56(84) bytes of data.
64 bytes from 192.168.5.1: icmp_seq=1 ttl=128 time=2.30 ms
...

11
entrambe le porte non saranno 8000. La porta host sarà 8000 o più a tuo piacimento, ma la porta ospite dovrebbe essere 80
Yasin

5
In questo caso, passare dalla VM all'host dovrebbe essere possibile accedendo alla VM e ottenendo l'indirizzo IP ITS (10.0.2.15 come di seguito). Per accedere al computer host dalla macchina virtuale, l'IP è 10.0.2.2 (per convenzione).
Mark Roberts,

5
Se si utilizza NAT per il guest ... Se il servizio in esecuzione sull'host è associato solo a 127.0.0.1, il guest non può utilizzare l'ip pubblico dell'host per connettersi a quel servizio (esempio di servizio: privoxy). Invece devi usare 10.0.2.2 come menzionato da Mark, o qualunque cosa 'route -n' (eseguito sul guest) mostri come gateway predefinito.
desm,


2
Ho scoperto che non è necessario specificare gli indirizzi IP Host o Guest e puoi semplicemente lasciare vuote le caselle. Sebbene se si desidera connettersi solo da localhost, è probabilmente una buona idea inserire 127.0.0.1 come host.
mwfearnley,

14

Non e possibile. localhostil dispositivo di default è sempre il dispositivo di loopback sul sistema operativo locale.
Poiché la macchina virtuale esegue il proprio sistema operativo, ha un proprio dispositivo di loopback a cui non è possibile accedere dall'esterno.

Se si desidera accedervi, ad esempio in un browser, connettersi ad esso utilizzando invece l'IP locale:

http://192.168.180.1:8000

Questo è solo un esempio, ovviamente, puoi scoprire l'IP effettivo eseguendo un ifconfigcomando su una shell nel sistema operativo guest.


Ho provato anche questo, ma non ha funzionato sia per NAT che per bridge. Gli accessi di apache nel guest non danno alcun errore e l'apache è attivo e in esecuzione nel guest.
Carmen

Sei sicuro di utilizzare l'IP corretto? È possibile verificare che cercando di accedere l'indirizzo dal all'interno della macchina virtuale. Se fallisce, stai usando un IP sbagliato o il tuo apache non è impostato per l'ascolto sulla porta 8080.
Chris

Ha funzionato per me - grazie!
Matt Frear,

Ha funzionato anche per me. Prima di sostituire "localhost" con l'indirizzo IP del sistema operativo host, ho sempre ricevuto "Server rifiutato la chiave" e "Accesso negato" senza spiegazione in /var/log/auth.log nonostante LogLevel DEBUG3 in / etc / ssh / sshd_config
VR

@Chris significa che sull'host, con voci di host virtuali come mysite.localhostnon sarà accessibile alla macchina Ospite, perché devo fare riferimento all'Host utilizzando solo un indirizzo IP?
danjah
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.