quinta-feira, 29 de março de 2012

Modos de rede no VirtualBox

O VirtualBox (https://www.virtualbox.org/) é uma aplicação multi-plataforma de virtualização. Com ele, é possível executar múltiplos sistemas operacionais ao mesmo tempo em máquinas virtuais.

Cada máquina virtual poderá ter sua configuração específica de hardware, como se fossem computadores reais, e o suporte à rede é bastante refinado, com diversos modos de operação.

No mundo da virtualização existem alguns termos e alguns serão úteis para o entendimento deste artigo:

Host OS (Hospedeiro)
É o sistema operacional do computador físico onde o VirtualBox está instalado.

Guest OS (Convidado)
É o sistema operacional executado dentro de uma máquina virtual.

Máquina Virtual (VM)
É o ambiente especial que o VirtualBox cria para simular um hardware de computador.

Adicionais para Convidado
É um pacote especial de software fornecido pelo VirtualBox para ser instalado no sistema convidado.


Na seção de rede das configurações da máquina virtual, é possível determinar como o VirtualBox concede os adaptadores de rede e os modos de operação na VM. O VirtualBox é bastante flexível na virtualização da rede. Os modos de operação dos adaptadores virtuais são em consideração ao hardware de rede físico do hospedeiro.

Para cada adaptador de rede habilitado é possível especificar um dos seguintes modos de virtualização:


Não Conectado

Neste modo, o VirtualBox informa ao sistema convidado que a placa de rede está presente porém não há conexão, como se não houvesse um cabo de rede plugado. É um modo de simular uma retirada do cabo da placa de rede.


NAT (Network Address Translation)

É o modo padrão de rede no VirtualBox. Com este modo, o VirtualBox age como um roteador, mapeando o tráfego, mascarando os IPs e possibilitando a comunicação da VM com a rede externa. O sistema convidado recebe um endereço IP que não faz parte da rede externa, do servidor DHCP integrado ao VirtualBox, e portando, durante todo o tráfego, os endereços e portas são traduzidos. Cada máquina virtual terá um roteador particular e elas não farão parte de uma mesma rede, impossibilitando a comunicação entre elas.

Este modo é necessário quando não é possível a máquina virtual obter um endereço IP real da rede externa. Ou quando deseja tornar a VM invisível e inalcançável pela rede externa, pelo menos não diretamente.


Placa Em Modo Bridge

Neste modo, o VirtualBox usa um driver de dispositivo para interceptar e injetar dados no adaptador de rede físico, tornando-se um adaptador de rede por software. O sistema convidado, usando este adaptador de rede por software, consegue conectar-se diretamente na rede externa e assim receber um endereço IP válido na rede externa.

O sistema hospedeiro e também todas as máquinas da rede, na qual a máquina hospedeira pertence, enxergarão normalmente a VM pela rede como se a VM fosse uma máquina real.

É um modo geralmente utilizado em sistemas convidados que são servidores de rede. Este modo possui algumas limitações dependendo do sistema operacional hospedeiro.


Rede Interna

Este modo é utilizado para criar uma rede por software onde somente as máquinas virtuais selecionadas ficarão visíveis entre elas. Nenhuma máquina da rede externa, nem mesmo o próprio hospedeiro enxergará as VMs da rede interna. Desta forma, todo o tráfego ficará restrito à rede interna e completamente isolado e escondido da rede externa.

É um modo seguro de se fazer rede entre as VMs, pois será impossível capturar pacotes pela rede externa.


Placa De Rede Exclusiva De Hospedeiro

Neste modo, o VirtualBox monta uma rede contendo somente o hospedeiro e um conjunto de máquinas virtuais, sem a necessidade do adaptador de rede físico do hospedeiro. É um modo híbrido entre o modo bridge e o modo de rede interna, as VMs se enxergarão entre si e ao hospedeiro, como se estivessem conectadas a uma mesma rede física, porém, como a rede interna está conectada somente à interface virtual do hospedeiro, o acesso a rede externa não é possível.

O VirtualBox cria no sistema hospedeiro uma interface virtual de rede, semelhante a interface de loopback. Esta interface proporciona a conectividade entre as VMs e o sistema hospedeiro.


Driver Genérico

Este modo é raramente usado. Permite ao usuário selecionar um driver que pode ser incluído no VirtualBox, numa recompilação, ou fornecido por um pacote de extensão.

Possui submodos os quais permitem que máquinas virtuais, em hospedeiros distintos, fiquem conectadas numa mesma infraestrutura de rede. Em outras palavras, permite a conexão em rede de sistemas convidados que estão em diferentes sistemas hospedeiros.

Generalizando, é uma parte opcional do VirtualBox que só está incluída no código fonte. O pacote fornecido pela Oracle não inclui os drivers necessários.

12 comentários:

  1. Magnífica explicação!
    Cesar

    ResponderExcluir
  2. depois dessa explicação consegui finalmente criar uma rede entre as MV's. Também tava querendo colocar a VM's na rede externa, muito bom. curtir!

    ResponderExcluir
  3. Olá, muito bom os esclarecimentos, mas o que são as configurações de modo promíscuo no caso da opção bridge?

    ResponderExcluir
    Respostas
    1. Este artigo não abordou isso mas se quiser tem este outro que pode esclarecer o que é modo promíscuo: http://dan-scientia.blogspot.com.br/2011/09/tcpdump-copia-do-trafego-de-uma-rede.html

      Obrigado pela visita!

      Excluir
  4. Olá, Daniel estou com uma dúvida ao configurar o vagrant com o virtual box, apos eu configurar o vagrantinfo informando as portas
    config.vm.network :forwarded_port, guest: 80, host: 8080
    config.vm.network :forwarded_port, guest: 3306, host: 3333
    config.vm.network :public_network

    coloco o comando vagrant up , apos isso minha rede cai e trava nessa linha 'Waiting for VM to boot. This can take a few minutes' ,se pudêr me dar uma luz.

    obrigado.

    ResponderExcluir
    Respostas
    1. Olá Filipe,

      Desculpe, não tenho experiência com o Vagrant.

      Excluir
  5. Caro Daniel, sua explicação foi bastante informativa.
    Agora tenho uma pergunta!
    Eu estágio em um orgão do governo e temos vários controle no acesso.
    Instalei um VM utilizando o VIrtualBox rodando o OpenSUSE 12.3.
    Qual conexão eu teria que usar para ter acesso internet no VM, tendo em vista o usuário, senhas, proxs, entre outros da máquina física?

    Grato!!

    ResponderExcluir
    Respostas
    1. Olá Fábio,

      Use o modo NAT se quiser IPs mascarados ou Bridge se quiser IPs da sua rede local.

      Obrigado pela visita no blog!

      Excluir
  6. olá daniel, sei que dá para criar uma rede LAN no virtualbox, mais é possível criar uma MAN isolada internamente no ambiente virtual de trabalho com hosts, servidores, provedores etc,(imagino uma WAM, impossível :D ???,?) se possível, como se faz ?

    ResponderExcluir
  7. Grande explicação.
    Eu sempre tive algumas dúvidas sobre os modos do adaptador de rede, mas com essa explicação tenho certeza que 99,99% delas já possuem explicação.

    ResponderExcluir
  8. pq aqui nao da acesso internet com NAT e hostonly
    eth0 dhcp => nat
    eth1 hostonly ip=..56.x
    eth2 intnet ip=10.10.x.x
    eth3 intnet ip=10.10.x.x

    tenho 4 VM assim em anel
    e uma delas e pra se conctar com host/pc e dele acessar internet.
    alem disso as 4 vm estao sob um dominio com bind9 resolvendo nomes td ok
    mas nao resolve hosts externos como ww.google.com pq ?

    ResponderExcluir