VirtualBox: dwa interfejsy sieciowe (NAT i tylko host) w gościu Debian na Ubuntu

48

Utworzyłem maszynę Wirtualną Debiana na VirtualBox z dwoma interfejsami: NAT (do dostępu do Internetu) i tylko hostem. Nie wiem jednak, jak sprawić, by oba interfejsy działały jednocześnie. Jeśli zdefiniuję tylko host jako adapter 1, będę mógł uzyskać dostęp do mojej maszyny wirtualnej z hosta, ale nie z Internetu; jeśli zdefiniuję NAT jako adapter 1, mogę uzyskać dostęp do Internetu, ale nie mogę połączyć się z moim gościem Debian.

Jak mogę sprawić, by oba interfejsy działały razem?

Uwaga : wciąż próbuję zmapować jakiś port z mojego hosta na port SSH z mojego gościa SO, więc nie trzeba sugerować, żebym to zrobił :)

EDYCJA : To jest wyjście, ifconfiggdy pierwszy adapter jest tylko hostem :

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)

To jest dane wyjściowe, netstat -nrgdy pierwszy adapter jest tylko hostem :

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

To jest dane wyjściowe, ifconfiggdy pierwszy adapter jest 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)

To jest dane wyjściowe, netstat -nrgdy pierwszy adapter jest 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
źródło

Odpowiedzi:

48

Rozwiązanie było bardzo proste: po prostu musiałem dodać następujące wiersze w wirtualnej maszynie Debian „s /etc/network/interfacespliku:

allow-hotplug eth1
iface eth1 inet dhcp

Druga linia nakazuje interfejsowi uzyskanie adresu IP za pośrednictwem DHCP. Pierwszy wiersz ładuje interfejs w czasie uruchamiania.

Aby zastosować zmiany do działającego systemu, wywołaj:

ifup eth1

Nazwa eth1interfejsu może się różnić, użyj, ifconfig -aaby wyświetlić listę wszystkich dostępnych interfejsów.

EDYCJA : pełna /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
źródło
1
Mogę potwierdzić. Debian nie konfiguruje drugiego interfejsu /etc/network/interfaces. Naprawiłem mój problem, dzięki. W przypadku potencjalnego debugowania są to dwa interfejsy virtio dostarczane przez Virtualbox. Jednym z nich jest interfejs NAT używany do dostępu do Internetu (NAT jest dostarczany indywidualnie przez vbox), drugi to sieć tylko hosta z DHCP w zupełnie innej prywatnej klasie IP. Wersja Debian przetestowana 6.0.6 x64.
davolfman
czy możesz proszę zamieścić cały plik / etc / network / interfaces? Walczę z tym od 2 dni.
John Nicholas
@JohnNicholas gotowe. Pamiętaj, że powinieneś edytować plik gościa /etc/network/interfaces .
brandizzi
na zdrowie, moje było takie samo. Mój problem polegał na tym, że gdy najpierw miałem adapter NAT w vbox, drugi (host) adapter próbowałby użyć serwera dhcp na tym adapterze i wszystko poszło nie tak. Kiedy zamówiłem tylko adaptery w vbox jako hosta, wtedy NAT zaczął działać (niezależnie od ich kolejności w Linuksie, co ciekawe). Netctl nie miał tego problemu w innym vm.
John Nicholas
2
Działa świetnie, dzięki! Jednak Ubuntu 18 używa teraz nowego interfejsu o nazwie „netplan”. Masz pomysł, jak powtórzyć powyższe w Netplan?
yahermann,
11

Miałem podobny problem z moją maszyną Wirtualną Ubuntu 14.04, a Rozwiązanie sugerowane przez @brandizzi dla Debiana działało bez większych zmian.

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

Dla UBUNTU 16.04

Uruchom polecenie

ifconfig -a

Poszukaj nowego interfejsu, tak jak w moim przypadku jest to „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
źródło
3
Odnosi się to również do Debiana 9+ (instalacja Ubuntu 16)
Maksim Luzik
3

Oba adaptery powinny być skonfigurowane w Debianie

Wygląda na to, że w obu przypadkach masz skonfigurowany tylko jeden adapter, stąd twój problem.

Utwórz 2 karty w konfiguracji VirtualBox maszyny wirtualnej, a następnie uruchom ją. Jeśli widzisz tylko jeden skonfigurowany adapter podczas korzystania z ifconfig (pojedynczy eth0, brak też eth1), powinieneś użyć narzędzia do konfiguracji sieci dla Debiana (Network Manager, ifupdown itp.), Aby skonfigurować oba interfejsy w DHCP. Więc powinieneś mieć eth0 i eth1 w DHCP.

Huygens
źródło
0

Upewnij się, że używasz osobnych podsieci prywatnej przestrzeni adresowej dla każdego interfejsu.

Na przykład w przypadku interfejsu NAT można użyć adresu w przestrzeni 192.168.0.0/16.

Interfejs, który jest „tylko hostem”, może znajdować się w przestrzeni 10.0.0.0/24.

George M.
źródło
Cóż, są one rozdzielone (moja przestrzeń NAT to 10.0.2.0/24, a moja NAT to 192.168.56.0/24).
brandizzi
Możesz edytować swoje pytanie to wyjście ifconfig, a netstat -nrwięc możemy zobaczyć, jak interfejsy i routing są skonfigurowane?
George M
Ok, dodałem wynik polecenia do pytania.
brandizzi