VirtualBox: due interfacce di rete (NAT e solo host) in un guest Debian su Ubuntu


48

Ho creato una VM Debian su VirtualBox con due interfacce: una NAT (per l'accesso a Internet) e una solo host. Tuttavia, non so come far funzionare entrambe le interfacce contemporaneamente. Se definisco solo l'host come adattatore 1, posso accedere alla mia macchina virtuale dall'host ma non da Internet; se definisco quello NAT come adattatore 1, posso accedere a Internet ma non posso raggiungere il mio ospite Debian.

Quindi, come potrei far lavorare insieme entrambe le interfacce?

Nota : sto ancora cercando di mappare alcune porte dal mio host alla porta SSH dal SO guest, quindi non è necessario suggerirmi di farlo :)

EDIT : questo è l'output di ifconfigquando il primo adattatore è solo 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)

Questo è l'output di netstat -nrquando il primo adattatore è solo 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

Questo è l'output di ifconfigquando il primo adattatore è quello 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)

Questo è l'output di netstat -nrquando il primo adattatore è quello 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

Risposte:


48

La soluzione era piuttosto semplice: ho dovuto aggiungere le seguenti righe in Debian macchina virtuale 's /etc/network/interfacesdi file:

allow-hotplug eth1
iface eth1 inet dhcp

La seconda riga indica all'interfaccia di ottenere un IP tramite DHCP. La prima riga carica l'interfaccia all'avvio.

Per applicare le modifiche a un sistema in esecuzione, invoca:

ifup eth1

Il nome eth1dell'interfaccia può variare, utilizzare ifconfig -aper elencare tutte le interfacce disponibili.

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

1
Posso confermare. Debian non configura la seconda interfaccia in /etc/network/interfaces. Risolto il mio problema, grazie. Per il potenziale debug, si tratta di due interfacce virtio fornite da Virtualbox. Uno è l'interfaccia NAT utilizzata per l'accesso a Internet (i NAT sono forniti individualmente da vbox), l'altro è una rete solo host con DHCP in una classe IP privata completamente diversa. Versione Debian testata 6.0.6 x64.
davolfman,

puoi per favore pubblicare tutte le tue interfacce / etc / network / per favore. Sono stato alle prese con questo per 2 giorni ormai.
John Nicholas,

@JohnNicholas fatto. Si noti che è necessario modificare il file guest /etc/network/interfaces .
Brandizzi

evviva, il mio era lo stesso. Il mio problema era che quando avessi prima l'adattatore NAT in vbox l'altro adattatore (host) avrebbe provato a usare il server dhcp su quell'adattatore e tutto sarebbe andato storto. Quando ho ordinato gli adattatori in vbox solo come host, allora NAT ha iniziato a funzionare (indipendentemente dal loro ordinamento in Linux abbastanza interessante). Netctl non ha avuto questo problema in un'altra VM.
John Nicholas,

2
Funziona benissimo, grazie! Tuttavia Ubuntu 18 ora utilizza una nuova interfaccia chiamata "netplan". Qualche idea su come replicare quanto sopra in netplan?
Yahermann,

11

Stavo affrontando un problema simile con la mia Ubuntu 14.04 VM e la soluzione suggerita da @brandizzi per Debian ha funzionato con pochi cambiamenti.

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

Per UBUNTU 16.04

Esegui comando

ifconfig -a

Cerca una nuova interfaccia come nel mio 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  

3
Questo vale anche per Debian 9+ (installazione di Ubuntu 16)
Maksim Luzik,

3

Entrambi gli adattatori dovrebbero essere configurati in Debian

Sembra che in entrambi i casi sia configurato un solo adattatore, quindi il tuo problema.

Creare 2 adattatori nella configurazione VirtualBox della VM e quindi avviarlo. Se vedi solo un adattatore configurato quando usi ifconfig (un solo eth0, anche no eth1), allora dovresti usare lo strumento di configurazione di rete per Debian (Network Manager, ifupdown, ecc.) Per configurare entrambe le interfacce in DHCP. Quindi dovresti avere eth0 ed eth1 in DHCP.


0

Assicurarsi di utilizzare sottoreti di spazio indirizzo privato separate per ciascuna interfaccia.

Ad esempio, per l'interfaccia che è NAT, è possibile utilizzare un indirizzo nello spazio 192.168.0.0/16.

L'interfaccia "solo host" potrebbe trovarsi nello spazio 10.0.0.0/24.


Bene, sono separati (il mio spazio NAT è 10.0.2.0/24 e il mio NAT è 192.168.56.0/24).
brandizzi,

Puoi modificare la tua domanda per includere l'output di ifconfige netstat -nrcosì possiamo vedere come sono configurate le interfacce e il routing?
George M,

Ok, ho aggiunto l'output dei comandi alla domanda.
brandizzi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.