Nessun accesso a Internet su VM in rete NAT in VirtualBox


12

Ho creato una rete NAT in VirtulBox 5 in Ubuntu 14.04 LTS con le seguenti impostazioni

Natework Nome: NatNetwrok1
Network CIDR: 10.0.2.0/24
Supporto DHCP: abilitato
Supporto IPv6: disabilitato
senza alcun port forwarding

Inoltre ho due VM (entrambi i cloni di Xubuntu), ho impostato le impostazioni di rete per abilitare due NIC su ciascuna VM con le seguenti impostazioni in tutti e quattro gli adattatori:

Allegato a: "Rete NAT"
Nome: "NatNetwrok1"

Quando eseguo entrambe le macchine virtuali, vedo le seguenti impostazioni nell'esecuzione del comando ifconfig

ifconfig risulta su 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)

ifconfig risulta su 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)

Il ping tra questi 4 IP funziona bene
Ma non riesco ad accedere a Internet su nessuna di queste macchine virtuali
Mentre se cambio "Rete NAT" in "NAT" posso accedere alla rete ma sembra diventare parte di un'altra rete virtuale e non posso fare il ping l'uno dall'altro
Qualcuno può aiutarmi a identificare e risolvere il problema

Qualcuno può anche spiegare qual è la differenza tra NAT e NAT Network


Stesso problema ... Qualcuno potrebbe aiutare?
monitor35

Di recente ho riscontrato questo problema utilizzando la scatola virtuale 5.0.40 dal repository ubuntu predefinito. Per evitarlo, ho configurato ogni VM con due interfacce. Uno con un NatNetwork interno e l'altro usando la modalità bridge. Sotto il SO guest (ubuntu 16.04), dovrai modificare / etc / network / interfaces affinché la seconda interfaccia venga mostrata nel guest. Ciò ha consentito a ciascuna VM di trovarsi nel NAT interno e di avere accesso a Internet contemporaneamente.
JulioHM,

Risposte:


7

Perché non funziona?

Nel 16.04 (e probabilmente nel 14.04) la funzionalità di rete NAT della versione principale di VirtualBox (5.0.36) è stata corretta .

Controllalo!

Puoi verificarlo tu stesso: se l' ls /usr/lib/virtualbox/VBoxNetNATeseguibile è presente, potresti avere qualche altro tipo di problema.

Aggiustalo!

Questo errore è stato corretto nelle versioni più recenti. Quindi dovresti installare una nuova versione:

Rimuovi la vecchia versione

Ad esempio, se installato utilizzando aptè possibile eseguire:

sudo apt remove virtualbox --auto-remove

Installa nuova versione

La correzione è disponibile per le versioni più recenti (Ubuntu yakkety +). Per le versioni precedenti:

  • Visita virtualbox.org e scarica manualmente la versione più recente
  • O
  • Usa il seguente script:

    # 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
Se hai installato una versione precedente di virtualbox, assicurati di disinstallare anche virtualbox-dkmsper far funzionare questa correzione. Altrimenti, potresti essere ancora bloccato senza internet
Barak Itkin

7

Mi sono imbattuto in questo usando VirtualBox 5.0.40 dal repository apt predefinito. Per evitarlo, ho configurato ogni VM per utilizzare due interfacce di rete.

  • Adapter 1: Bridge Addapter (al tuo vero nic)
  • Adattatore 2: rete NAT (a scelta)

Sotto il sistema operativo guets (Ubuntu 16.04), dovrai modificare /etc/network/interfacesper far apparire la seconda interfaccia. Nel mio caso, avevo bisogno di macchine virtuali per usare IP statici all'interno della rete NAT, quindi questo è quello che ho ottenuto.

## 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

Questo, ovviamente, presuppone che la mia rete NAT utilizzi la sottorete 10.10.11.0/24. Adatta i numeri al tuo scenario o lascialo a dhcp, come desideri.

NOTA: Una cosa importante da notare nella configurazione statica è che, per questo particolare scenario, NON PUOI assegnargli un gateway predefinito. Se si imposta enp0s8un valore predefinito (come 10.10.11.1), il sistema operativo creerà una route verso questo gateway e tale route potrebbe anche rovinare l'accesso a Internet. Dovresti farlo solo quando questa particolare interfaccia necessita di rotte verso altre reti, a parte quella configurata su di essa.

Per scoprire i nomi delle interfacce assegnati da Ubuntu per il tuo ambiente, puoi dmesg | grep eth.

inserisci qui la descrizione dell'immagine


Il mio ha funzionato meglio quando ho usato 'dhcp' sia per eth0 che per eth1. Ha appena assegnato automaticamente 10.0.2.15 a NAT e il mio eth1 pubblico Internet non ha un IP, ma posso eseguire il ping di Internet dalla VM!
Milean,

6

Secondo il manuale di VirtualBox, queste sono le possibilità di rete per le macchine virtuali:

  • NAT: rete interna tra VM e host. Inoltre puoi accedere a Internet. Due o più macchine virtuali in modalità NAT non hanno connettività tra loro, solo con l'host e Internet.

  • Interno: tutte le VM con questa configurazione avranno connettività tra loro ma non con l'host né Internet.

  • Solo host: verrà creata una rete virtuale tra l'host e tutte le macchine virtuali con questa configurazione, ma non si avrà accesso a Internet.

  • Rete NAT: è possibile raggiungere tutte le macchine virtuali nella stessa rete NAT e host predefiniti, ma non sarà possibile connettersi a Internet.

  • bridged: VM sarà nella stessa rete dell'host come se fosse un altro computer / server in questa rete e, quindi, avrà accesso a Internet se l'host ha.

  • Generico: configurazione avanzata e più specifica utilizzata raramente.

Pertanto, se si desidera creare una rete interna con connettività all'host, selezionare NAT Network, ma notare che non si avrà accesso a Internet. NAT è impostato solo quando si desidera solo l'accesso a Internet dalla VM e nient'altro.

Tuttavia, nessuna di queste impostazioni è adatta a te se desideri avere una connettività tra VM e Internet. Per quanto ne so, la tua unica scelta è quella di configurare entrambe le VM in modalità bridge, in modo che siano computer "diversi" nella tua rete host e sarai in grado di eseguire il ping di tutti e Internet da qualsiasi di essi.

D'altra parte, sembra che tu abbia collegato una VM dall'altra perché entrambe le macchine hanno lo stesso indirizzo MAC ( HWaddr nelle informazioni sul comando ifconfig), tieni presente che dovresti selezionare la casella di controllo " Reinizializza l'indirizzo MAC di tutte le schede di rete "durante la clonazione. Due dispositivi con lo stesso indirizzo MAC creano sempre problemi.

Non sono un esperto di VirtualBox, quindi forse altri utenti possono dirti altre configurazioni possibili per ottenere ciò che desideri. Spero che queste informazioni siano utili.

Per maggiori informazioni puoi leggere questo .


3
Non è vero che NAT Network impedirà ai tuoi ospiti di connettersi a Internet. Posso connettermi a Internet dagli ospiti VM su una rete NAT. Per l'ultimo commento su forums.virtualbox.org/viewtopic.php?f=3&t=69504 , "La modalità NAT significa che ogni VM è isolata dietro il proprio router ... La rete NAT è uguale a NAT tranne per il fatto che puoi avere più VM collegato allo stesso router interno. "
eebbesen,

2

Questo potrebbe essere un bug in VirtualBox. Ho provato lo stesso (Ubuntu 16.04.2 LTS, VirtualBox 5.0.32_Ubuntu r112930): impostare una rete NAT, configurata per due macchine virtuali Ubuntu. Ogni VM poteva eseguire il ping / SSH nell'altra e tramite il port forwarding potevo SSH dall'host in ogni VM. Nessun accesso a Internet dall'interno delle macchine virtuali. Un collega ha provato lo stesso con un host Windows, VirtualBox (versione sconosciuta) e le stesse macchine virtuali, e ha funzionato.

Per ovviare al problema, ho configurato una seconda scheda di rete per ogni VM: la prima utilizza NAT per accedere a Internet, la seconda utilizza "Rete NAT" per accedere agli altri ospiti. Ho dovuto impostare il port forwarding SSH sulla prima scheda (NAT) e configurare una porta SSH diversa su una VM (ovvero 2222 -> 22 su VM1, 2223 -> 23 su VM2).

Sulla base della documentazione , sia NAT che NAT Network dovrebbero poter accedere a Internet. La differenza è che il primo ha segregato le connessioni host ↔ guest, quindi gli ospiti non possono accedervi, solo l'host. Quest'ultimo raggruppa tutti gli ospiti in un'unica rete (e fornisce servizi come DHCP), in modo che possano accedervi.

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.