¿Cómo acceder al servidor que se ejecuta en VirtualBox desde el host?

¿Cómo acceder al servidor que se ejecuta en VirtualBox desde el host?

Estoy ejecutando una aplicación web en la VM.

Puedo ver la aplicación a localhost:8888través de un navegador desde la VM.

No puedo ver la aplicación desde el host en la misma URL. Ese es el objetivo.

Lo intenté VBoxManage modifyvm "VM name" --natdnshostresolver1 onpero no tuvo efecto.

Mi configuración es:

  • Anfitrión:ventana 7
  • Invitado:Ubuntu 16.04.1 LTS
  • Caja Virtual:5.1.4r110228

Configuración de invitado

(Invitado) ifconfigcuando está en 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)

(Invitado) /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

Respuesta1

La localhost:8888URL es solo una URL válida dentro de su VM. Fuera de esa VM tendrás que usar ip.ad.dr.ess:8888o hostname:8888. En el último caso, ip.ad.dr.essse introduce una dependencia en la resolución del nombre de host en su red.

De forma predeterminada, cuando crea una VM en VirtualBox, el adaptador de red 1 está configurado en NAT. Esto le dará a la VM una dirección IP 10.0.2.15/24y una ruta predeterminada 10.0.2.2(que debería ser su host). En pocas palabras, Windows no se dirigirá a una dirección para la que proporciona NAT, sin pasar por más obstáculos primero.

Apagar la máquina virtual y cambiar la configuración del adaptador de red de la máquina virtual1 a "puenteado" permitirá que su host (y cualquier host en su red local) se comunique con esa máquina virtual sin agregar rutas especiales ni obstáculos por los que saltar.

Reinicie la máquina virtual. Verifique su conectividad a localhost:8888. También verifique su conectividad hostname:8888(asumiendo que el nombre de host se notagregó a la dirección loopback/localhost en el archivo /etc/hosts) y ip-address:8888. EDITAR: según los detalles de /etc/hosts publicados, usted arevincula su VM y, por lo tanto, la aplicación web a la red loopback. Esta configuración no se puede utilizar fuera de la VM en absoluto.

Si su servidor web y su aplicación no dependen de la IP en la que se configuró/instaló por primera vez, y tiene un servidor DHCP en su LAN, la única otra información que debe necesitar para conectarse a la VM es la dirección IP que se asignado a través de DHCP.

Para encontrar la dirección IP de la VM: abra una ventana de terminal/consola desde el escritorio de Ubuntu (ctrl-alt-T), usamos /etc/hostslos comandos hostname, ifconfig y grep para juntar las piezas y encontrar su dirección. Desde la terminal abierta, escriba hostnamey luego presione enter. Probablemente sea gc. En esa misma terminal, al escribir ifconfig eth0 | awk '/Bcast/{print $2}'se mostrará la dirección. Debería tener una línea en /etc/hosts con la dirección seguida del nombre del host. grep [hostname] /etc/hostso grep [address] /etc/hostsdeberías encontrar la línea que necesitas. Si se le ocurre algo que no sea su dirección actual seguida del nombre de host, deberá modificar el archivo /etc/hosts para agregar la información correcta.

Los hosts en su LAN ahora deberían poder conectarse a la IP de su VM en el puerto 8888. El acceso de esos hosts/clientes a la aplicación web hostname:8888dependerá de los archivos de hosts del cliente, el DNS local o incluso los servicios mDNS posiblemente proporcionados en su servidor DHCP. .

Respuesta2

Aquí hay una solución rápida que utiliza el reenvío de puertos si no desea que la máquina virtual quede expuesta a una red externa. Simplemente cree este perfil de reenvío de puertos para web y ssh como se muestra a continuación en la configuración NAT de VM

ingrese la descripción de la imagen aquí

Respuesta3

Para lograr esto, creo que sería mucho mejor usar el modo puente. Si eso no es posible o deseable, necesitará una ruta estática en su host.

Para agregar una ruta estática, haga esto: Busque en las propiedades de red de su host. Debería encontrar un adaptador llamado VirtualBox Host-Only Network. Encuentra su dirección IP. Probablemente sea 192.168.56.1, que creo que es el valor predeterminado, pero podría ser otra cosa. Llámelo abcd. Luego, obtenga la dirección IP de su invitado. Llame a ese wxyz (los primeros 3 octetos deben ser iguales en ambas direcciones). Cuando tenga eso, abra un indicador de DOS en su host y escriba este comando:

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

Si eso funciona, puede ejecutar el mismo comando con el modificador -p para hacerlo permanente (de lo contrario, desaparecerá la próxima vez que reinicie el host).

información relacionada