Come configurare la rete NAT e solo host con indirizzo IP statico in VirtualBox


22

Sto cercando di impostare un set di ospiti in VirtualBox, in modo tale che ciascuno di essi possa accedere a Internet, nonché essere visibile l'uno all'altro e all'host. Voglio anche che gli ospiti abbiano indirizzi IP statici.

Ecco la procedura che ho seguito finora:

  1. Disattiva la funzione Server DHCP della rete solo host da utilizzare in questa configurazione
  2. Modificare l'indirizzo IP assegnato all'host su 192.168.56.254
  3. Creare un computer guest con 2 schede di interfaccia di rete (NIC)
  4. Configurare la 1a NIC per utilizzare NAT
  5. Configurare la 2a scheda di rete per l'utilizzo della rete solo hot
  6. Installa il sistema operativo (Ubuntu Server 13.10) su ciascuno di essi
  7. Aggiorna il sistema operativo
  8. Configurare la rete come segue modificando / etc / network / interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
gateway 192.168.56.254
dns-search cloudspace.local
dns-nameservers 8.8.8.8 8.8.4.4
  1. Salva il file
  2. Reboot

Quando il guest si riavvia, la rete solo host funziona correttamente. Le coppie di macchine host / guest e guest / guest possono eseguire il ping a vicenda, tuttavia Internet non funziona perché non funziona apt-get.

Se poi invio un service networking restartcomando, la rete inizia a funzionare come dovrebbe.

Che cosa sto facendo di sbagliato?

Ho provato a cambiare l'ordine in cui le schede di rete vengono visualizzate nel /etc/network/interfacesfile. Ho anche scambiato la rete NAT / solo host tra le 2 schede di rete. Niente ha funzionato.

L'host è Windows 8.1 e il guest è Ubuntu Server 13.10. Ho provato lo stesso su Mac OS X con risultati simili.

Gradirei molto qualsiasi aiuto in questo.

Aggiornare:

Ho incluso l'output dei seguenti comandi di seguito, per aiutare nella diagnostica:

  • cat / etc / network / interfaces
  • ifconfig -a
  • rotta -n
$ cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
gateway 192.168.56.254

$ ifconfig -a
eth0      Link encap:Ethernet  HWaddr 08:00:27:75:47:64
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe75:4764/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1180 (1.1 KB)  TX bytes:1332 (1.3 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:93:98:d8
          inet addr:192.168.56.1  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe93:98d8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:140 errors:0 dropped:0 overruns:0 frame:0
          TX packets:225 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:14418 (14.4 KB)  TX bytes:27378 (27.3 KB)

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:65536  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:1184 (1.1 KB)  TX bytes:1184 (1.1 KB)

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.56.254  0.0.0.0         UG    0      0        0 eth1
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1

Aggiornamento 2:

Dopo l'esecuzione sudo service networking restart, l'output da route -ndiventa:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.2.2        0.0.0.0         UG    0      0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1

Quindi, come posso garantire questa configurazione all'avvio?

Risposte:


16

Sarebbe più facile risolvere il tuo problema se hai pubblicato i risultati che ottieni quando provi a eseguire il ping di un indirizzo esterno (come i server DNS di Google che stai utilizzando), le impostazioni di rete correnti e la tabella di routing.

/sbin/ifconfig -a
/sbin/route -n

Senza saperne di più, questo è un po 'un colpo nel buio, ma la mia ipotesi è che a) non stai ricevendo un indirizzo DHCP su eth0, oppure b) le tue impostazioni del gateway per eth1 stanno rovinando la route predefinita assegnata da DHCP.

Se non si ottiene un indirizzo DHCP per eth0, probabilmente è una configurazione errata in VirtualBox (come riportare indietro gli adattatori).

Ad ogni modo, non hai bisogno di un gateway o di impostazioni DNS assegnate in modo specifico per eth1 poiché verranno assegnate da DHCP su eth0, quindi rimuoverei le linee gateway, dns-search e dns-nameservers dalla tua configurazione. Le macchine virtuali saranno comunque in grado di comunicare senza un'impostazione gateway se si trovano sulla stessa rete e VirtualBox è configurato correttamente.

Modifica: per assicurarti di non avere un gateway su eth1 dopo un riavvio, rimuovi le linee dal tuo blocco eth1 in modo che assomigli a questo:

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0

Al termine, non avrai linee gateway nel file delle interfacce.


Ho aggiunto la diagnostica come mi hai suggerito. Penso che la risposta corretta sia (b), vale a dire che le impostazioni del gateway per eth1stanno facendo confusione con il percorso predefinito assegnato da DHCP. c'è una soluzione a questo?
Umar Farooq Khawaja,

1
Ho modificato la mia risposta per mostrare come dovrebbe apparire il tuo blocco eth1 nel file delle interfacce. Non hai bisogno della rete o delle linee di trasmissione e non dovresti avere la linea del gateway. Rimuovi quei tre.
jkt123,

3

Ho trovato questa soluzione, che è la stessa della risposta di @ jkt123 e della domanda di @ Umar, ma più breve. Apprezzerei il feedback al riguardo!

In virtualbox, abilitare le reti NAT e solo host . (A proposito: funziona sul mio host Win7. Non so come farlo nell'host Linux).

Sull'host: trova l'IP dell'interfaccia "solo host"

ipconfig /all     # for windows host
ifconfig -a       # for linux host

Nel guest, modifica / etc / network / interfaces . Il trucco stava invertendo l'ordine eth1 (solo host) arriva PRIMA di eth0 (internet / dhcp). Non so perché.

auto lo                        # keep the original loopback settings
iface lo ...                   # yeah, i don't remember, just keep it.

# ----> Ok, this is my addition <-----
auto eth1                      
allow-hotplug eth1             # i think hotplug it helps. not sure.
iface eth1 inet static
address 192.168.56.100         # arbitrary IP address between 2 and 254

auto eth0                      # This is the original content
iface eth0 inet dhcp           #  of this file, now at the end.

riavvio.


0

Prima di tutto, ho abilitato entrambe le reti NAT con DHCP e host solo la rete con static ip add 192.168.40.41.

Quindi, ho seguito con questo comando:

nano cat /etc/network/interfaces

Ho ottenuto questo risultato:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.41.4
netmask 255.255.255.0

E prima di riavviare, ho digitato il seguente comando:

sudo service networking restart

Quindi riavviato.

Dopo aver caricato su VM VirtualBox, entrambe le reti funzionano. Posso collegarmi a Internet e posso collegarmi 192.168.40.41tramite un browser web.

Spero che questo sia utile per ottenere l' nanoeditor:

sudo apt-get update
sudo apt-get install nano

Quindi digita il nanoterminale per avviarlo.


0

Sono disponibili più gateway predefiniti assegnati a NIC diverse. In generale, "Predefinito" indica un'opzione preselezionata. In questo caso, se un gateway predefinito specificato è definito per entrambe le schede NIC, non sarebbe un'opzione preselezionata. Inoltre, ciò comporterebbe anche problemi di comunicazione come il routing asincrono. Non sono sicuro di come la metrica di entrambe le interfacce sia impostata su 0, ma potrebbe essere dovuto al fatto che entrambe le schede di rete sono dotate di gateway. Il resoconto di Microsoft su questo argomento si trova qui e la funzione Metrica presenta una serie di fattori che forniscono la modalità di determinazione delle priorità. (Link: https://support.microsoft.com/en-us/help/299540/an-explanation-of-the-automatic-metric-feature-for-ipv4-routes )

In accordo con @ jkt123 nella risposta fornita, è necessario assegnare solo 1 gateway predefinito.

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.