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


98

Ao configurar máquinas virtuais com o VirtualBox, geralmente desejo as seguintes características

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

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

  • NAT
    Requer encaminhamento de porta se você deseja conectar-se à VM do host.

  • Somente host
    O vm não pode acessar a Internet, a menos que o host seja um roteador.

  • Ponte
    Expor o vm à rede; não é portátil.

Respostas:


110

Posso obter a configuração desejada configurando dois adaptadores na vm.


Convidado do VirtualBox 4.2.12 Ubuntu 12.04

Em 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
no dhcp

Configuração de rede do VirtualBox Configuração de rede do VirtualBox

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


Somente host do adaptador 1 , vboxnet0


NAT do Adapter2

Inicialize a máquina virtual e efetue login através do console fornecido pelo VirtualBox.

Execute isso para ver seus adaptadores:

ls /sys/class/net

No meu caso, os adaptadores foram nomeados eth1 e eth2 (e eis 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 eth1não há gateway padrão especificado. eth2obterá um gateway padrão do dhcp.


Atualização março de 2018

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


1
Atualização: o VirtualBox 4.3 introduziu um serviço NAT que parece evitar a necessidade de duas interfaces. 6.4 Serviço de tradução de endereços de rede
Christian Long

4
Isso me ajudou muito, eu uso o Virtualbox para desenvolvimento e, quando estou em casa, tudo funciona corretamente desde que eu tenho a configuração da rede conforme o meu gosto, o pesadelo começa quando eu me mudo para outra rede (família, empresas ... ), Preciso alterar os URLs dos sites, excluir alguns arquivos do sistema, reiniciar, não sei quantas vezes e a lista continua. Esta solução não se preocupa com a sua rede atual e é por isso que eu gosto ... Basta conectar o seu PC a qualquer rede e se concentrar no seu trabalho.
Nabil Kadimi

1
Obrigado. Não definir um endereço de gateway para a interface somente host resolveu meus problemas.
Florian

2
Perfeito. / etc / network / interfaces config foi a chave OBRIGADO !!!!
Byron Whitlock #

1
"Observe que o eth1 não possui um gateway padrão especificado. O eth2 obterá um gateway padrão do dhcp." <- ESTE COMENTÁRIO É A CHAVE.
Páginas Pere

16

Eu poderia resolver meu problema com uma mistura de soluções da 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 da Rede VirtualBox, deixei o DHCP marcado.

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


Isso funciona para mim, mas quero que as VMs tenham endereços IP estáticos. No momento em que faço isso, a Internet para de funcionar. Se eu configurar ambos com DHCP, ele funcionará bem. Como faço para que a interface somente host obtenha um IP estático?
Umar Farooq Khawaja

Apenas um que funcionou. Obrigado. +1
Jorge Campos

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 para a 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á habilitar o encaminhamento de IP no host emitindo o seguinte comando:

    sudo sysctl -w net.ipv4.ip_forward=1
    

Isso funciona apenas em um host Linux.
Derek Mahar

Precisamos do serviço "dnsmasq" em execução. No link unix.stackexchange.com/a/384187/61742 , temos informações completas sobre o que foi sugerido por @Danatela. Obrigado!
Eduardo Lucio

1
@EduardoLucio, por favor, dê créditos para Long Bui. Acabei de editar este post para torná-lo mais legível.
Danatela

@ Long Bui Obrigado por sua contribuição! Acima! Acima! Acima! Acima! Acima! Acima! = D
Eduardo Lucio

12

A configuração de rede mudou no Ubuntu 17.10.1. Agora você usa a configuração netplan.

Eu segui este guia aqui

Como 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 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 ifconfigpara 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

1
Obrigado! Adicionei uma seção de atualização à minha resposta antiga e vinculei a essa nova informação.
Christian Long

Eu segui sua solução, mas sinto falta do suporte nat para enp0s8. Eu adicionei manualmente enable dhcp4 para enp0s8 no netplan e finalmente obtive ambos enp0s3 e enp0s8. Espero que isso ajude alguém.
Dzmitry Prakapenka

3

Acabei de adicionar 2 adaptadores:

Somente host do adaptador 1, vboxnet0

NAT do Adapter2

E funciona perfeitamente, consigo acessar a máquina virtual do host e tenho internet na vm.


2

Sim, eu tive esse problema, foi uma dor total! Mas eu o resolvi instalando o servidor Squid Cache Proxy no meu PC físico e assim - meus PCs de caixa virtual da Internet somente para host podiam se conectar à Internet!

Fiz aqui um guia rápido de 3 minutos - para quem quiser saber como funciona! http://b0zmeister.wordpress.com/allowing-host-only-virtualbox-guest-to-connect-to-the-internet/


Isso funcionou muito bem para mim, obrigado por compartilhar. É de longe a maneira mais simples de fazer tudo funcionar.
laurent

Oi Laurent - sem problemas - feliz que ajudou! Conseguiu amar executando os PCs VirtualBox fora de uma rede diferente - mas - com conexão com a internet :)
B0zmeister

O link está morto agora. Considere mover as instruções aqui.
S3v3n 21/0318
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.