Brak dostępu do Internetu na maszynach wirtualnych w sieci NAT w VirtualBox


14

Stworzyłem sieć NAT w VirtulBox 5 w Ubuntu 14.04 LTS z następującymi ustawieniami

Nazwa pracy: NatNetwrok1
Network CIDR: 10.0.2.0/24
Obsługa DHCP: włączona
Obsługa IPv6: wyłączona
bez przekierowania portów

Dodatkowo mam dwie maszyny wirtualne (oba klony Xubuntu), skonfigurowałem ustawienia sieciowe, aby włączyć dwie karty sieciowe na każdej maszynie wirtualnej z następującymi ustawieniami we wszystkich czterech kartach:

Załączony do: „NAT Network”
Nazwa: „NatNetwrok1”

Po uruchomieniu obu maszyn wirtualnych widzę następujące ustawienia po uruchomieniu polecenia ifconfig

wyniki ifconfig na Xubuntu1

eth0      Link encap:Ethernet  HWaddr 08:00:27:00:8c:03  
          inet addr:10.0.2.9  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe00:8c03/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:12133 (12.1 KB)  TX bytes:8517 (8.5 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:9e:20:e8  
          inet addr:10.0.2.8  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe9e:20e8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10294 (10.2 KB)  TX bytes:8798 (8.7 KB)

wyniki ifconfig na Xubutracentu2

eth0      Link encap:Ethernet  HWaddr 08:00:27:00:8c:03  
          inet addr:10.0.2.9  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe00:8c03/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:12133 (12.1 KB)  TX bytes:8517 (8.5 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:9e:20:e8  
          inet addr:10.0.2.8  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe9e:20e8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10294 (10.2 KB)  TX bytes:8798 (8.7 KB)

Ping między tymi 4 adresami IP działa dobrze,
ale nie mogę uzyskać dostępu do Internetu na żadnej z tych maszyn wirtualnych.
Jeśli natomiast zmienię „NAT Network” na „NAT”, mogę uzyskać dostęp do sieci, ale wygląda na to, że stał się częścią innej sieci wirtualnej i nie mogę pingować je od siebie
Czy ktoś może mi pomóc w zidentyfikowaniu i naprawieniu problemu

Czy ktoś może również wyjaśnić, jaka jest różnica między NAT a NAT Network


Ten sam problem ... Czy ktoś może pomóc?
monitor35

Niedawno napotkałem ten problem, używając wirtualnego boxa 5.0.40 z domyślnego repozytorium ubuntu. Aby obejść ten problem, skonfigurowałem każdą maszynę wirtualną z dwoma interfejsami. Jeden z wewnętrzną siecią NatNetwork, a drugi w trybie mostu. W systemie operacyjnym gościa (ubuntu 16.04) musisz dostosować / etc / network / interfaces, aby drugi interfejs pojawił się w gościu. Dzięki temu każda maszyna wirtualna mogła znajdować się w wewnętrznym NAT i mieć jednocześnie dostęp do Internetu.
JulioHM,

Odpowiedzi:


7

Dlaczego nie działa?

W 16.04 (i prawdopodobnie 14.04) Jak NAT Network funkcji głównego wersji zapakowanej w VirtualBox (5.0.36) jest na podsłuchu .

Sprawdź to!

Możesz to sprawdzić samodzielnie: jeśli ls /usr/lib/virtualbox/VBoxNetNATplik wykonywalny jest obecny, możesz mieć inny problem.

Napraw to!

Ten błąd został naprawiony w nowszych wersjach. Więc powinieneś zainstalować nową wersję:

Usuń starą wersję

Na przykład, jeśli zainstalowałeś, aptmożesz uruchomić:

sudo apt remove virtualbox --auto-remove

Zainstaluj nową wersję

Poprawka jest dostępna dla nowszych wersji (Ubuntu yakkety +). W przypadku starszych wersji:

  • Odwiedź virtualbox.org i pobierz najnowszą wersję ręcznie
  • LUB
  • Użyj następującego skryptu:

    # add the official repository
    wget -q -O - https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo apt-key add -
    echo deb http://download.virtualbox.org/virtualbox/debian `lsb_release -cs` non-free contrib | sudo tee /etc/apt/sources.list.d/virtualbox.org.list
    # install the newer version
    sudo apt install virtualbox-5.1
    

1
Jeśli masz zainstalowaną poprzednią wersję Virtualbox, upewnij się, że odinstalowałeś również virtualbox-dkmstę poprawkę, aby działała. W przeciwnym razie możesz nadal utknąć bez internetu
Barak Itkin

7

Natknąłem się na to przy użyciu VirtualBox 5.0.40 z domyślnego repozytorium apt. Aby obejść ten problem, skonfigurowałem każdą maszynę wirtualną do korzystania z dwóch interfejsów sieciowych.

  • Adapter 1: Bridge Addapter (do twojej prawdziwej nici)
  • Adapter 2: Sieć NAT (do wyboru)

W systemie operacyjnym guets (Ubuntu 16.04) konieczne będzie dostosowanie /etc/network/interfaces, aby pojawił się drugi interfejs. W moim przypadku potrzebowałem maszyn wirtualnych do używania statycznych adresów IP w sieci NAT, więc to właśnie otrzymałem.

## Bridge to Internet
auto enp0s3
iface enp0s3 inet dhcp

## NAT Network among VMs
## Static is optional
## DHCP if you don't need it
auto enp0s8
iface enp0s8 inet static
  address 10.10.11.100
  netmask 255.255.255.0

To oczywiście zakłada, że ​​moja sieć NAT korzysta z podsieci 10.10.11.0/24. Dostosuj liczby do swojego scenariusza lub po prostu pozostaw go do dhcp, jak chcesz.

UWAGA: Jedną ważną rzeczą, na którą należy zwrócić uwagę w konfiguracji statycznej, jest to, że dla tego konkretnego scenariusza NIE MOŻNA przypisać jej domyślnej bramy. Podanie enp0s8wartości domyślnej (np. 10.10.11.1) spowoduje, że system operacyjny utworzy trasę do tej bramy, a ta trasa może również zepsuć dostęp do Internetu. Powinieneś to zrobić tylko wtedy, gdy ten konkretny interfejs wymaga tras do innych sieci, oprócz skonfigurowanej dla niego.

Aby znaleźć nazwy interfejsów przypisane przez Ubuntu dla twojego środowiska, możesz dmesg | grep eth.

wprowadź opis zdjęcia tutaj


Mój działał lepiej, gdy użyłem „dhcp” zarówno dla eth0, jak i eth1. Po prostu automatycznie przypisuje 10.0.2.15 do NAT, a mój publiczny internet eth1 nie ma adresu IP, ale mogę pingować internet z maszyny wirtualnej!
Milean,

6

Według instrukcji VirtualBox są to możliwości sieciowe dla twoich maszyn wirtualnych:

  • NAT: sieć wewnętrzna między maszyną wirtualną a hostem. Poza tym możesz uzyskać dostęp do Internetu. Dwie lub więcej maszyn wirtualnych w trybie NAT nie ma między nimi łączności, tylko z hostem i Internetem.

  • Wewnętrzne: wszystkie maszyny wirtualne z tą konfiguracją będą miały łączność między nimi, ale nie z hostem ani Internetem.

  • Tylko host: przy tej konfiguracji zostanie utworzona sieć wirtualna między hostem a wszystkimi maszynami wirtualnymi, ale nie będziesz mieć dostępu do Internetu.

  • Sieć NAT: Możesz dotrzeć do wszystkich maszyn wirtualnych w tej samej wstępnie zdefiniowanej sieci NAT i hoście, ale nie będziesz mógł połączyć się z Internetem.

  • Bridged: Twoja maszyna wirtualna będzie w tej samej sieci, co twój host, tak jakby był innym komputerem / serwerem w tej sieci, a zatem będzie miał dostęp do Internetu, jeśli twój host ma.

  • Ogólne: rzadko używana zaawansowana i bardziej szczegółowa konfiguracja.

Jeśli więc chcesz utworzyć sieć wewnętrzną z łącznością z hostem, wybierz NAT Network, ale zauważ, że nie będziesz mieć dostępu do Internetu. NAT jest ustawiany tylko wtedy, gdy chcesz uzyskać dostęp do Internetu z maszyny wirtualnej i nic więcej.

Jednak żadne z tych ustawień nie jest odpowiednie, jeśli chcesz mieć łączność między maszynami wirtualnymi i Internetem. O ile mi wiadomo, jedynym wyborem jest skonfigurowanie obu maszyn wirtualnych w trybie zmostkowanym, aby były to „różne” komputery w sieci hosta i będzie można je pingować wszystkie oraz Internet z dowolnego z nich.

Z drugiej strony wydaje się, że sklonowałeś jedną maszynę wirtualną od drugiej, ponieważ oba komputery mają ten sam adres MAC ( HWaddr w informacji o poleceniu ifconfig), pamiętaj, że powinieneś zaznaczyć pole wyboru z napisem „ Zainicjuj adres MAC wszystkich kart sieciowych „podczas klonowania. Dwa urządzenia z tym samym adresem MAC zawsze powodują problemy.

Nie jestem ekspertem w VirtualBox, więc może inni użytkownicy mogą powiedzieć ci inne możliwe konfiguracje, aby uzyskać to, czego chcesz. Mam nadzieję, że te informacje były przydatne.

Aby uzyskać więcej informacji można przeczytać to .


3
Nie jest prawdą, że NAT Network uniemożliwi twoim gościom łączenie się z Internetem. Mogę połączyć się z Internetem od gości VM w sieci NAT. Zgodnie z ostatnim komentarzem na forums.virtualbox.org/viewtopic.php?f=3&t=69504 „Tryb NAT oznacza, że ​​każda maszyna wirtualna jest izolowana za własnym routerem ... Sieć NAT jest taka sama jak NAT, z tą różnicą, że można mieć kilka maszyn wirtualnych podłączony do tego samego routera wewnętrznego. ”
eebbesen

2

To może być błąd w VirtualBox. Doświadczyłem tego samego (Ubuntu 16.04.2 LTS, VirtualBox 5.0.32_Ubuntu r112930): Skonfiguruj sieć NAT, skonfigurowaną dla dwóch maszyn wirtualnych Ubuntu. Każda VM może pingować / SSH na drugą, a poprzez przekierowanie portów mogłem SSH z hosta na każdą VM. Ale brak dostępu do Internetu z poziomu maszyn wirtualnych. To samo kolega wypróbował to samo z hostem Windows, VirtualBox (nieznana wersja) i tymi samymi maszynami wirtualnymi, i zadziałało.

Aby obejść ten problem, skonfigurowałem drugą kartę sieciową dla każdej maszyny wirtualnej: pierwsza używa NAT do uzyskania dostępu do Internetu, druga używa „NAT Network” do uzyskania dostępu do innych gości. Musiałem skonfigurować przekierowanie portów SSH na pierwszej karcie (NAT) i skonfigurować inny port SSH na jednej maszynie wirtualnej (tj. 2222 -> 22 na VM1, 2223 -> 23 na VM2).

Na podstawie dokumentacji zarówno NAT, jak i NAT Network powinny mieć dostęp do Internetu. Różnica polega na tym, że w pierwszym segregowano połączenia hosta ↔ gości, więc goście nie mają dostępu do siebie, tylko host. Ten ostatni łączy wszystkich gości w jedną sieć (i zapewnia usługi takie jak DHCP), aby mogli się nawzajem uzyskiwać dostęp.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.