¿Conectarse a la máquina host desde un SO huésped VirtualBox?

214

Básicamente, me gustaría acceder a mi computadora host desde el invitado en VirtualBox. ¿Hay una dirección IP para mi host que pueda usar desde el invitado? ¿Se requieren pasos adicionales para configurar esto? Me gustaría acceder a los servicios Apache, FTP y SSH de mi host.

Naftuli Kay
fuente
1
Difícil de resolver sin ninguna pista de qué configuración de red tiene realmente su invitado. Algunos no permiten el acceso al host. Pruebe la dirección de puerta de enlace predeterminada del invitado.
Turbo J
77
Resulta que puedo alcanzarlo a través de mi puerta de enlace predeterminada en 10.0.2.2.
Naftuli Kay

Respuestas:

258

Esta respuesta es sobre una configuración de SO huésped en VirtualBox; solo necesita usar la dirección de la puerta de enlace de red en el SO huésped para conectarse al SO host desde un SO huésped.

En la configuración predeterminada de Vagrant, debería poder comunicarse con su host a través de la puerta de enlace predeterminada.

En los invitados basados ​​en Windows, puede determinar fácilmente esta dirección IP ejecutando el comando:

ipconfig

Debería arrojar algo como esto:

Windows IP Configuration

Ethernet adapter Local Area Connection:

        Connection-specific DNS Suffix  . :
        IP Address. . . . . . . . . . . . : 10.0.2.15
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 10.0.2.2

En este ejemplo, el invitado puede llegar a la máquina host 10.0.2.2.


En invitados basados ​​en Unix / Linux, use el comando:

netstat -rn

Debería arrojar algo como esto:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 wlan0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlan0

En este ejemplo, el invitado puede llegar a la máquina host 192.168.1.1.

Naftuli Kay
fuente
¿Alguna idea de por qué la conectividad sería terriblemente lenta cuando se conecta utilizando la puerta de enlace predeterminada según su respuesta?
Ben Swinburne
Esto no pareció funcionar para mí (Ubuntu 12.04, Vagrant 1.0). La puerta de enlace predeterminada dentro del invitado se mostró como 10.0.2.2, y un nmap de esa IP falló. 192.168.33.1 parece ser la IP correcta. (Tenía config.vm.network :hostonly, "192.168.33.52"en mi configuración.)
Ajedi32
En realidad, no importa. Funcionó. nmap simplemente no estaba funcionando por alguna razón; No estoy seguro de por qué. Todavía podría conectarme a los servicios que se ejecutan en el host desde esa IP, aunque nmap no los mostrara.
Ajedi32
1
netstat -rnen CentOS 7.2, Docker 1.11 mostraba una 172.17dirección como mi puerta de enlace, pero esa IP no coincidía con mi host. Resulta que lo 10.0.2.2hizo.
Spencer Williams
1
¿Cómo sabemos cuál de esas entradas es la puerta de enlace?
Kramer
36

Acceder al servidor web de la computadora host desde el invitado es fácil. Esto se puede hacer fácilmente usando dos métodos. Primero haz lo siguiente

  • Vaya a Dispositivos y seleccione Adaptadores de red ...
  • En la configuración del adaptador, verifique Adjunto a .
  • Si el valor es NAT , haga lo siguiente

  • La puerta de enlace predeterminada cuando configura Virtual box generalmente es el 10.0.2.2valor predeterminado. Si no ha cambiado nada, esto funcionará. Pero si lo ha cambiado y la máquina invitada que está ejecutando es Windows, ejecute el siguiente comando y encuentre la puerta de enlace predeterminada

    ipconfig /all

    Si está en Linux, Unix o Mac OS, ejecute el siguiente comando para obtenerlo

    netstat -rn | grep 'default' | awk '{print $2}'

  • Vaya al navegador web y escriba esta puerta de enlace predeterminada y presione Entrar. Se puede acceder al servidor web.

  • Si el valor es Adaptador en puente , haga lo siguiente
    • encuentre la dirección IP del host y el invitado
      • Si está en Windows, ejecute ipconfigy obtenga la dirección IP
      • si está en Linux, Unix o Mac OS, ejecute ifconfig | grep 'inet' y obtenga la dirección IP
      • la dirección ip es como 192.168.1.1
    • si desea acceder al host, ejecute el navegador en invitado e ingrese la dirección IP del host
    • si desea acceder al invitado, ejecute el navegador en el host e ingrese la dirección IP del invitado
Prabhu
fuente
9

Otra forma de hacerlo es utilizar un tipo de red virtual "Host". Eso le brinda una interfaz en el SO huésped con una dirección en una subred local diferente de la (s) subred (es) del "mundo exterior" en la que se encuentra su máquina host. Para que esto funcione, debes asegurarte de algunas cosas:

  • Su VM tiene un adaptador "solo host" configurado;
  • Sus servicios de host deben estar escuchando en todos los adaptadores locales, o al menos con los que desea poder contactar;
  • Su host obtendrá su propio adaptador virtual y querrá averiguar su dirección IP y agregarlo al archivo "hosts" en su sistema operativo invitado (sin embargo, eso funciona para el sistema operativo invitado; en Windows XP, es solo el " "hosts" enterrado en C: / WINDOWS / system32 / drivers / etc). Déle un nombre que desee usar para el nombre de host del host.

Una vez que haya hecho esto, debería poder "ver" el host desde la VM a través del nombre que codificó en el archivo del host.

Por ejemplo, en mi host Ubuntu 11.04, obtengo una interfaz virtual "vboxnet0" en 192.168.56.1. Los adaptadores en las máquinas tienen algo como 192.168.56.101. No necesito ir en mi máquinas virtuales, pero supongo que eso sería posible a través de un cambio simétrico al archivo de host del host. añado

192.168.56.1 mymachine

a los archivos host del sistema operativo invitado, y pueden (por ejemplo) ver el servidor web de mi máquina host en

http://mymachine/whatever

Por supuesto, puede tener configurados los adaptadores puenteados y solo de host.

Puntiagudo
fuente
0

Puede crear carpetas compartidas en VirtualBox. Esto creará automáticamente un 'recurso compartido de red' dentro de Virtual Box para acceder a las carpetas en su sistema operativo host.

Aquí hay un paso a paso decente en un sistema operativo invitado Windows XP:

http://www.giannistsakiris.com/index.php/2007/09/28/virtualbox-access-shared-folders-from-windows-xp-guest-os/

Kobaltz
fuente
¿Entonces puedo acceder a mi host en / vboxsvr / ShareName?
Naftuli Kay
Sí, configuraría una carpeta como C: \ STUFF para compartirla con VirtualBox. Dentro de VirtualBox Guest OS, puede ir a ese servidor vbox y acceder a las carpetas compartidas.
kobaltz
En realidad no quiero la carpeta compartida. Quiero una dirección IP para mi máquina host. Cuando lo reciba, me gustaría usarlo para usar servicios en mi máquina host, es decir: echo "GET /\r\n\r\n" | nc 192.168.100.100 80(enviar una solicitud HTTP GET a mi máquina host desde el invitado).
Naftuli Kay
1
En ese caso, es posible que deba configurar su adaptador de red del SO invitado en un puente. Esto extraerá una dirección IP de su DHCP o enrutador. Entonces podrá acceder de forma nativa a su máquina host a través de la dirección IP en lugar de la carpeta compartida VBox.
kobaltz
0

Aquí hay otra solución a este problema mediante el uso de una interfaz de red adicional y la configuración del tráfico destinado al host para enrutar a través de una interfaz adicional.

programador101
fuente
44
¡Bienvenido a Super User! Sería bueno incluir aquí las partes esenciales de la respuesta y proporcionar el enlace solo para referencia futura.
slhck