Como configurar redes NAT e somente host com endereço IP estático no VirtualBox

22

Estou tentando configurar um conjunto de convidados no VirtualBox, para que cada um deles possa acessar a Internet e ficar visível um para o outro e para o host. Eu também quero que os convidados tenham endereços IP estáticos.

Aqui está o procedimento que eu segui até agora:

  1. Desative o recurso de servidor DHCP da rede somente host a ser usado nesta configuração
  2. Altere o endereço IP atribuído ao host para 192.168.56.254
  3. Crie uma máquina convidada com 2 placas de interface de rede (NIC)
  4. Configure a 1ª NIC para usar NAT
  5. Configure a 2ª NIC para usar a rede Hot-Only
  6. Instale o sistema operacional (Ubuntu Server 13.10) em cada um deles
  7. Atualize o SO
  8. Configure a rede da seguinte forma 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. Salve o arquivo
  2. Reiniciar

Quando o convidado é inicializado novamente, a rede Somente host está funcionando bem. Os pares de máquinas host / convidado e convidado / convidado podem executar ping um no outro, no entanto, a Internet não está funcionando como apt-getfalha.

Se eu emitir um service networking restartcomando, a rede começará a funcionar como deveria.

O que estou fazendo errado?

Tentei mudar a ordem em que as NICs aparecem no /etc/network/interfacesarquivo. Também troquei a rede NAT / somente host entre as 2 NICs. Nada funcionou.

O host é o Windows 8.1 e o convidado é o Ubuntu Server 13.10. Eu tentei o mesmo no Mac OS X com resultados semelhantes.

Eu apreciaria muito qualquer ajuda nisso.

Atualizar:

Eu incluí a saída dos seguintes comandos abaixo, para ajudar no diagnóstico:

  • cat / etc / network / interfaces
  • ifconfig -a
  • rota -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

Atualização 2:

Depois de executar sudo service networking restart, a saída de route -nse torna:

$ 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

Então, como asseguro essa configuração na inicialização?

Umar Farooq Khawaja
fonte

Respostas:

16

Seria mais fácil solucionar o seu problema se você publicasse os resultados obtidos ao tentar executar ping em um endereço externo (como os servidores DNS do Google que você está usando), nas configurações de rede atuais e na sua tabela de roteamento.

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

Sem saber mais, isso é um tiro no escuro, mas acho que: a) você não está obtendo um endereço DHCP no eth0 ou b) as configurações do gateway para o eth1 estão mexendo com a rota padrão atribuída pelo DHCP.

Se você não está obtendo um endereço DHCP para eth0, provavelmente é uma configuração incorreta no VirtualBox (como recuperar os adaptadores).

De qualquer forma, você não precisa de um gateway ou configurações de DNS designadas especificamente para eth1, pois elas serão atribuídas pelo DHCP em eth0, portanto, eu removeria as linhas de gateway, dns-search e dns-nameservers da sua configuração. Suas máquinas virtuais ainda poderão se comunicar sem uma configuração de gateway se estiverem na mesma rede e o VirtualBox estiver configurado corretamente.

Editar: para garantir que você não tenha um gateway no eth1 após uma reinicialização, remova as linhas do bloco eth1 para que fique assim:

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0

Quando terminar, você não terá nenhuma linha de gateway no seu arquivo de interfaces.

jkt123
fonte
Eu adicionei o diagnóstico como você sugeriu. Eu acho que a resposta correta é (b), ou seja, as configurações de gateway eth1estão mexendo com a rota padrão DHCP atribuída. Existe uma solução para isso?
Umar Farooq Khawaja
1
Eu editei minha resposta para mostrar a aparência do seu bloco eth1 no arquivo de interfaces. Você não precisa da rede ou das linhas de transmissão e não deve ter a linha de gateway. Retire esses três.
Jt123
3

Eu vim com essa solução, que é a mesma que a resposta de @ jkt123 e a pergunta de @ Umar, mas mais curta. Eu gostaria de receber feedback sobre isso!

Na caixa virtual, ative as redes NAT e somente host . (BTW: Funciona no meu host win7. Não sei como fazer isso no host linux).

No host - encontre o ip da interface "host-only"

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

No convidado, edite / etc / network / interfaces . O truque foi reverter a ordem eth1 (somente host) antes de eth0 (internet / dhcp). Não sei 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
fonte
0

Antes de tudo, ativei as duas redes NAT com DHCP e hospedei apenas redes com static ip add 192.168.40.41.

Então, eu segui com este comando:

nano cat /etc/network/interfaces

Eu obtive 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

E antes de reiniciar, digitei o seguinte comando:

sudo service networking restart

Então reiniciado.

Depois de carregar no VM VirtualBox, as duas redes estão funcionando. Posso conectar-me à Internet e conectar-me 192.168.40.41através de um navegador da web.

Espero que isso seja útil para obter o nanoeditor:

sudo apt-get update
sudo apt-get install nano

Em seguida, basta digitar o nanoterminal para iniciá-lo.

Mirza Mohammed Baig
fonte
0

Você tem vários gateways padrão atribuídos a diferentes NICs. Em geral, "Padrão" significa uma opção pré-selecionada. Nesse caso, se um gateway padrão especificado for definido para ambas as NICs, não seria uma opção pré-selecionada. Além disso, isso também resultaria em problemas de comunicação, como roteamento assíncrono. Não tenho certeza de como o Metric de ambas as interfaces está definido como 0, mas pode ser devido a ter ambas as NICs com gateways. A descrição da Microsoft sobre isso está localizada aqui e o recurso Metric possui vários fatores que fornecem como ele é determinado para definir prioridades. (Link: https://support.microsoft.com/en-us/help/299540/an-explanation-of-the-automatic-metric-feature-for-ipv4-routes )

De acordo com @ jkt123 na resposta respondida, há apenas 1 gateway padrão que deve ser designado.

Balldigy
fonte