En VirtualBox, ¿cómo configuro máquinas virtuales solo de host que pueden acceder a Internet?

99

Al configurar máquinas virtuales con VirtualBox, a menudo quiero las siguientes características

  • vm tiene una ip estática
  • el host puede acceder a vm sin reenvío de puertos
  • VM puede acceder a internet
  • Puedo mover mi computadora portátil de una red a otra (p. Ej., Desde el hogar a la oficina, a la cafetería) sin preocuparme por asegurar o reconfigurar la máquina virtual.

Ninguno de los métodos de conexión de red de VirtualBox cumple estos requisitos por sí solo.

  • NAT
    requiere reenvío de puertos si desea conectarse a la vm desde el host.

  • Solo host
    El VM no puede acceder a Internet, a menos que el host sea un enrutador.

  • Bridged
    Expone el vm a la red; No es portátil.

Cristiano largo
fuente

Respuestas:

110

Puedo obtener la configuración que quiero configurando dos adaptadores en el vm.

VirtualBox 4.2.12
Ubuntu 12.04 invitado

En VirtualBox> Preferencias> Red, configure una red de solo host.

El mío se llama vboxnet0, se configura manualmente:
ip 192.168.56.1
netmask 255.255.255.0
no dhcp

Configuración de red de VirtualBox Configuración de red de VirtualBox

Luego, en la configuración de red para la máquina virtual, configure dos adaptadores:

Adaptador 1
solo host, vboxnet0

Adaptador 2
NAT

Inicie la máquina virtual e inicie sesión a través de la consola que proporciona VirtualBox.

Ejecute esto para ver sus adaptadores:

ls /sys/class/net

En mi caso, los adaptadores se llamaron eth1 y eth2 (y lo, la interfaz de bucle invertido).

Luego, edite su configuración de red.

sudoedit /etc/network/interfaces


# The loopback network interface
auto lo
iface lo inet loopback

# Host-only interface
auto eth1
iface eth1 inet static
        address         192.168.56.20
        netmask         255.255.255.0
        network         192.168.56.0
        broadcast       192.168.56.255

# NAT interface
auto eth2
iface eth2 inet dhcp

Tenga en cuenta que eth1no tiene una puerta de enlace predeterminada especificada. eth2obtendrá una puerta de enlace predeterminada de dhcp.


Actualización de marzo de 2018

Consulte esta respuesta de @ Hugo14453 para obtener una versión actualizada que funciona con Ubuntu 17.10 y posteriores.

Cristiano largo
fuente
1
Actualización: VirtualBox 4.3 introdujo un servicio NAT que parece que podría obviar la necesidad de dos interfaces. 6.4. Servicio de traducción de direcciones de red
Christian Long
44
Esto me ayudó mucho, uso Virtualbox para el desarrollo, y cuando estoy en mi casa, todo funciona correctamente, ya que tengo la configuración de red a mi gusto, la pesadilla comienza cuando me mudo a otra red (familia, empresas ... ), Tengo que cambiar las URL de los sitios web, eliminar algunos archivos del sistema, reiniciar No sé cuántas veces y la lista continúa. Esta solución no se preocupa por su red actual, por eso me gusta ... Simplemente conecte su PC a cualquier red y concéntrese en su trabajo.
Nabil Kadimi
1
Gracias. No definir una dirección de puerta de enlace para la interfaz de solo host resolvió mis problemas.
Florian
2
Perfecto. / etc / network / interfaces config fue clave ¡GRACIAS!
Byron Whitlock el
1
"Tenga en cuenta que eth1 no tiene una puerta de enlace predeterminada especificada. Eth2 obtendrá una puerta de enlace predeterminada de dhcp". <- ESTE COMENTARIO ES LA CLAVE.
Pere Pages
16

Podría resolver mi problema con una mezcla de solución de Christian Long. Agregué 2 adaptadores:

Adaptador 1 - NAT

Adaptador 2: solo host, vboxnet0

La única diferencia estaba en el archivo de interfaces de VM:

sudoedit /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback
# NAT
auto eth0
iface eth0 inet dhcp
# Host only
auto eth1
iface eth1 inet dhcp

En la configuración de red de VirtualBox, dejé DHCP marcado.

Después de reiniciar una máquina virtual, todo funcionó bien.

Alan Camillo
fuente
Esto funciona para mí, pero quiero que las máquinas virtuales tengan direcciones IP estáticas. En el momento en que hago eso, Internet deja de funcionar. Si configuro ambos con DHCP, funciona bien. ¿Cómo hago para que la interfaz de solo host obtenga una IP estática?
Umar Farooq Khawaja
Solo uno que funcionó. Gracias. +1
Jorge Campos
14

Hay otra manera simple de no necesitar crear un nuevo adaptador NAT

  1. En la máquina host, agregue las siguientes reglas de iptables. Esto reenviará los paquetes a través del host y a Internet:

    sudo iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT 
    
    sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    
    sudo iptables -A POSTROUTING -t nat -j MASQUERADE
    
  2. También deberá habilitar el reenvío de IP en el host emitiendo el siguiente comando:

    sudo sysctl -w net.ipv4.ip_forward=1
    
Largo bui
fuente
Esto funciona solo en un host Linux.
Derek Mahar
Necesitamos el servicio "dnsmasq" en ejecución. En el enlace unix.stackexchange.com/a/384187/61742 tenemos información completa sobre lo que sugirió @Danatela. ¡Gracias!
Eduardo Lucio
1
@EduardoLucio por favor dale créditos a Long Bui. Acabo de editar esta publicación para que sea más legible.
Danatela
@Long Bui ¡Gracias por tu contribución! ¡Arriba! ¡Arriba! ¡Arriba! ¡Arriba! ¡Arriba! ¡Arriba! = D
Eduardo Lucio
12

La configuración de red ha cambiado en Ubuntu 17.10.1. Ahora usa la configuración de netplan.

Seguí esta guía aquí

Como una migración de la respuesta de Christian, haga lo siguiente:

Cree un nuevo archivo de configuración dentro de / etc / netplan para mantener su configuración de adaptador solo de host.

p.ej sudo nano /etc/netplan/02-netcfg.yaml

Ingrese lo siguiente para configurar una IP estática de 192.168.56.12 donde enp0s3está el nombre de su adaptador de solo host.

network:
    version: 2
    renderer: networkd
    ethernets:
        enp0s3:
            addresses:
                - 192.168.56.12/24
            dhcp4: no

Luego ejecute los siguientes dos comandos:

sudo netplan generate
sudo netplan apply

NAT debería funcionar sin configuración, ejecutar ifconfigpara ver el resultado:

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.56.12  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::a00:27ff:fe06:6cdd  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:06:6c:dd  txqueuelen 1000  (Ethernet)
        RX packets 252  bytes 23076 (23.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 208  bytes 30015 (30.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.3.15  netmask 255.255.255.0  broadcast 10.0.3.255
        inet6 fe80::a00:27ff:fe4d:a6b8  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:4d:a6:b8  txqueuelen 1000  (Ethernet)
        RX packets 95  bytes 94894 (94.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 85  bytes 7436 (7.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
Hugo
fuente
1
¡Gracias! Agregué una sección de actualización a mi respuesta anterior y la vinculé a esta nueva información.
Christian Long
He seguido su solución, pero extraño el soporte de nat para enp0s8. Agregué manualmente enable dhcp4 para enp0s8 en netplan y finalmente obtuve tanto enp0s3 como enp0s8. Espero que esto ayude a alguien.
Dzmitry Prakapenka
3

Acabo de agregar 2 adaptadores:

Adaptador 1 solo host, vboxnet0

Adaptador 2 NAT

Y funciona perfecto, puedo acceder a la máquina virtual desde el host, y tengo Internet en el VM.

Guillermo Gonzalez
fuente
2

Sí, tuve este problema, ¡fue un dolor total! Pero lo resolví simplemente instalando el servidor Squid Cache Proxy en mi PC física, y de esa manera, ¡mis PC de virtualbox de Internet solo para host podrían conectarse a Internet!

Hice una guía rápida de 3 minutos aquí, ¡para cualquiera que quiera saber cómo funciona! http://b0zmeister.wordpress.com/allowing-host-only-virtualbox-guest-to-connect-to-the-internet/

B0zmeister
fuente
Eso funcionó muy bien para mí, gracias por compartir. Es, con mucho, la forma más sencilla de hacer que todo funcione.
Laurent
Hola Laurent, no hay problema, me alegra que haya ayudado. Me encanta ejecutar las PC de virtualbox desde una red diferente, pero con conexión a Internet funcionando :)
B0zmeister
El enlace está muerto ahora. Considere mover las instrucciones aquí.
s3v3n