Cómo configurar NAT y redes de solo host con dirección IP estática en VirtualBox

22

Estoy tratando de configurar un conjunto de invitados en VirtualBox, de modo que cada uno de ellos pueda acceder a Internet y ser visible el uno al otro y al host. También quiero que los invitados tengan direcciones IP estáticas.

Aquí está el procedimiento que he seguido hasta ahora:

  1. Desactive la función del servidor DHCP de la red de solo host que se utilizará en esta configuración
  2. Cambie la dirección IP asignada al host a 192.168.56.254
  3. Cree una máquina invitada con 2 tarjetas de interfaz de red (NIC)
  4. Configure la primera NIC para usar NAT
  5. Configure la 2da NIC para usar redes solo en caliente
  6. Instale el sistema operativo (Ubuntu Server 13.10) en cada uno de ellos
  7. Actualiza el SO
  8. Configure la red de la siguiente manera editando / etc / network / interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
gateway 192.168.56.254
dns-search cloudspace.local
dns-nameservers 8.8.8.8 8.8.4.4
  1. Guarda el archivo
  2. Reiniciar

Cuando el invitado se inicia nuevamente, la red de solo host funciona bien. Los pares de máquinas host / guest e guest / guest pueden hacer ping entre sí, sin embargo, Internet no funciona como apt-getfalla.

Si luego emito un service networking restartcomando, la red comienza a funcionar como debería.

¿Qué estoy haciendo mal?

He intentado cambiar el orden en que aparecen las NIC en el /etc/network/interfacesarchivo. También he intercambiado la red NAT / solo host entre las 2 NIC. Nada funcionó.

El host es Windows 8.1 y el invitado es Ubuntu Server 13.10. He intentado lo mismo en Mac OS X con resultados similares.

Agradecería mucho cualquier ayuda en esto.

Actualizar:

He incluido el resultado de los siguientes comandos a continuación, para ayudar en el diagnóstico:

  • cat / etc / network / interfaces
  • ifconfig -a
  • ruta -n
$ cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
gateway 192.168.56.254

$ ifconfig -a
eth0      Link encap:Ethernet  HWaddr 08:00:27:75:47:64
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe75:4764/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1180 (1.1 KB)  TX bytes:1332 (1.3 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:93:98:d8
          inet addr:192.168.56.1  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe93:98d8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:140 errors:0 dropped:0 overruns:0 frame:0
          TX packets:225 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:14418 (14.4 KB)  TX bytes:27378 (27.3 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: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:1184 (1.1 KB)  TX bytes:1184 (1.1 KB)

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.56.254  0.0.0.0         UG    0      0        0 eth1
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1

Actualización 2:

Después de ejecutar sudo service networking restart, la salida de se route -nconvierte en:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.2.2        0.0.0.0         UG    0      0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1

Entonces, ¿cómo me aseguro de esta configuración en el arranque?

Umar Farooq Khawaja
fuente

Respuestas:

16

Sería más fácil resolver su problema si publicara los resultados que obtiene al intentar hacer ping a una dirección externa (como los servidores DNS de Google que está utilizando), la configuración de red actual y su tabla de enrutamiento.

/sbin/ifconfig -a
/sbin/route -n

Sin saber más, esto es un poco difícil en la oscuridad, pero supongo que a) no está obteniendo una dirección DHCP en eth0, o b) la configuración de su puerta de enlace para eth1 está jugando con la ruta predeterminada asignada por DHCP.

Si no está obteniendo una dirección DHCP para eth0, probablemente sea una configuración incorrecta en VirtualBox (como obtener sus adaptadores al revés).

De cualquier manera, no necesita una configuración de puerta de enlace o DNS asignada específicamente para eth1, ya que DHCP la asignará en eth0, por lo que eliminaría las líneas de puerta de enlace, dns-search y dns-nameservers de su configuración. Sus máquinas virtuales aún podrán comunicarse sin una configuración de puerta de enlace si están en la misma red y VirtualBox está configurado correctamente.

Editar: para asegurarse de que no tiene una puerta de enlace en eth1 después de un reinicio, elimine las líneas de su bloque eth1 para que se vea así:

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0

Cuando haya terminado, no tendrá líneas de puerta de enlace en su archivo de interfaces.

jkt123
fuente
He agregado los diagnósticos como usted sugirió. Creo que la respuesta correcta es (b), es decir, la configuración de la puerta de enlace eth1está alterando la ruta predeterminada asignada por DHCP. ¿Hay una solución para esto?
Umar Farooq Khawaja
1
He editado mi respuesta para mostrar cómo debe verse su bloque eth1 en el archivo de interfaces. No necesita la red ni las líneas de difusión, y no debería tener la línea de la puerta de enlace. Elimina esos tres.
jkt123
3

Se me ocurrió esta solución, que es lo mismo que la respuesta de @ jkt123 y la pregunta de @ Umar, pero más corta. Agradecería sus comentarios!

En virtualbox, habilite las redes NAT y las de solo host . (Por cierto: funciona en mi host win7. No sé cómo hacerlo en Linux host).

En el host: busque la IP de la interfaz "solo host"

ipconfig /all     # for windows host
ifconfig -a       # for linux host

En el invitado, edite / etc / network / interfaces . El truco fue revertir el orden eth1 (solo host) viene ANTES de eth0 (internet / dhcp). No se porque.

auto lo                        # keep the original loopback settings
iface lo ...                   # yeah, i don't remember, just keep it.

# ----> Ok, this is my addition <-----
auto eth1                      
allow-hotplug eth1             # i think hotplug it helps. not sure.
iface eth1 inet static
address 192.168.56.100         # arbitrary IP address between 2 and 254

auto eth0                      # This is the original content
iface eth0 inet dhcp           #  of this file, now at the end.

reiniciar.

Berry Tsakala
fuente
0

En primer lugar, habilité ambas redes NAT con DHCP y host solo con red static ip add 192.168.40.41.

Entonces, seguí con este comando:

nano cat /etc/network/interfaces

Obtuve este resultado:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.41.4
netmask 255.255.255.0

Y antes de reiniciar, escribí el siguiente comando:

sudo service networking restart

Luego reiniciado.

Después de cargar en VM VirtualBox, ambas redes están funcionando. Puedo conectarme a Internet y puedo conectarme a 192.168.40.41través de un navegador web.

Espero que esto sea útil para obtener el nanoeditor:

sudo apt-get update
sudo apt-get install nano

Luego simplemente escriba nanoterminal para iniciarlo.

Mirza Mohammed Baig
fuente
0

Tiene varias puertas de enlace predeterminadas asignadas a diferentes NIC. En general, "Predeterminado" significa una opción preseleccionada. En este caso, si se define una puerta de enlace predeterminada especificada para ambas NIC, no sería una opción preseleccionada. Además, esto también provocaría problemas de comunicación como el enrutamiento asincrónico. No estoy seguro de cómo la métrica de ambas interfaces se establece en 0, pero puede deberse a que ambas NIC tienen puertas de enlace. El informe de Microsoft sobre esto se encuentra aquí y la función Métrica tiene una serie de factores que proporcionan cómo se determina para establecer prioridades. (Enlace: https://support.microsoft.com/en-us/help/299540/an-explanation-of-the-automatic-metric-feature-for-ipv4-routes )

De acuerdo con @ jkt123 en la respuesta respondida, solo se debe asignar una puerta de enlace predeterminada.

Balldigy
fuente