In VirtualBox, come posso configurare macchine virtuali solo host che possono accedere a Internet?


99

Nella configurazione di macchine virtuali con VirtualBox, desidero spesso le seguenti caratteristiche

  • vm ha un ip statico
  • l'host può accedere a VM senza port forwarding
  • VM può accedere a Internet
  • Posso spostare il mio laptop da una rete all'altra (ad es. Da casa all'ufficio al coffeeshop) senza preoccuparmi di proteggere o riconfigurare la VM

Nessuno dei metodi di connessione alla rete VirtualBox soddisfa questi requisiti da solo.

  • NAT
    Richiede il port forwarding se si desidera connettersi alla VM dall'host.

  • Solo host
    Il VM non può accedere a Internet, a meno che l'host non sia un router.

  • Bridged
    Espone il vm alla rete; non portatile.

Risposte:


110

Posso ottenere la configurazione desiderata impostando due adattatori sul VM.

VirtualBox 4.2.12
Ubuntu 12.04 guest

In VirtualBox> Preferenze> Rete, imposta una rete solo host.

Il mio si chiama vboxnet0, è configurato manualmente:
ip 192.168.56.1
netmask 255.255.255.0
no dhcp

Configurazione della rete VirtualBox Configurazione della rete VirtualBox

Quindi, nelle impostazioni di rete per la macchina virtuale, configurare due adattatori:


Solo host adattatore 1 , vboxnet0

Adapter2
NAT

Avviare la macchina virtuale e accedere tramite la console fornita da VirtualBox.

Esegui questo per vedere i tuoi adattatori:

ls /sys/class/net

Nel mio caso gli adattatori sono stati chiamati eth1 ed eth2 (e lo, l'interfaccia di loopback).

Quindi, modifica la configurazione di rete.

sudoedit /etc/network/interfaces


# The loopback network interface
auto lo
iface lo inet loopback

# Host-only interface
auto eth1
iface eth1 inet static
        address         192.168.56.20
        netmask         255.255.255.0
        network         192.168.56.0
        broadcast       192.168.56.255

# NAT interface
auto eth2
iface eth2 inet dhcp

Si noti che eth1non è stato specificato alcun gateway predefinito. eth2otterrà un gateway predefinito da dhcp.


Aggiornamento marzo 2018

Vedi questa risposta da @ Hugo14453 per una versione aggiornata che funziona con Ubuntu 17.10 e versioni successive.


1
Aggiornamento: VirtualBox 4.3 ha introdotto un servizio NAT che potrebbe ovviare alla necessità di due interfacce. 6.4. Servizio di traduzione di indirizzi di rete
Christian Long,

4
Questo mi ha aiutato molto, utilizzo Virtualbox per lo sviluppo e quando sono a casa mia, tutto funziona correttamente poiché ho impostato la rete secondo i miei gusti, l'incubo inizia quando mi sposto su un'altra rete (famiglia, aziende ... ), Devo modificare gli URL dei siti Web, eliminare alcuni file di sistema, riavviare Non so quante volte e l'elenco potrebbe continuare. Questa soluzione non si preoccupa della tua rete attuale ed è per questo che mi piace ... Basta collegare il tuo PC a qualsiasi rete e concentrarti sul tuo lavoro.
Nabil Kadimi,

1
Grazie. Non definire un indirizzo gateway per l'interfaccia solo host ha risolto i miei problemi.
Florian,

2
Perfetto. / etc / network / interfaces config era la chiave GRAZIE !!!!
Byron Whitlock,

1
"Nota che eth1 non ha un gateway predefinito specificato. Eth2 otterrà un gateway predefinito da dhcp." <- QUESTO COMMENTO È LA CHIAVE.
Pere Pages,

16

Potrei risolvere il mio problema con un mix di soluzione Christian Long. Ho aggiunto 2 adattatori:

Adattatore 1 - NAT

Adattatore 2 - solo host, vboxnet0

L'unica differenza era nel file delle interfacce della VM:

sudoedit /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback
# NAT
auto eth0
iface eth0 inet dhcp
# Host only
auto eth1
iface eth1 inet dhcp

Nella configurazione di rete VirtualBox ho lasciato DHCP selezionato.

Dopo un riavvio della VM tutto ha funzionato bene.


Questo funziona per me, ma voglio che le macchine virtuali abbiano indirizzi IP statici. Nel momento in cui lo faccio, Internet smette di funzionare. Se ho impostato entrambi con DHCP, funziona bene. Come faccio a far sì che l'interfaccia solo host ottenga un IP statico?
Umar Farooq Khawaja,

Solo uno che ha funzionato. Grazie. +1
Jorge Campos,

14

Esiste un altro modo semplice per cui non è necessario creare un nuovo adattatore NAT

  1. Sul computer host, aggiungi le seguenti regole iptables. Questo inoltrerà i pacchetti attraverso l'host e su Internet:

    sudo iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT 
    
    sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    
    sudo iptables -A POSTROUTING -t nat -j MASQUERADE
    
  2. Sarà inoltre necessario abilitare l'inoltro IP sull'host emettendo il comando seguente:

    sudo sysctl -w net.ipv4.ip_forward=1
    

Funziona solo su un host Linux.
Derek Mahar,

Abbiamo bisogno del servizio "dnsmasq" in esecuzione. Nel link unix.stackexchange.com/a/384187/61742 abbiamo informazioni complete su ciò che è stato suggerito da @Danatela. Grazie!
Eduardo Lucio,

1
@EduardoLucio, per favore, dai dei crediti a Long Bui. Ho appena modificato questo post per renderlo più leggibile.
Danatela,

@Long Bui Grazie per il tuo contributo! Su! Su! Su! Su! Su! Su! = D
Eduardo Lucio,

12

La configurazione di rete è stata modificata in Ubuntu 17.10.1. Ora usi la configurazione di netplan.

Ho seguito questa guida qui

Come migrazione della risposta di Christian, procedi come segue:

Creare un nuovo file di configurazione all'interno di / etc / netplan per contenere la configurazione dell'adattatore solo host.

per esempio sudo nano /etc/netplan/02-netcfg.yaml

Immettere quanto segue per configurare un IP statico di 192.168.56.12 dove si enp0s3trova il nome dell'adattatore solo host.

network:
    version: 2
    renderer: networkd
    ethernets:
        enp0s3:
            addresses:
                - 192.168.56.12/24
            dhcp4: no

Quindi eseguire i due comandi seguenti:

sudo netplan generate
sudo netplan apply

NAT dovrebbe funzionare senza configurazione, eseguire ifconfigper vedere il risultato:

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.56.12  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::a00:27ff:fe06:6cdd  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:06:6c:dd  txqueuelen 1000  (Ethernet)
        RX packets 252  bytes 23076 (23.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 208  bytes 30015 (30.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.3.15  netmask 255.255.255.0  broadcast 10.0.3.255
        inet6 fe80::a00:27ff:fe4d:a6b8  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:4d:a6:b8  txqueuelen 1000  (Ethernet)
        RX packets 95  bytes 94894 (94.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 85  bytes 7436 (7.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

1
Grazie! Ho aggiunto una sezione di aggiornamento alla mia vecchia risposta e collegato a queste nuove informazioni.
Christian Long

Ho seguito la tua soluzione, ma manca il supporto nat per enp0s8. Ho aggiunto manualmente abilita dhcp4 per enp0s8 in netplan e finalmente ottengo sia enp0s3 che enp0s8. Spero che questo possa aiutare qualcuno.
Dzmitry Prakapenka,

3

Ho appena aggiunto 2 adattatori:

Solo host adattatore 1, vboxnet0

Adapter2 NAT

E funziona perfettamente, posso accedere alla macchina virtuale dall'host e ho Internet su VM.


2

Sì, ho avuto questo problema, è stato un dolore totale! Ma l'ho risolto semplicemente installando il server Squid Cache Proxy sul mio PC fisico, e in quel modo - i miei PC virtualbox Internet solo host potevano connettersi a Internet!

Ho fatto una rapida guida di 3 minuti qui - per chiunque voglia fare come funziona! http://b0zmeister.wordpress.com/allowing-host-only-virtualbox-guest-to-connect-to-the-internet/


Per me ha funzionato alla grande, grazie per averlo condiviso. È di gran lunga il modo più semplice per far funzionare tutto.
laurent,

Ciao Laurent - nessun problema - felice che abbia aiutato! Devo adorare far funzionare i PC virtualbox da una rete diversa - ma - con la connessione a internet funzionante :)
B0zmeister

Il link è morto ora. Valuta di spostare qui le istruzioni.
s3v3n,
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.