No VirtualBox, como configuro máquinas virtuais somente host que podem acessar a Internet?

88

Na configuração de máquinas virtuais com o VirtualBox, geralmente desejo as seguintes características

  • vm tem um ip estático
  • o host pode acessar vm sem encaminhamento de porta
  • vm pode acessar a internet
  • Eu posso mover meu laptop da rede para a rede (por exemplo, de casa para o escritório para o coffeeshop) sem me preocupar em proteger ou reconfigurar a vm

Nenhum dos métodos de conexão de rede do VirtualBox implementa esses requisitos por conta própria.

  • NAT
    Requer o encaminhamento de porta se você quiser se conectar ao vm do host.

  • Somente host | A vm não pode acessar a internet, a menos que o host seja um roteador.

  • Bridged
    Expõe o vm à rede; não é portátil.

por Christian Long 11.05.2013 / 08:00

6 respostas

104

Eu posso obter a configuração que quero configurando dois adaptadores na vm.

VirtualBox 4.2.12
Ubuntu 12.04 convidado

No VirtualBox > Preferências > Rede, configure uma rede somente host.

O meu é chamado vboxnet0, é configurado manualmente:
ip 192.168.56.1
netmask 255.255.255.0
não dhcp

Em seguida, nas configurações de rede da máquina virtual, configure dois adaptadores:

Adaptador 1
somente host, vboxnet0

Adapter2
NAT

Inicialize a máquina virtual e efetue login pelo console fornecido pelo VirtualBox.

Execute isto para ver seus adaptadores:

ls /sys/class/net

No meu caso, os adaptadores foram denominados eth1 e eth2 (e lo, a interface de loopback).

Em seguida, edite sua configuração de rede.

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

Observe que eth1 não possui um gateway padrão especificado. eth2 receberá um gateway padrão do dhcp.

Atualização de março de 2018

Veja esta resposta de @ Hugo14453 para uma versão atualizada que funciona com o Ubuntu 17.10 e mais recente.

    
por Christian Long 11.05.2013 / 08:00
16

Eu poderia resolver meu problema com uma mistura da solução Christian Long. Eu adicionei 2 adaptadores:

Adaptador 1 - NAT

Adaptador 2 - somente host, vboxnet0

A única diferença estava no arquivo de interfaces da 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

Na configuração do VirtualBox Network, deixei o DHCP marcado.

Após a reinicialização da VM, tudo funcionou bem.

    
por Alan Camillo 09.12.2013 / 17:02
14

Existe outra maneira simples de não precisarmos criar um novo adaptador NAT

  1. Na máquina host, adicione as seguintes regras do iptables. Isso encaminhará pacotes pelo host e pela 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. Você também precisará ativar o encaminhamento de IP no host, emitindo o seguinte comando:

    sudo sysctl -w net.ipv4.ip_forward=1
    
por Long Bui 03.08.2015 / 05:33
8

A configuração da rede foi alterada no Ubuntu 17.10.1. Você agora usa a configuração do netplan.

Eu segui este guia aqui

Como uma migração da resposta de Christian, faça o seguinte:

Crie um novo arquivo de configuração dentro de / etc / netplan para manter sua configuração de adaptador somente de host.

por exemplo, sudo nano /etc/netplan/02-netcfg.yaml

Digite o seguinte para configurar um IP estático de 192.168.56.12, em que enp0s3 é o nome do seu adaptador somente host.

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

Em seguida, execute os dois comandos a seguir:

sudo netplan generate
sudo netplan apply

O NAT deve funcionar sem configuração, execute ifconfig para ver o resultado:

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
    
por Hugo 09.03.2018 / 19:09
2

Acabei de adicionar 2 adaptadores:

Adaptador 1 somente host, vboxnet0

Adapter2 NAT

E funciona perfeito, eu consigo acessar a máquina virtual do host, e tenho internet na VM.

    
por Guillermo Gonzalez 25.02.2014 / 01:52
1

Sim, eu tive esse problema, foi uma dor total! Mas eu resolvi isso simplesmente instalando o servidor Squid Cache Proxy no meu PC físico, e dessa forma - meus PCs virtuais de internet somente para host podiam se conectar à internet!

Eu fiz um rápido guia de 3 minutos aqui - para quem quiser, como funciona! link

    
por B0zmeister 10.08.2013 / 15:57