VirtualBox Advanced Networking

Normalmente utilizamos o VirtualBox para acessar nossos sistemas virtualizados utilizando as interfaces de rede configuradas para fazer NAT (Network Address Transalation) que além de ser a forma mais simples e rápida atende a boa parte de nossas necessidades, porém quando necessitamos de acesso externo através da rede para nossa virtual machine (isso normalmente acontece quando utilizamos servidores virtuais) é necessária a configuração de uma nova interface de rede virtual (Host Interface Network) utilizando configurações em bridge para acessar diretamente nossa interface “real”.

Existem diversos tutoriais disponíveis na internet, porém a grande maioria deles são referentes a configuração específica em Debian e Ubuntu, vou descrever abaixo alguns procedimentos genéricos para auxiliar na configuração em plataforma Linux em geral:

Primeiramente é necessário ter as ferramentas pertencentes ao pacote bridge-utils (disponível em grande parte das distribuições) instalado em seu sistema.

Para que seja possível a criação de interfaces virtuais é necessário ter o módulo “TUN” carregado no sistema e com as permissões de gravação e leitura liberadas para o usuário que roda o VirtualBox. Utilizando como exemplo:

# modprobe tun
# chmod 666 /dev/net/tun

Dica: Para quem utiliza ArchLinux ou outros sistemas com a configuração de hardware baseada em UDev, edite o arquivo /etc/udev/rules.d/60-vboxdrv.rules e adicione as seguintes linhas:

KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root",\ GROUP="vboxusers", MODE="0660"
KERNEL=="tun", OWNER="root", GROUP="vboxusers", MODE="0660"

Lembrando que o módulo vboxdrv deve estar carregado e o grupo vboxusers deve estar disponível…

Crie uma nova bridge com:

# brctl addbr br0

No próximo passo será necessário retirar quaisquer configurações de rede presentes na interface e habilitar o modo “promiscuous” para aceitar frames ethernet vindos de diferentes endereços MAC. Exemplo:

# ifconfig eth0 0.0.0.0 promisc

Lembrando que a conectividade de rede é finalizada neste ponto!

# brctl addif br0 eth0

Agora com a interface atribuída restaure suas configurações de rede diretamente na br0 (com ifconfig mesmo), e caso esteja utilizando dhcp é necessário entrar com o hostname na configuração:

# dhcpcd -t 30 -h hostnamedamaquina br0

Para a criação de novas interfaces (em nosso caso “tap0″) utilize:

# tunctl -b -t tap0 -u username
# ip link set up dev tap0
# brctl addif br0 tap0
# ifconfig tap0 0.0.0.0 promisc

Lembrando que o username é referente ao usuário utilizado na execução do VirtualBox e tap0 deve ser atribuido como identificação da interface de sua virtual machine.

Extra Info:

Para automatizar o processo de criação e remoção de interfaces é possível criar 2 scripts, onde um deles é responsável pela criação e o outro pela remoção. Exemplo:

Script vbox_start:

#!/bin/sh
sudo /sbin/ifconfig $2 up
sudo /usr/sbin/brctl addif br0 $2

Script vbox_stop:

#!/bin/sh
sudo /usr/sbin/brctl delif br0 $2

Após a criação entre com as permissões apropriadas para a execução:

# chmod u+x vbox_start vbox_stop

Nas configurações de rede de sua máquina virtual selecione “Host Interface”, entre com os scripts em seus respectivos lugares e entre com o nome da interface (em nosso caso tap0).

Share and Enjoy:
  • Facebook
  • Twitter
  • LinkedIn
  • del.icio.us
  • Google Bookmarks
  • Digg
  • Slashdot
  • Reddit

2 Responses to “VirtualBox Advanced Networking”

  1. Samuca says:

    Fala Luiz…

    Belo tutorial faleu mano.

    Abraço

    Samuca

  2. Samuca says:

    Fala Luiz…

    Belo tutorial valeu mano.

    Abraço

    Samuca

Leave a Reply