Direccionamiento localhost desde una máquina virtual VirtualBox

786

Tengo un servidor de prueba / desarrollo local (HTTP, por supuesto), escuchando el puerto 8000.

Estoy trabajando en Linux, así que para probar la página en Internet Explorer 6, 7, 8, etc. Ejecuto una máquina virtual usando VirtualBox; También necesito ver cómo se ve en Firefox en un entorno Windows (las fuentes, por ejemplo, son diferentes).

En mi máquina real, abro el sitio web simplemente usando la URL http://localhost:8000, ¿cómo abordo este host local desde la máquina virtual?

En este momento, mi solución es usar la dirección IP. ¿Alguna idea mejor?

Hasen
fuente
38
No puedo creer que esto siga siendo tan tedioso. He estado usando VB durante años y, aunque se ha vuelto más fácil, sigue siendo el obstáculo principal, y las opciones de red siguen siendo difíciles de entender, y todavía no funciona de manera inmediata para lo que la gran mayoría de los usuarios quieren para usarlo. Probablemente cientos de miles usan VB para probar sitios (o aplicaciones) en diferentes plataformas en localhost. Es alucinante pensar cuánto tiempo y molestia se pueden ahorrar mejorando este aspecto particular del software.
Rolf
Ver también la misma pregunta en superuser.com: superuser.com/questions/310697/...
Purplejacket

Respuestas:

939

Google buscó esto: http://data.agaric.com/localhost-from-virtualbox-xp-install-ubuntu

Sugiere usar IP: http://10.0.2.2y funcionó para mí.

Entonces, edité el archivo de hosts C:\windows\system32\drivers\etc\hosts, y agregué esta entrada:

10.0.2.2   outer

Si está probando en IE8, recuerde poner http://en la barra de direcciones. Simplemente poner la ip directamente no funcionará.

Por ejemplo:

http://10.0.2.2:3000/
Hasen
fuente
77
Noté en ipconfig (Windows en VirtualBox) que el enrutador predeterminado para mi VirtualBox es esa dirección IP ... así que eso tiene sentido para mí.
benc
48
Para poder guardar sus ediciones en el archivo hosts, inicie el Bloc de notas haciendo clic derecho y seleccionando "Ejecutar como administrador"
Noah Sussman
25
Tuve que cambiar mi Attached toconfiguración de Red VirtualBox de Bridged Adaptera NATpara que esto funcione para mí.
Troy Harvey
1
también puede establecerlo como 10.0.2.2 localhost en la configuración de VM para garantizar que las rutas absolutas se resuelvan correctamente
Mario Peshev
55
Necesito acceder localhostno 10.0.2.2debido a alguna autenticación de mierda que quiere localhost como la dirección :(
Dominic
408

Mac OS

Estoy ejecutando Virtual Box en macOS (anteriormente OS X), usando Virtual Box para probar IE en Windows, etc.

Vaya a IE en Virtual Box y acceda a localhosttravés de http://10.0.2.2for localhosto http://10.0.2.2:3000for localhost:3000.

Mantuve la configuración de red como NAT, sin necesidad de puente como se sugirió anteriormente en mi caso. No es necesario editar ningún archivo de configuración.

Jonathan Lin
fuente
39
De hecho, tuve que agregar 'http: //' delante de la dirección IP para que funcione (cuadro IE8 / WinXP).
wrtsprt
8
Pero, ¿hay alguna forma de asignar 10.0.2.2 a localhost: 8888? Tengo localhost: 8888 como la URL de inicio en mi base de datos. Ir a 10.0.2.2 en VB carga la página HTML, pero todos los enlaces se rompen porque apuntan a localhost: 8888
Michael Giovanni Pumo
@MichaelGiovanniPumo, que yo sepa, no puede asignar la URL directamente a un puerto específico. tienes que indicar el puerto explícitamente
Jonathan Lin
2
@ JonathanLin Lo resolví simplemente asignando 10.0.2.2 a localhost en el archivo de hosts Win7 y eso funcionó con el puerto: 8888 de todos modos, por lo que ahora está funcionando. Gracias.
Michael Giovanni Pumo
Marvelous está funcionando, macOS Sierra versión 10.12.5 y virtualbox v 5.1.22
Tabares
82

Para habilitar esto en OSX tuve que hacer lo siguiente:

  1. Apaga tu máquina virtual.
  2. Vaya a VirtualBox Preferences -> Network -> Host-only Networks ->hacer clic en el ícono "+". Haga clic en Aceptar.
  3. Seleccione su casilla y haga clic en el "Settings" icon -> Network -> Adapter 2 ->menú desplegable "Conectado a:", seleccione "Adaptador solo de host" y su red ( vboxnet0) debería aparecer a continuación de forma predeterminada. Haga clic en Aceptar.
  4. Una vez que vuelva a iniciar su caja, debería poder acceder a localhost en http://10.0.2.2/

Puede consultarlo localhosty acceder a otros sitios alojados localmente agregando sus referencias al archivo de hosts ( C:\windows\system32\drivers\etc\hosts) de la siguiente manera:

10.0.2.2    localhost
10.0.2.2    subdomain.localhost
Stephen Saucier
fuente
44
Esta solución me funcionó con una pequeña modificación: después de hacer el nuevo Adaptador solo de host (vboxnet0), edite el adaptador. En la ventana emergente, vaya a la pestaña Adaptador y copie el IPv4 Address(por ejemplo 192.168.56.1). Luego, una vez que inicie la VM, abra su navegador y vaya ahttp://192.168.56.1:3000
Robert
Funciona tanto en XP como en Windows 7
Sukeerthi Adiga
1
Desafortunadamente, no puedo resolver mis subdominios, seguí los pasos de la respuesta aceptada aquí para verificar que el archivo de hosts funciona en Win10 como se esperaba: serverfault.com/questions/452268 / ... ¿ Alguna idea?
danjah
Trabajó en la máquina host MacOs High Serra e invitado Windows 7
Kapitula Alexey
66
No pude encontrar la opción "Redes de solo host".
Jason Moore
56

Lo más probable es que tenga la red de su máquina virtual configurada en NAT. Si configura su red en Bridged, debería poder acceder a su máquina host por su nombre de host. Por ejemplo, si su nombre de host es "jsmith-Precision-7510" y desea abrir http: // localhost: 3000 / , podrá ver esa página en http: // jsmith-Precision-7510: 3000 / .

Para encontrar su nombre de host, abra una terminal / consola y luego ejecute el comando hostname. Su nombre de host aparecerá en la siguiente línea.

Consulte la documentación de VirtualBox para obtener instrucciones sobre cómo establecer sus configuraciones de red en Bridged.

Nick Haddad
fuente
hmm, por alguna razón la interfaz gráfica de usuario (en mi máquina) no tiene esta opción!
hasen
¿Qué versión estás usando? Descubrí que en Mac, algunos de los documentos manuales básicos son completamente diferentes.
benc
Amo esta solución. Tenga en cuenta que en algunos Windows más antiguos no podrá usarlos a whatever.localmenos que instale Bonjour.
Marc-André Lafortune
42

Tuve que ir a virtualbox y cambiar la configuración de mi red a 'NAT'. Después de eso, pude localhostejecutar en mi máquina host desde mi emulador en virtualbox a través dehttp://10.0.2.2:3000

Pytth
fuente
Recientemente (2019) descargué la máquina virtual invitada IE10 de Windows 7 de Microsoft (mi host es MacOS Sierra) y tuve muchos problemas con la configuración de la red. Así que finalmente lo descarté y descargué la máquina virtual invitada IE11 de Microsoft Windows 7. Luego lo configuré en la red 'NAT' y pude llegar al host local del host http://10.0.2.2exactamente como lo describe @Pytth aquí.
Purplejacket
Esta debería ser la respuesta aceptada.
lots0logs
35

Si tiene un adaptador conectado a NAT , hoy en día es una solución mejor y más elegante para configurar el reenvío de puertos a los puertos locales.

Settings> Network> Adapter> Advanced>Port forwarding

Simplemente inserte una nueva regla y establezca Host porty Guest porten 80(para http) o 22(para ssh), y así sucesivamente.

Entonces puede acceder a esa máquina ingresando solo http://localhost

También es posible que desee cambiar NAT al modo transparente.

Boris Brdarić
fuente
8
@Boris Lo que describe aquí es cómo llegar desde el host al servidor invitado (puerto). Pero la pregunta era al revés.
Petr Bodnár
Porque al estar en un BT Home Hub, esta era la única opción que funcionaba para mí
Hashim Akhtar,
33

Descubrí que 10.0.2.2:<port>funciona, pero solo si el Modo Promiscuo está configurado correctamente. Después de instalar mi VM, fui a Configuración> Red> Adaptador 1.

NAT está configurado de manera predeterminada y el menú desplegable Modo promiscuo está deshabilitado. Cambié de NAT a Adaptador en puente, que habilitó el menú desplegable Modo promiscuo, y luego cambié el valor de "Denegar" a "Permitir máquinas virtuales". Luego volví a NAT, que deshabilitó el Modo Promiscuo nuevamente, pero retuvo el nuevo valor.

Después de solo este cambio, pude iniciar mi VM y ver mis máquinas host localhost:<port>en mi VM en 10.0.2.2:<port>.

bluehazetech
fuente
1
Estoy ejecutando Windows 7 como mi máquina host y Windows 10 como invitado, finalmente esta solución me funcionó en VirtualBox 4.3.30 r 10.16.10. ¡Gracias!
Micer
Acabo de instalar Windows 10 en la caja virtual y ¡esto funcionó!
captainill
Esto funcionó para mí también en combinación con las instrucciones de spsaucier más arriba. Seguí sus instrucciones, luego habilité el Modo Promiscuo - Habilitar Todo
DyeA
31

No poder redirigir las solicitudes a localhost en la VM al host local del host ahora está integrado en Windows ( https://tools.ietf.org/html/rfc6761#section-6.3 ), incluidas las VM disponibles en https: //developer.microsoft.com/en-us/microsoft-edge/tools/vms/

Por razones de seguridad, Microsoft ahora evita las entradas de archivos de host para anular la dirección de localhost a otra cosa que no sea la dirección de bucle invertido :: 1. Entonces, agregue una línea al archivo host de la VM, como

10.0.2.2 localhost

será ignorado

Hay dos formas (que yo sepa) de anular esto:

1) use NETSH para portproxy al host

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

(donde 10.0.2.2 es la puerta de enlace predeterminada en la VM y 8000 es el puerto que desea resolver en el host).

2) Configure IIS para realizar el enrutamiento de solicitud de aplicación y luego reescriba las solicitudes de localhost: port al hostIP: port

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

ActualAl
fuente
77
Usé el enfoque NETSH. trabajado como un encanto. Esta es la mejor respuesta de IMO.
Liang Zhou el
1
También utilicé NETSH, trabajé como magia. Esta es mi mejor respuesta también. Fue el único que funcionó
Van_Paitin el
netshfue lo que me ayudó, probé todo lo que encontré en la red, pero no tuve éxito. Esto permitirá acceder <protocol>://localhost:<port>, en lugar de acceder directamente por IP. Esta debería ser la respuesta aceptada para Windows 10.
Octavian Lari
Esta debería ser la respuesta aceptada, ya que es relevante y tiene la que funciona actualmente
IAmJulianAcosta
26

Mac OS

Si desea configurar un entorno de Windows con Virtualbox en una Mac, simplemente use la configuración NAT predeterminada en el adaptador, y en su VM de Windows, vaya al archivo hosts y agregue lo siguiente:

10.0.2.2       localhost
10.0.2.2       127.0.0.1

A diferencia de las respuestas anteriores, es importante incluir ambas líneas, de lo contrario no funcionará.

Artipixel
fuente
66
Esto funciona muy bien con las imágenes modern.ie para depurar ie / edge en Mac, que es como llegué a esta pregunta. Hay una excepción: Windows 10. Windows 10 no permite la modificación del dominio localhost a través del archivo hosts (locura) La solución consiste en habilitar IIS y configurar un proxy inverso a través de él, logrando lo mismo en muchos más pasos: developer.microsoft. com / es-us / microsoft-edge / platform / issues / ...
MaxPRafferty
@MaxPRafferty ¿Pudiste hacer que esto funcionara? He pasado por todo lo demás en este hilo en vano. He actualizado mi archivo de host como sugiere esta respuesta y seguí los pasos en ese enlace. Era un poco ambiguo en cuanto a dónde declarar 10.0.2.2 en el paso 7. ¿A dónde va en la regla? Ahora estoy implacablemente directo a la página de IIS en mi Windows VM Localhost
David Weber
@DavidWeber sí, lo hice, en realidad archivé ese error, así que todavía tengo esa imagen disponible. 10.0.2.2 debe ir a la "URL de acción", que aparece como "reescribir url" en la pantalla de edición: página principal de reescritura: user-images.githubusercontent.com/1894398/… , user-images.githubusercontent.com/1894398/ … Editar página de reglas: user-images.githubusercontent.com/1894398/…
MaxPRafferty
@MaxPRafferty Gracias por la ayuda y los enlaces. Todavía no puedo hacer que esto funcione. Una cosa tan simple y no estoy seguro de dónde está el problema ahora. He seguido esto hasta la 't' y aún nada, incluso cuando intento cada una de las otras sugerencias de tipo de red. Parece que también podría comprar una PC en este momento.
David Weber
3
No creo que esto funcione más ahora que las nuevas versiones de Windows resuelven localhost con su DNS. Tampoco creo que 127.0.0.1 se pueda redirigir así (solo nombres de host).
kossmoboleat
22

Debe editar su archivo de hosts en su máquina virtual de Windows de la misma manera que lo hace para su máquina de host local:

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

Y vincule sus hosts virtuales a 10.0.2.2, si solo está usando localhost, reemplace

127.0.0.1 localhost con 10.0.2.2 localhost

Por ejemplo:

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

Esto le dice a su máquina virtual que apunte a su máquina local para esos nombres de dominio.

Guillermo
fuente
Gracias, esto ayudó en mi caso (ejecutar sitios web locales en Docker con nginx): acceder a la dirección IP (10.0.2.2) solo da un error nginx.
ggzone
22

No necesita cambiar el archivo de hosts ni ninguna configuración de Virtual Box. Mantenga la configuración en NAT. Vaya a su instancia de Windows y ejecute "cmd" o abra cmd.exe. Ejecute el comando "ipconfig" y obtenga la dirección IP de la puerta de enlace predeterminada . Examine http://10.0.2.2:8080 en Windows IE, verá que es lo mismo que su Mac Safari http: // localhost: 8080 / o http://127.0.0.1:8080

marlonjuc
fuente
1
Cuando un servidor de desarrollo local tiene dependencias de desarrollo vinculadas localhost. (por ejemplo, webpack-dev-server)
kube
lo que es 10.2.2.3 or .4? Puedo hacer ping .2tan bien como esos: VM es Windows Server ejecutándose bajo Windows Server
ycomp
10

Una combinación de algunas cosas eventualmente hizo que las cosas funcionaran de mi parte. Ejecutando un servidor de matraz en macosx.

En mi máquina virtual de Windows edité el archivo de hosts:

  • Ejecute el bloc de notas como administrador
  • abierto C:\windows\system32\drivers\etc\hosts
  • agregue esta entrada: 10.0.2.2 outer

Apagar VM y en mi Mac en VirtualBox:

  • Ir a VirtualBox > preferences > Network > Host-only Networks > +para agregar una redvboxnet1
  • Ir a My_VM > settings > Network > Adapter 1.
  • Seleccione Enable Network Adaptery establezca Attached to:en Bridged Adapter.
  • Luego configúrelo Advanced > Promiscuous Mode:en Allow VMs.
  • Hacer clic OK
  • Ir a My_VM > settings > Network > Adapter 1.
  • Establecer de Attached to:nuevo a NAT.

Después fuí a Adapter 2

  • Establecer Attached to:a Host-only Adaptery seleccione la red añadida anterior vboxnet1.

Inicié mi servidor en mi Mac, ejecutándolo 127.0.0.1:5000y ahora estaba accesible en mi máquina virtual enhttp://10.0.2.2:5000

Hombre, qué pesadilla probar en IE en mac. ¿Cómo no hay una manera más simple?

Craicerjack
fuente
1
Desearía poder votar esto miles de veces. Esto fue lo único que funcionó después de encontrar métodos más simples, como simplemente editar el archivo hosts y usar la configuración NAT predeterminada; ninguna de esas publicaciones resolvió mi problema. Estoy ejecutando MacOS Sierra con una VM de IE11 en Win81 desde developer.microsoft.com/en-us/microsoft-edge/tools/vms en caso de que ese combo ayude a alguien más aquí.
Manu Kanthan
FWIW, intenté deshacer todas esas configuraciones y luego eliminar VirtualBox y volver a instalar, volver a importar las máquinas virtuales de Microsoft. Inicié mi servidor rails rails s -b 127.0.0.1y accedí a él desde todas las máquinas virtuales en http://10.0.2.2:3000y funcionó. Me pregunto si el cambio de configuración desde arriba persistió de alguna manera incluso después de revertirlo todo.
Manu Kanthan
1
Esto no fue exactamente lo mismo para mí, especialmente los pasos para el Adaptador 2, tuve que usar la configuración del Adaptador Nat para que vboxnet1funcione, pero terminó funcionando. Gracias por las pistas!
jfunk
4

Resolví agregando un reenvío de puertos en la configuración de Virtualbox en la red. Host IP set 127.0.0.1 puerto: 8080 IP de invitado: Proporcione cualquier IP para el sitio web (por ejemplo, 10.0.2.5) puerto: 8080 Ahora desde el acceso de máquina invitado http://10.0.2.5:8080 usando IE

Praveen
fuente
3

En el cuadro virtual como se dijo arriba, puede agregar este archivo de hosts de línea

10.0.2.2   outer

pero para guardarlo, si no tiene administradores en su máquina virtual, simplemente mueva el archivo de hosts al escritorio, luego edítelo para agregar la línea 10.0 .... exterior, guarde el archivo y muévalo a su lugar original.

Nico
fuente
2

verifique si puede golpear su máquina principal con: ipconfig (obtenga su dirección IP)

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

Si no puede llegar al puerto, intente agregar una nueva regla de entrada en su firewall primario que permita puertos locales.

Entonces pude acceder http://<ip>:<port>

Jon
fuente
2

En caja virtual

  1. Configure su red en redes de puente
  2. Vaya a Modo avanzado de conjunto avanzado: Permitir todo

Ahora el bit complicado es su localhost, si está ejecutando desde Node.js configure la dirección IP en 0.0.0.0, luego busque su propia dirección IP, por ejemplo cmd: ipconfig -> 10.0.1.3

Escriba esa dirección con el número de puerto. Y funcionará.

Joel Chu
fuente
1

Pasos generales:

  • Una red común (agregue NIC solo de host o puente)
  • configurar el servicio preferido para escuchar en la interfaz apropiada (interfaz conectada a NIC compartida)
  • Use IP: puerto para llegar al servicio objetivo, use una IP que pertenezca a la red compartida.
Anna
fuente
0

En Windows con un Windows 7 virtual, lo único que funcionó para mí fue usar NAT y reenvío de puertos (no se pudo ejecutar la conexión en puente). Encontré un tutorial aquí: http://www.howtogeek.com/122641/how-to-forward-ports-to-a-virtual-machine-and-use-it-as-a-server/ (desplácese hacia abajo para la parte con " Reenvío de puertos a una máquina virtual ").

Con estos cambios, pude llegar al sitio web de xampp con " http: //192.168.xx.x: 8888 / mywebsite " en Internet Explorer 10 en mi máquina virtual.

Encontré la IP en el Panel de control XAMPP> Netstat ("Sistema").

Henning Fischer
fuente
0

Si usa Virtual Box, puede conectar Mac OSX (y creo que Linux) a su máquina virtual de Windows usando una línea de código -> Sugiero detener la caja antes de ejecutar esto en la terminal.

VBoxManage modifyvm "YOUR VM NAME" --natdnshostresolver1 on

Notaré que esto es de los documentos de Dinghy, que estoy ejecutando, pero es un comando de caja virtual, por lo que no debería importarle lo que uses siempre que sea Virtual Box

Lux.Capacitor
fuente
0

Necesito ejecutar en localhost, no alguna IP extraña.

1) Desde su terminal Mac, haga lo posible iconfig -apara encontrar su dirección IP local. Probablemente sea el último.

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

por ejemplo, 10.1.5.60

2) inicie su imagen de Windows. inicio> escriba cmdpara obtener un terminal

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

4) agrega la siguiente línea 10.1.5.60 localhost

5) abra IE, y la siguiente url debería llegar al servidor que se ejecuta en su mac: http://localhost:3000/

Jason Moore
fuente
En realidad, esto parece romper las URL localhost de un navegador Mac.
Jason Moore
-2

Obtenga la IP para la máquina que ejecuta Apache (inet addr: in ifconfig) e ingrésela en la barra de direcciones del navegador del cuadro virtual.

H.Rabiee
fuente
-3

En realidad, la respuesta del usuario 477494 es en principio correcta.

He aplicado la misma lógica en otros entornos (host OS X - Windows XP virtual) y eso funciona. Tuve que alternar la pila LAMP del host para obtener la dirección IP y el puerto Apache para resolver, pero una vez que lo descubrí, me reí.

orionrush
fuente
¿Puedes dar algún consejo sobre cómo configurar / averiguar las IP en una máquina OSX?
cukabeka
? no estoy seguro de qué dirección busca después: la dirección de la computadora se puede encontrar a través de las preferencias del sistema / red -> Dirección IP. Esa es básicamente la dirección a la que la macine responderá externamente. Internamente localhost: 80 debería funcionar para el servidor apache de osx, mientras que MAMP usará localhost: 8888 por defecto.
orionrush
No es aparente a qué respuesta se refiere esto (un enlace hubiera sido prudente), y parece más un comentario.
isherwood