In VirtualBox, come posso configurare macchine virtuali host-only in grado di accedere a Internet?

86

Nella configurazione di macchine virtuali con VirtualBox, spesso desidero 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 dalla rete alla rete (ad esempio da casa a ufficio a coffeeshop) senza preoccuparmi di proteggere o riconfigurare il vm

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

  • NAT
    Richiede il port forwarding se vuoi connetterti al vm dall'host.

  • Host-only
    Il vm non può accedere a Internet, a meno che l'host non sia un router.


  • con ponte Espone il vm alla rete; non portatile.

posta Christian Long 11.05.2013 - 08:00

6 risposte

103

Posso ottenere l'installazione che desidero configurando due adattatori sul vm.

VirtualBox 4.2.12
Guest Ubuntu 12.04

In VirtualBox & gt; Preferenze & gt; Rete, configura una rete solo host.

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

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

Adattatore 1
solo host, vboxnet0

adapter2
NAT

Avvia la macchina virtuale e accedi tramite la console VirtualBox fornisce.

Esegui questo per vedere i tuoi adattatori:

ls /sys/class/net

Nel mio caso gli adattatori sono stati nominati 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

Tieni presente che eth1 non ha un gateway predefinito specificato. eth2 otterrà un gateway predefinito da dhcp.

Aggiornamento marzo 2018

Vedi questa risposta da @ Hugo14453 per una versione aggiornata che funzioni con Ubuntu 17.10 e successivi.

    
risposta data Christian Long 11.05.2013 - 08:00
15

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 della rete VirtualBox ho lasciato il DHCP controllato.

Dopo il riavvio della VM, tutto ha funzionato bene.

    
risposta data Alan Camillo 09.12.2013 - 17:02
12

C'è un altro modo semplice per non creare un nuovo adattatore NAT

  1. Sul computer host, si prega di aggiungere le seguenti regole di 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. Dovrai anche abilitare l'IP forwarding sull'host inviando il seguente comando:

    sudo sysctl -w net.ipv4.ip_forward=1
    
risposta data Long Bui 03.08.2015 - 05:33
7

La configurazione di rete è cambiata in Ubuntu 17.10.1. Adesso usi la configurazione di netplan.

Ho seguito questa guida qui

Come migrazione della risposta di Christian, fai quanto segue:

Crea un nuovo file di configurazione in / etc / netplan per conservare 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 enp0s3 è il nome dell'adattatore solo host.

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

Quindi esegui i seguenti due comandi:

sudo netplan generate
sudo netplan apply

NAT dovrebbe funzionare senza configurazione, eseguire ifconfig per 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
    
risposta data Hugo 09.03.2018 - 19:09
2

Ho appena aggiunto 2 adattatori:

Adattatore 1 solo host, vboxnet0

adapter2 NAT

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

    
risposta data Guillermo Gonzalez 25.02.2014 - 01:52
1

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 questo modo - i miei PC virtuali di Internet solo host potevano connettersi a Internet!

Ho fatto una guida rapida di 3 minuti qui - per chiunque desideri come funziona! link

    
risposta data B0zmeister 10.08.2013 - 15:57

Leggi altre domande sui tag