VirtualBox: duas interfaces de rede (NAT e somente host) em um convidado Debian no Ubuntu

48

Eu criei uma VM Debian no VirtualBox com duas interfaces: uma NAT (para acessar a Internet) e uma somente host. No entanto, não sei como fazer com que ambas as interfaces funcionem ao mesmo tempo. Se eu definir o host apenas como o adaptador 1, poderei acessar minha VM pelo host, mas não pela Internet; se eu definir o NAT como adaptador 1, posso acessar a Internet, mas não consigo acessar meu Debian convidado.

Então, como eu poderia fazer as duas interfaces funcionarem juntas?

Nota : Ainda estou tentando mapear alguma porta do meu host para a porta SSH do SO convidado, portanto, não há necessidade de sugerir que eu faça isso :)

EDIT : Esta é a saída de ifconfigquando o primeiro adaptador é apenas o 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)

Esta é a saída de netstat -nrquando o primeiro adaptador é o ú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 é a saída de ifconfigquando o primeiro adaptador é o 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 é a saída de netstat -nrquando o primeiro adaptador é o 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
fonte

Respostas:

48

A solução foi bastante simples: eu só tinha que adicione as seguintes linhas na máquina virtual Debian 's /etc/network/interfacesarquivo:

allow-hotplug eth1
iface eth1 inet dhcp

A segunda linha instrui a interface a obter um IP via DHCP. A primeira linha carrega a interface no momento da inicialização.

Para aplicar as alterações em um sistema em execução, chame:

ifup eth1

O nome da eth1interface pode variar, use ifconfig -apara listar todas as interfaces disponíveis.

EDIT : 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
fonte
1
Eu posso confirmar. O Debian não configura a segunda interface no /etc/network/interfaces. Corrigido meu problema, obrigado. Para depuração potencial, são duas interfaces virtio fornecidas pelo Virtualbox. Uma é a interface NAT usada para acesso à Internet (as NATs são fornecidas individualmente pelo vbox); a outra é uma rede somente host com DHCP em uma classe de IP privada completamente diferente. A versão Debian testou 6.0.6 x64.
davolfman
você pode por favor postar todo o seu arquivo / etc / network / interfaces. Já lutamos com isso há 2 dias.
John
@JohnNicholas done. Observe que você deve editar o arquivo de convidado /etc/network/interfaces .
#
Saúde, o meu era o mesmo. Meu problema era que, quando eu tinha o adaptador NAT primeiro no vbox, o outro adaptador (host) tentava usar o servidor dhcp nesse adaptador e tudo dava errado. Quando pedi os adaptadores no vbox como host apenas, o NAT começou a funcionar (independentemente de seu pedido no linux de maneira interessante). O Netctl não teve esse problema em outra VM.
John Nicholas.
2
Isso funciona muito bem, obrigado! No entanto, o Ubuntu 18 agora usa uma nova interface chamada "netplan". Alguma idéia de como replicar o acima no netplan?
Yahermann 6/11
11

Eu estava enfrentando um problema semelhante com minha VM Ubuntu 14.04, e a solução sugerida por @brandizzi para o Debian funcionou com poucas alterações.

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

Comando de execução

ifconfig -a

Procure uma nova interface, como no meu caso, é '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
fonte
3
Isto também aplica-se a Debian 9+ (Ubuntu 16 setup)
Maksim Luzik
3

Ambos os adaptadores devem ser configurados no Debian

Parece que em ambos os casos você tem apenas um adaptador configurado, daí o seu problema.

Crie 2 adaptadores na configuração do VirtualBox da sua VM e inicie-a. Se você vir apenas um adaptador configurado ao usar ifconfig (um único eth0, também não eth1), use a ferramenta de configuração de rede do Debian (Network Manager, ifupdown, etc.) para configurar as duas interfaces no DHCP. Portanto, você deve ter eth0 e eth1 no DHCP.

Huygens
fonte
0

Verifique se você está usando sub - redes de espaço de endereço privado separadas para cada interface.

Por exemplo, para a interface que é NAT, você pode usar um endereço no espaço 192.168.0.0/16.

A interface que é 'somente host' pode estar no espaço 10.0.0.0/24.

George M
fonte
Bem, eles são separados (meu espaço NAT é 10.0.2.0/24 e meu NAT é 192.168.56.0/24).
Brandizzi
Você pode editar sua pergunta para incluir a saída de ifconfige netstat -nrpara que possamos ver como as interfaces e o roteamento estão configurados?
21812 George M
Ok, eu adicionei a saída dos comandos à pergunta.
Brandizzi