VirtualBox: dos interfaces de red (NAT y solo de host) en un invitado Debian en Ubuntu

48

Creé una máquina virtual Debian en VirtualBox con dos interfaces: una NAT (para acceder a Internet) y una de solo host. Sin embargo, no sé cómo hacer que ambas interfaces funcionen al mismo tiempo. Si yo defino el host solo como el adaptador 1, puedo acceder a mi VM desde el host pero no desde Internet; Si defino el NAT como adaptador 1, puedo acceder a Internet pero no puedo contactar a mi invitado Debian.

Entonces, ¿cómo podría hacer que ambas interfaces funcionen juntas?

Nota : Todavía estoy tratando de asignar algún puerto de mi host al puerto SSH de mi SO invitado, por lo que no es necesario sugerirme que lo haga :)

EDITAR : Esta es la salida de ifconfigcuando el primer adaptador es el único host :

eth0      Link encap:Ethernet  HWaddr 08:00:27:f6:b2:45  
          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fef6:b245/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:495 errors:0 dropped:0 overruns:0 frame:0
          TX packets:206 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:48187 (47.0 KiB)  TX bytes:38222 (37.3 KiB)

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:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:560 (560.0 B)  TX bytes:560 (560.0 B)

Este es el resultado de netstat -nrcuando el primer adaptador es el único host :

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.56.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0

Esta es la salida de ifconfigcuando el primer adaptador es NAT :

eth0      Link encap:Ethernet  HWaddr 08:00:27:f6:b2:45  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fef6:b245/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:53 errors:0 dropped:0 overruns:0 frame:0
          TX packets:59 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6076 (5.9 KiB)  TX bytes:5526 (5.3 KiB)

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:16436  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1664 (1.6 KiB)  TX bytes:1664 (1.6 KiB)

Esta es la salida de netstat -nrcuando el primer adaptador es NAT :

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.0.2.0        0.0.0.0         255.255.255.0   U         0 0          0 eth0
0.0.0.0         10.0.2.2        0.0.0.0         UG        0 0          0 eth0
brandizzi
fuente

Respuestas:

48

La solución fue bastante simple: solo tenía que agregar las siguientes líneas en el archivo de la máquina virtual de Debian/etc/network/interfaces :

allow-hotplug eth1
iface eth1 inet dhcp

La segunda línea indica a la interfaz que obtenga una IP a través de DHCP. La primera línea carga la interfaz en el momento del arranque.

Para aplicar los cambios a un sistema en ejecución, invoque:

ifup eth1

El nombre de la eth1interfaz puede variar, use ifconfig -apara enumerar todas las interfaces disponibles.

EDITAR : completo /etc/network/interfaces:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

allow-hotplug eth1
iface eth1 inet dhcp
brandizzi
fuente
1
Puedo confirmar. Debian no configura la segunda interfaz en /etc/network/interfaces. Arreglado mi problema, gracias. Para una posible depuración, estas son dos interfaces virtio proporcionadas por Virtualbox. Uno es la interfaz NAT utilizada para el acceso a Internet (vbox proporciona los NAT de forma individual), el otro es una red de solo host con DHCP en una clase de IP privada completamente diferente. La versión de Debian probó 6.0.6 x64.
davolfman
¿puede publicar toda su / etc / network / interfaces por favor? He estado luchando con esto durante 2 días.
John Nicholas
@ JohnNicholas hecho. Tenga en cuenta que debe editar el archivo de invitado /etc/network/interfaces .
brandizzi 01 de
Saludos, el mío era el mismo. Mi problema era que cuando tenía el adaptador NAT primero en vbox, el otro adaptador (host) intentaba usar el servidor dhcp en ese adaptador y todo salía mal. Cuando pedí los adaptadores en vbox como host solo, entonces NAT comenzó a funcionar (independientemente de su pedido en Linux, lo suficientemente interesante). Netctl no tuvo este problema en otro vm.
John Nicholas
2
Esto funciona muy bien, gracias! Sin embargo, Ubuntu 18 ahora usa una nueva interfaz llamada "netplan". ¿Alguna idea de cómo replicar lo anterior en netplan?
yahermann el
11

Estaba enfrentando un problema similar con mi VM Ubuntu 14.04, y la solución sugerida por @brandizzi para Debian funcionó con pocos cambios.

EDIT: file /etc/network/interfaces:


# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet dhcp

Para UBUNTU 16.04

Ejecutar comando

ifconfig -a

Busque una nueva interfaz como en mi caso es 'enp0s8'

EDIT file /etc/network/interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto enp0s3
iface enp0s3 inet dhcp

auto enp0s8
iface enp0s8 inet dhcp  
Pandurang Patil
fuente
3
Esto ahora también se aplica a Debian 9+ (configuración de Ubuntu 16)
Maksim Luzik
3

Ambos adaptadores deben configurarse en Debian

Parece que en ambos casos solo tiene un adaptador configurado, de ahí su problema.

Cree 2 adaptadores en la configuración de VirtualBox de su VM y luego inícielo. Si solo ve un adaptador configurado cuando usa ifconfig (un solo eth0, tampoco eth1), entonces debe usar la herramienta de configuración de red para Debian (Network Manager, ifupdown, etc.) para configurar ambas interfaces en DHCP. Por lo tanto, debe tener eth0 y eth1 en DHCP.

Huygens
fuente
0

Asegúrese de utilizar subredes de espacio de direcciones privadas separadas para cada interfaz.

Entonces, por ejemplo, para la interfaz que es NAT, podría usar una dirección en el espacio 192.168.0.0/16.

La interfaz que es 'solo host' podría estar en el espacio 10.0.0.0/24.

George M
fuente
Bueno, están separados (mi espacio NAT es 10.0.2.0/24 y mi NAT es 192.168.56.0/24).
brandizzi
¿Puede editar su pregunta para incluir la salida de ifconfigy netstat -nrasí podemos ver cómo se configuran las interfaces y el enrutamiento?
George M
Ok, agregué el resultado de los comandos a la pregunta.
brandizzi