Tuesday, June 9, 2009

Criando uma LAN com VirtualBox

Criando uma LAN com VirtualBox


Este post ensina a criar uma pequena LAN utilizando um único computador, rodando GNU/Linux, com três máquinas virtuais sobre o VirtualBox. Claro que para isso o computador deve ter um bom processador e uma quantidade aceitável de memória. Acredito que com 1GB ou 2GB já é possível criar essa LAN de máquinas virtuais.

Algumas considerações iniciais:
- Para esse experimento foi utilizado o VirtualBox 2.2.4 em Ubuntu Desktop 9.04 (Jaunty Jackalope) - Este é o Host.
- Esta versão de VirtualBox já possui suporte facilitado para bridges virtuais, o que torna prático o trabalho de criação de uma rede local interna.
- Admite-se o uso da distribuição Ubuntu em todo experimento, mas não deve ser difícil utilizar uma distribuição diferente para o mesmo experimento.
- Não são abordadas as instalações dos SOs das máquinas virtuais, apenas as configurações.
- Os comandos descritos devem ser digitados dentro de um terminal (gnome-terminal, por exemplo).
- Admite-se que se tenha conhecimentos básicos de SO, Redes, Linux e algumas ferramentas como VIM, por exemplo.

Configurando as máquinas virtuais.
No VirtualBox foram criadas 3 máquinas virtuais:
- Guest 1: Servidor, Ubuntu Server 9.04.
O guest 1 será um roteador (gateway para os demais guests) e servidor de alguns serviços básicos de rede.
Para o guest 1, foram configuradas duas placas de rede:
Adapter 1 ativada em NAT.

Adapter 2 ativada em Internal Network, name virtualNetwork.


- Guest 2: Cliente, Windows XP.
Adapter 1 ativada em Internal Network, name virtualNetwork.


- Guest 3: Cliente, Ubuntu Desktop 9.04.
Adapter 1 ativada em Internal Network, name virtualNetwork.


Depois de configuradas as máquinas virtuais, a rede ficará assim:


Configurando o Guest 1.
Depois do boot do guest 1 é possível observar que apenas a interface eth0 (externa) é configurada.
$ifconfig

Passo 1: Configurando a segunda interface para IP estático.
$sudo vim /etc/network/interfaces

Passo 1.1:Adicione as seguintes linhas no final do arquivo, salve e feche o arquivo.
# The second network interface
auto eth1
iface eth1 inet static
address 192.168.10.1
netmask 255.255.255.0

Passo 2: Reiniciando as configurações de rede.
$sudo /etc/init.d/networking restart

Passo 3: Ativando o roteamento (eth0 <-> eth1).
$sudo echo "1" > /proc/sys/net/ipv4/ip_forward

Passo 4: Configurando tradução de endereços para rede interna.
$sudo iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE

Os passos 3 e 4 alteram tabelas dinâmicas do sistema e devem ser executados toda vez que guest 1 for inicializado.
Dica: Criar um script que execute os passos 3 e 4 automaticamente. Crie um script chamado configRouter.sh e coloque-o em /etc/rc.* (* depende do seu modo de inicialização).
#! /bin/bash
# ativando roteamento
echo "1" > /proc/sys/net/ipv4/ip_forward
# configurando tradução de endereços para rede interna
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE

Alterando permissão de execução do script.
$sudo chmod 744 configRouter.sh

Executando o script.
$sudo ./configRouter.sh

Configurando o Guest 2.
Passo único: Configure a Conexão Local do Windows XP para
Endereço IP: 192.168.10.2
Máscara de sub-rede: 255.255.255.0
Gateway Padrão: 192.168.10.1
Servidor DNS preferencial: 208.67.222.222
Servidor DNS alternativo: 208.67.220.220

Observe que o gateway padrão é o Guest 1.
Os endereços de servidores DNS utilizados são os endereços do OpenDNS (www.opendns.com). Para mais informações visite o site.

Configuração o Guest 3.
Passo 1: Configurando a primeira interface para IP estático.
$sudo vim /etc/network/interfaces

Passo 1.1: Adicione as seguintes linhas no final do arquivo, salve e feche o arquivo.
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.10.3
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
gateway 192.168.10.1

Passo 2: Configurando os servidores DNS.
$sudo /etc/resolv.conf

Passo 2.1: Adicione as seguintes linhas no final do arquivo, salve e feche o arquivo.
nameserver 208.67.222.222
nameserver 208.67.220.220

Passo 3: Reiniciando as configurações de rede.
$sudo /etc/init.d/networking restart

Agora basta fazer alguns testes de conectividade. É isso!
Um abraço.

4 comments:

Unknown said...

Exelente artigo parabéns

Unknown said...

aonde eu boto o script, no rc1. ou rc2 ou rc0, o servidor é debian squeeze 6.0.5

guioximitsu said...

Bem explicado ! vlw.

Unknown said...

Muito bem explicado e também muito simples! Obrigado!