Indirizzare localhost da una macchina virtuale VirtualBox


786

Ho un server di test / sviluppo locale (HTTP, ovviamente), che ascolta la porta 8000.

Sto lavorando su Linux, quindi per testare la pagina su Internet Explorer 6, 7, 8, ecc. Corro una macchina virtuale usando VirtualBox; Devo anche vedere come appare su Firefox in un ambiente Windows (i caratteri per esempio sono diversi).

Nella mia macchina reale, apro il sito Web semplicemente usando l'URL http://localhost:8000, come posso indirizzare questo localhost dalla macchina virtuale?

In questo momento la mia soluzione alternativa è quella di utilizzare l'indirizzo IP. Qualche idea migliore?


38
Non posso credere che sia ancora così noioso. Uso VB da anni e sebbene sia diventato più semplice, è ancora il principale ostacolo e le opzioni di rete sono ancora difficili da capire, e non funziona ancora per quello che vuole la stragrande maggioranza degli utenti per usarlo per. Probabilmente centinaia di migliaia usano VB per testare siti (o app) su piattaforme diverse su localhost. È sbalorditivo pensare a quanto tempo e fastidio possono essere risparmiati migliorando questo particolare aspetto del software.
Rolf,

Vedi anche la stessa domanda su superuser.com: superuser.com/questions/310697/…
Purplejacket

Risposte:


939

Google ha scoperto questo: http://data.agaric.com/localhost-from-virtualbox-xp-install-ubuntu

Suggerisce di usare IP: http://10.0.2.2e ha funzionato per me.

Quindi, ho modificato il file hosts C:\windows\system32\drivers\etc\hostse ho aggiunto questa voce:

10.0.2.2   outer

Se stai testando su IE8, ricordati di inserire http://la barra degli indirizzi. Basta mettere l'ip direttamente non funzionerà.

Per esempio:

http://10.0.2.2:3000/

7
Ho notato in ipconfig (Windows in VirtualBox) che il router predefinito per il mio VirtualBox è quell'indirizzo IP ... quindi ha senso per me.
benc,

48
Per poter salvare le modifiche nel file hosts, avvia Blocco note facendo clic con il pulsante destro del mouse e selezionando "Esegui come amministratore"
Noah Sussman,

25
Ho dovuto cambiare le Attached toimpostazioni della mia rete VirtualBox da Bridged Adaptera NATper farlo funzionare per me.
Troy Harvey,

1
puoi anche impostarlo come localhost 10.0.2.2 nella configurazione della VM per assicurarti che i percorsi assoluti siano risolti correttamente
Mario Peshev,

5
Ho bisogno di accedere a localhostnon a 10.0.2.2causa di un'autentica merda che vuole localhost come indirizzo :(
Dominic

408

Mac OS

Sto eseguendo Virtual Box su macOS (precedentemente OS X), usando Virtual Box per testare IE su Windows, ecc.

Vai a IE in Virtual Box e accedi localhosttramite http://10.0.2.2per localhosto http://10.0.2.2:3000per localhost:3000.

Ho mantenuto le impostazioni di rete come NAT, non ho bisogno di bridge come suggerito sopra nel mio caso. Non è necessario modificare alcun file di configurazione.


39
In realtà ho dovuto aggiungere "http: //" davanti all'indirizzo IP per farlo funzionare (casella IE8 / WinXP).
wrtsprt,

8
Ma c'è un modo per mappare 10.0.2.2 a localhost: 8888? Ho localhost: 8888 come l'URL di casa nel mio database. Andare a 10.0.2.2 in VB carica la pagina HTML, ma tutti i collegamenti si interrompono perché puntano a localhost: 8888
Michael Giovanni Pumo,

@MichaelGiovanniPumo per quanto ne so, non è possibile mappare l'URL direttamente a una porta specifica. devi dichiarare esplicitamente la porta
Jonathan Lin,

2
@JonathanLin L'ho risolto semplicemente mappando 10.0.2.2 su localhost sul file host Win7 e funzionando con la porta: 8888 comunque, quindi ora funziona. Grazie.
Michael Giovanni Pumo,

Marvelous funziona, macOS Sierra versione 10.12.5 e virtualbox v 5.1.22
Tabares

82

Per abilitarlo su OSX ho dovuto fare quanto segue:

  1. Spegni la tua macchina virtuale.
  2. Vai a VirtualBox Preferences -> Network -> Host-only Networks ->fare clic sull'icona "+". Clicca OK.
  3. Seleziona la tua casella e fai clic sul "Settings" icon -> Network -> Adapter 2 ->menu a discesa "In allegato a:", seleziona "Adattatore solo host" e la tua rete ( vboxnet0) dovrebbe apparire sotto per impostazione predefinita. Clicca OK.
  4. Una volta riavviato il box, dovresti essere in grado di accedere a localhost su http://10.0.2.2/

Puoi fare riferimento ad esso localhoste accedere ad altri siti localhosted aggiungendo i loro riferimenti al file hosts ( C:\windows\system32\drivers\etc\hosts) come il seguente:

10.0.2.2    localhost
10.0.2.2    subdomain.localhost

4
Questa soluzione ha funzionato per me con una piccola modifica: dopo aver creato il nuovo adattatore solo host (vboxnet0), modifica l'adattatore. Nella finestra che si apre, vai alla scheda Adattatore e copia il IPv4 Address(es 192.168.56.1.). Quindi, una volta avviata la VM, apri il browser e vai ahttp://192.168.56.1:3000
Robert

Funziona sia su XP che su Windows 7
Sukeerthi Adiga,

1
Sfortunatamente, non riesco a risolvere i miei sottodomini, ho seguito i passaggi della risposta accettata qui per verificare che il file hosts funzioni su Win10 come previsto: serverfault.com/questions/452268/… Qualche idea?
danjah

Ha lavorato su macchine host MacO High Serra e guest Windows 7
Kapitula Alexey

6
Non sono riuscito a trovare l'opzione "Reti solo host".
Jason Moore,

56

Molto probabilmente la rete della tua macchina virtuale è impostata su NAT. Se imposti la tua rete su Bridged, dovresti essere in grado di accedere al tuo computer host con il suo nome host. Ad esempio, se il nome host è "jsmith-Precision-7510" e si desidera aprire http: // localhost: 3000 / , sarà possibile visualizzare quella pagina su http: // jsmith-Precision-7510: 3000 / .

Per trovare il tuo nome host, apri un terminale / console e quindi esegui il comando hostname. Il tuo nome host verrà emesso nella riga successiva.

Consulta la documentazione di VirtualBox per istruzioni su come impostare le impostazioni di rete su Bridged.


hmm, per qualche motivo la GUI (sulla mia macchina) non ha questa opzione!
hasen

quale versione stai usando? Ho scoperto che su Mac, alcuni dei documenti manuali di base sono completamente diversi.
benc,

Adoro questa soluzione. Si noti che su alcuni Windows meno recenti non sarà possibile utilizzare whatever.localse non si installa Bonjour.
Marc-André Lafortune,

42

Ho dovuto andare in virtualbox e modificare le impostazioni della mia rete su "NAT". Successivamente, sono stato in grado di colpire in localhostesecuzione sul mio computer host dal mio emulatore su virtualbox attraversohttp://10.0.2.2:3000


Di recente (2019) ho scaricato il computer virtuale guest Windows 7 IE10 di Microsoft (il mio host è MacOS Sierra) e ho avuto molti problemi con l'installazione della rete. Quindi alla fine l'ho appena eliminato e scaricato la VM guest IE11 di Microsoft Windows 7. Quindi l'ho impostato su rete "NAT" e ho potuto colpire l'host locale dell'host http://10.0.2.2esattamente come descritto qui da @Pytth.
Purplejacket,

Questa dovrebbe essere la risposta accettata.
lots0logs

35

Se hai un adattatore collegato a NAT , al giorno d'oggi è la soluzione migliore ed elegante per impostare il port forwarding su porte locali.

Settings> Network> Adapter> Advanced>Port forwarding

Basta inserire una nuova regola e impostare Host porte Guest portsu 80(per http) o 22(per ssh) e così via.

Quindi puoi accedere a quella macchina inserendo semplicemente http://localhost

Potresti anche voler cambiare NAT in modalità trasparente.


8
@Boris Quello che descrivi qui è come arrivare dall'host al server guest (porta). Ma la domanda riguardava il contrario.
Petr Bodnár

Perché essendo su un BT Home Hub, questa è stata l'unica opzione che funziona per me
Hashim Akhtar il

33

Ho scoperto che 10.0.2.2:<port>funziona, ma solo se la Modalità promiscua è impostata correttamente. Dopo aver installato la mia macchina virtuale, sono andato su Impostazioni> Rete> Scheda 1.

NAT è impostato per impostazione predefinita e il menu a discesa Modalità promiscua è disabilitato. Sono passato da NAT a Adapter Bridged, che ha abilitato il menu a discesa Modalità promiscua, quindi ho modificato il valore da "Nega" a "Consenti macchine virtuali". Sono quindi tornato a NAT, che ha disabilitato di nuovo la modalità promiscua, ma ha mantenuto il nuovo valore.

Dopo solo questa modifica, sono stato in grado di avviare la mia macchina virtuale e vedere i miei computer host localhost:<port>sulla mia macchina virtuale all'indirizzo 10.0.2.2:<port>.


1
Sto eseguendo Windows 7 come macchina host e Windows 10 come ospite, finalmente questa soluzione ha funzionato per me in VirtualBox 4.3.30 r 10.16.10. Grazie!
Micer,

Ho appena installato Windows 10 su Virtual Box e questo ha funzionato!
captainill

Questo ha funzionato anche per me in combinazione con le istruzioni di Spsaucier più avanti. Ho seguito le sue istruzioni, quindi ho abilitato la Modalità promiscua - Abilita tutto
DyeA

31

Non essere in grado di reindirizzare le richieste a localhost nella VM al localhost dell'host è ora inserito in Windows ( https://tools.ietf.org/html/rfc6761#section-6.3 ), comprese le VM disponibili su https: //developer.microsoft.com/en-us/microsoft-edge/tools/vms/

Per motivi di sicurezza, Microsoft ora impedisce le voci del file host per sovrascrivere l'indirizzo di localhost a qualcosa di diverso dall'indirizzo di loopback :: 1. Quindi aggiungendo una riga al file host della VM come

10.0.2.2 localhost

sarà ignorato.

Esistono due modi (di cui sono a conoscenza) per ignorare questo:

1) utilizzare NETSH per portproxy sull'host

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

(dove 10.0.2.2 è il gateway predefinito sulla macchina virtuale e 8000 è la porta che si desidera risolvere sull'host.)

2) Configurare IIS per eseguire il routing delle richieste dell'applicazione, quindi riscrivere le richieste per localhost: port su hostIP: port

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


7
Ho usato l'approccio NETSH. ha funzionato come un fascino. Questa è l'IMO la migliore risposta.
Liang Zhou,

1
Ho usato anche NETSH, ha funzionato come per magia. Questa è anche la mia migliore risposta. Era l'unico che ha funzionato
Van_Paitin il

netshè stato ciò che mi ha aiutato, ho provato tutto quello che ho trovato in rete, ma senza successo. Ciò consentirà di accedere <protocol>://localhost:<port>, invece di accedere direttamente tramite IP. Questa dovrebbe essere la risposta accettata per Windows 10.
Ottaviano Lari,

Questa dovrebbe essere la risposta accettata, in quanto pertinente e attualmente funzionante
IAmJulianAcosta

26

Mac OS

Se si desidera configurare un ambiente Windows con Virtualbox su un Mac, utilizzare le impostazioni NAT predefinite sull'adattatore e nella VM di Windows, andare al file hosts e aggiungere quanto segue:

10.0.2.2       localhost
10.0.2.2       127.0.0.1

Diversamente dalle risposte sopra, è importante includere entrambe le righe, altrimenti non funzionerà.


6
Funziona benissimo con le immagini modern.ie per il debug, ad esempio / edge su Mac, ed è così che sono arrivato a questa domanda. C'è un'eccezione: Windows 10. Windows 10 non consente la modifica del dominio localhost tramite il file hosts (follia) La soluzione alternativa consiste nell'abilitare IIS e impostare un proxy inverso attraverso di esso, ottenendo lo stesso in molti altri passaggi: developer.microsoft. com / it-it / microsoft-edge / platform / issues /…
MaxPRafferty,

@MaxPRafferty Sei riuscito a farlo funzionare? Ho passato tutto il resto su questo thread senza risultati. Ho aggiornato il mio file host come suggerisce questa risposta e ho seguito i passaggi in quel link. Era un po 'ambiguo sapere dove dichiarare 10.0.2.2 al punto 7. Dove va nella regola? Ora sono inesorabilmente diretto alla pagina IIS sul mio Localhost di macchine virtuali Windows
David Weber,

@DavidWeber sì, lo ero - ho effettivamente archiviato quel bug, quindi ho ancora quell'immagine disponibile. 10.0.2.2 deve andare in "URL azione", elencato come "URL riscrittura" nella schermata di modifica: pagina di riscrittura principale: user-images.githubusercontent.com/1894398/… , user-images.githubusercontent.com/1894398/ … Modifica la pagina delle regole: user-images.githubusercontent.com/1894398/…
MaxPRafferty

@MaxPRafferty Grazie per l'aiuto e i collegamenti. Non riesco ancora a farlo funzionare. Una cosa così semplice e non sono sicuro di dove sia il problema adesso. Ho seguito questo alla 't' e ancora niente anche quando ho provato i suggerimenti di ciascuno degli altri tipi di rete. Sembra che potrei anche comprare un PC a questo punto.
David Weber,

3
Non penso che questo funzioni più ora che le versioni più recenti di Windows risolvono localhost con il loro DNS. Non credo che 127.0.0.1 possa essere reindirizzato in questo modo (solo nomi host).
kossmoboleat

22

È necessario modificare il file hosts sul computer virtuale Windows nello stesso modo in cui lo si fa per il computer host locale:

C: \ WINDOWS \ system32 \ drivers \ etc \ hosts

E collega i tuoi host virtuali a 10.0.2.2, se stai solo usando localhost, sostituisci

127.0.0.1 localhost con 10.0.2.2 localhost

Per esempio:

10.0.2.2 localhost
10.0.2.2 local.site1.com
10.0.2.2 local.site2.com

Questo dice alla tua macchina virtuale di puntare alla tua macchina locale per quei nomi di dominio.


Grazie, questo mi ha aiutato nel mio caso (eseguendo siti Web locali nella finestra mobile con nginx) - l'accesso a IP direclty (10.0.2.2) dà solo errore nginx.
ggzone,

22

Non è necessario modificare il file hosts o alcuna configurazione di Virtual Box. Mantieni le impostazioni in NAT. Vai all'istanza di Windows ed esegui "cmd" o apri cmd.exe. Eseguire il comando "ipconfig" e ottenere l' indirizzo IP del gateway predefinito . Sfoglia http://10.0.2.2:8080 su Windows IE vedrai che è lo stesso del tuo Mac Safari http: // localhost: 8080 / o http://127.0.0.1:8080


1
Quando un server di sviluppo locale ha dipendenze di sviluppo collegate localhost. (es. webpack-dev-server)
kube

che cos'è 10.2.2.3 or .4? Posso fare il ping .2così come quelli - VM è Windows Server in esecuzione su Windows Server
ycomp

10

Una combinazione di alcune cose alla fine ha fatto funzionare le cose dalla mia parte. Esecuzione di un server matraccio su macosx.

Nella mia macchina virtuale Windows ho modificato il file hosts:

  • Esegui il blocco note come amministratore
  • Aperto C:\windows\system32\drivers\etc\hosts
  • aggiungi questa voce: 10.0.2.2 outer

Chiudi la VM e sul mio Mac in VirtualBox:

  • Vai a VirtualBox > preferences > Network > Host-only Networks > +per aggiungere una retevboxnet1
  • Vai a My_VM > settings > Network > Adapter 1.
  • Selezionare Enable Network Adaptere impostare Attached to:su Bridged Adapter.
  • Quindi impostare Advanced > Promiscuous Mode:su Allow VMs.
  • Clic OK
  • Vai a My_VM > settings > Network > Adapter 1.
  • Set Attached to:di nuovo a NAT.

Poi sono andato a Adapter 2

  • Impostare Attached to:su Host-only Adaptere selezionare la rete aggiunta precedente vboxnet1.

Ho avviato il mio server sul mio mac, in esecuzione 127.0.0.1:5000e questo era ora accessibile sul mio VM ahttp://10.0.2.2:5000

Amico, che incubo testare su IE su Mac. In che modo non esiste un modo più semplice?


1
Vorrei poter votare questo mille volte. Questa è stata l'unica cosa che ha funzionato dopo aver trovato metodi più semplici come la semplice modifica del file hosts e l'utilizzo delle impostazioni NAT predefinite - nessuno di questi post ha risolto il mio problema. Sto eseguendo MacOS Sierra con una VM di IE11 su Win81 da developer.microsoft.com/en-us/microsoft-edge/tools/vms nel caso in cui questa combinazione aiuti qualcun altro qui.
Manu Kanthan,

FWIW, ho provato a ripristinare tutte queste impostazioni, quindi a rimuovere VirtualBox e reinstallare, reimportando le VM da Microsoft. Ho avviato il mio server rails con rails s -b 127.0.0.1e acceduto da tutte le macchine virtuali su http://10.0.2.2:3000e ha funzionato. Mi chiedo se il cambio di impostazione dall'alto abbia indugiato in qualche modo anche dopo averlo riavvolto.
Manu Kanthan,

1
Questo non è stato lo stesso per me, in particolare i passaggi per Adapter 2, ho dovuto utilizzare l'impostazione Nat Adapter per farlo funzionare vboxnet1, ma alla fine ha funzionato. Grazie per gli indizi!
jfunk

4

Ho risolto aggiungendo un port forwarding nelle impostazioni di Virtualbox sotto rete. Set IP host 127.0.0.1 porta: 8080 IP ospite: fornire qualsiasi IP per il sito Web (diciamo 10.0.2.5) porta: 8080 Ora dall'accesso alla macchina ospite http://10.0.2.5:8080 utilizzando IE


3

Nella casella virtuale come detto sopra, è possibile aggiungere questo file host di linea

10.0.2.2   outer

ma per salvarlo, se non hai amministratori nella tua VM basta spostare il file hosts sul desktop, quindi modificarlo per aggiungere la riga 10.0 .... esterna, salvare il file e spostarlo nella posizione originale.


2

controlla se riesci a colpire la tua macchina madre con: ipconfig (ottieni il tuo indirizzo IP)

ping <ip> o telnet <ip> <port>

Se non riesci ad accedere alla porta, prova ad aggiungere una nuova regola in entrata nel firewall principale che consenta le porte locali.

Sono stato quindi in grado di accedere http://<ip>:<port>


2

Nella scatola virtuale

  1. Imposta la tua rete su Bridge
  2. Vai a Impostazioni avanzate Modalità promiscua: consenti tutto

Ora il bit difficile è il tuo host locale, se stai eseguendo da Node.js imposta l'indirizzo IP su 0.0.0.0, quindi cerca il tuo indirizzo IP, ad esempio cmd: ipconfig -> 10.0.1.3

Digita quell'indirizzo con il numero di porta. E funzionerà.


1

Passaggi generali:

  • Una rete comune, (aggiungi NIC solo host o bridge)
  • configurare il servizio preferito per l'ascolto sull'interfaccia appropriata (interfaccia connessa alla scheda NIC condivisa)
  • Usa IP: porta per raggiungere un servizio mirato, usa un IP che appartiene alla rete condivisa.

0

Su Windows con un Windows 7 virtuale l'unica cosa che ha funzionato per me è stato l'utilizzo del NAT e del port forwarding (impossibile eseguire la connessione bridge in esecuzione). Ho trovato un tutorial qui: http://www.howtogeek.com/122641/how-to-forward-ports-to-a-virtual-machine-and-use-it-as-a-server/ (scorrere fino a la parte con " Inoltro porte a una macchina virtuale ").

Con queste modifiche ho potuto raggiungere il sito Web xampp con " http: //192.168.xx.x: 8888 / mywebsite " in Internet Explorer 10 sulla mia macchina virtuale.

Ho trovato l'IP in Pannello di controllo XAMPP> Netstat ("Sistema").


0

Se usi Virtual Box puoi connettere Mac OSX (e penso Linux) al tuo computer Windows virtuale usando una riga di codice -> Suggerisco di fermare il box prima di eseguirlo nel terminale.

VBoxManage modifyvm "YOUR VM NAME" --natdnshostresolver1 on

Noterò che questo proviene dai documenti di Dinghy, che sto eseguendo, ma è un comando di casella virtuale, quindi non dovrebbe importare effettivamente ciò che usi finché è la sua casella virtuale


0

Devo eseguire localhost, non un IP strano.

1) Dal tuo terminale Mac, iconfig -acerca l'indirizzo IP locale. È probabilmente l'ultimo.

en7: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV> ether 38:c9:86:32:0e:69 inet6 fe80::ea:393e:a54f:635%en7 prefixlen 64 secured scopeid 0xe inet 10.1.5.60 netmask 0xfffffe00 broadcast 10.1.5.255 nd6 options=201<PERFORMNUD,DAD> media: autoselect (1000baseT <full-duplex,flow-control>) status: active

ad es. 10.1.5.60

2) avvia l'immagine di Windows. start> digitare cmdper ottenere un terminale

3) notepad c:\windows\system32\drivers\etc\hosts

4) aggiungi la seguente riga 10.1.5.60 localhost

5) apri IE e il seguente URL dovrebbe colpire il server in esecuzione sul tuo mac: http://localhost:3000/


In realtà, questo sembra interrompere gli URL di localhost da un browser mac.
Jason Moore,

-2

Ottieni l'IP per la macchina che esegue Apache (inet addr: in ifconfig) e inseriscilo nella barra degli indirizzi del browser della scatola virtuale.


-3

In realtà, la risposta di user477494 è in linea di principio corretta.

Ho applicato la stessa logica in altri ambienti (host OS X - Windows XP virtuale) e questo è il trucco. Ho dovuto scorrere ciclicamente lo stack LAMP dell'host per ottenere la risoluzione dell'indirizzo IP e della porta Apache, ma una volta capito, stavo ridendo.


puoi dare qualche consiglio su come impostare / scoprire gli IP su una macchina OSX?
cukabeka,

? non so quale sia il tuo indirizzo di destinazione - l'indirizzo del computer può essere trovato tramite le preferenze di sistema / rete -> Indirizzo IP. Questo è fondamentalmente l'indirizzo a cui la macina risponderà esternamente. Localhost interno: 80 dovrebbe fare per il server apache di osx - mentre MAMP utilizzerà localhost: 8888 per impostazione predefinita.
Orionrush,

Non è chiaro a quale risposta si riferisca (un collegamento sarebbe stato saggio) e sembra più un commento.
Isherwood,
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.