VirtualBox, configurações de rede

Filed Under (archlinux, network) by Kessia Pinheiro on 25-02-2008

Tagged Under : , ,

Aproveitando o gancho do Hugo Dória com o Instalando o virtualbox no Arch Linux, vamos à parte chata boa.

Começando pela configuração de rede, que depende do que você deseja para sua guest machine. O vbox disponibiliza 3 tipos: Network Address Translation (NAT), Host Inferface (bridge) e Internal Networking (bridge seguro).

Network Address Translation [NAT]

O modo NAT basicamente faz com que o o host (hospedeiro) atue como roteador para as guest’s (VM – máquinas virtuais), mapeando o tráfico entre a guest e o host (ou a rede externa) de forma transparente, utilizando um socket. Embora o tráfico passe transparente entre as partes, a guest não é visível ou alcançável atrás do NAT (a menos que se faça um port forwarding [redirecionamento de portas]), nem mesmo para o host.

A configuração da interface de rede é completamente diferente da do host. A guest irá assumir se conectar a uma rede 10.0.2.0 na primeira interface (seguindo para 10.0.3.0 e assim por diante nas demais). Para aplicações ou demais máquinas na mesma rede que o host, os acessos serão como provenientes do host.

Abaixo uma ilustração melhor:

NAT com Virtualbox

Bem, para fazer o port forwarding basta adequar o exemplo abaixo para a porta que você deseja (aqui para acesso ssh):

VBoxManage setextradata “Linux Guest”
“VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol” TCP
VBoxManage setextradata “Linux Guest”
“VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort” 22
VBoxManage setextradata “Linux Guest”
“VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort” 2222

Isso também pode ser feito usando iptables, no entanto não cobrirei aqui.

Observações: O modo NAT nos dá 2 limitações importantes: encontrar compartilhamentos Windows navegando pela rede (pode ser feito se for acesso direto via nome da máquina ou IP), além de necessitar realizar port forwarding das portas TCP e UDP 135, 137 e 139, e não haverá resposta para ping ao host ou qualquer máquina fora da rede privada.

Host Inferface [Bridge]

Usando o modo Host Interface, o vbox criará uma nova interface de rede no host (interface TAP – Virtual Ethernet Network, usado para tunelamento de ethernet), que irá coexistir com as interfaces existentes reais (como eth0). A guest irá utilizar a interface criada para realizar uma ponte (bridge) entre a interface real (eth0) e a virtual (tap0).

Abaixo uma ilustração melhor:
Bridge com VirtualBox

Este processo terá que ser feito manualmente, abaixo especificamente para o ArchLinux:

Instalando os pacotes:

# pacman -S bridge-utils
# pacman -S uml_utilities

Carregando o módulo:

# modprobe tun

*Você também pode adicionar o módulo tun na linha MODULES=(…) de seu rc.conf.

Verificando se o device foi criado com sucesso:

$ file /dev/net/tun
/dev/net/tun: character special (10/200)

Se a saída for:

/dev/net/tun: ERROR: cannot open `/dev/net/tun’ (No such file or directory)

Você deve corrigir isto com:

# mkdir -p /dev/net
# mknod /dev/net/tun c 10 200

Incluindo a seguinte linha no arquivo /etc/udev/rules.d/60-vboxdrv.rules:

KERNEL==”tun”, OWNER=”root”, GROUP=”vboxusers”, MODE=”0660″

Corrigindo permissão na interface:

# chown root:vboxusers /dev/net/tun
# chmod 0660 /dev/net/tun

Criando a interface tap0 (substitua username pelo seu usuário):

# tunctl -b -t tap0 -u username

Criando a bridge:

# brctl addbr br0

Alternando sua interface física para modo “promíscuo”, assim irá aceitar as configurações da bridge (substitua eth0 pela sua interface):
*lembre-se de guardar as configurações atuais, caso use ip fixo!!!

# ifconfig eth0 0.0.0.0 promisc

Adicionando sua interface real à bridge:

# brctl addif br0 eth0

Configure a sua rede na bridge:
Usando DHCP (substitua hostname pelo nome da sua máquina):

# dhcpcd -t 30 -h hostname br0 &

Ou usando ip fixo, com as mesmas configurações anteriores:

# ifconfig br0 x.x.x.x netmask x.x.x.x

Adicionando a interface virtual à bridge:

# brctl addif br0 tap0

Levantando a interface virtual:

# ifconfig tap0 up

Você também pode configurar a seção de rede do seu rc.conf de acordo com o exemplo abaixo, assim poderá levantar a interface usando o /etc/rc.d/network restart:

lo=”lo 127.0.0.1″
BRIDGE_INTERFACES=(br0)
bridge_br0=(eth0)
br0=”dhcp”
eth0=”eth0 0.0.0.0 promisc”
INTERFACES=(lo br0 eth0)

Internal Networking [Bridge Seguro]

Internal Networking é similar ao Host Interface, onde a guest se comunica diretamente à rede. No entanto, a rede é limitada à outras VM’s conectadas à mesma rede interna. O tráfego entre as VM’s é totalmente invisível ao mundo externo, inclusive o próprio host. Os dados são transferidos diretamente através de operações de cópia direta de memória entre as VM’s no mesmo hospedeiro.

Este modo é interessante por dois motivos:
Segurança: Todo o tráfego transita através do módulo RO dentro do VirtualBox.
Velocidade: O tráfego é realizado dentro da memória, mas sem repassa-lo à outras camadas. Assim não é necessário entrar na pilha de tráfego de rede do sistema operacional.

Abaixo uma ilustração melhor:
Internal Netwoking com VirtualBox

Ao configurar a rede no modo Internal Networking pela interface gráfica do VirtualBox, você não pode modificar o nome da rede interna (o padrão é intnet). Para setar o modo Internal Network via linha de comando use:

# VBoxManage modifyvm [VM name] -nic[X] intnet

Opcionalmente você pode setar um nome para sua rede:

# VBoxManage modifyvm [VM name] intnet[X] [network name]

Você terá que configurar a interface da VM para utilizar endereço IP estático, pois este modo não suporta servidor DHCP). Estes IP’s deverão estar na mesma subnet, como: 192.168.2.1, 192.168.2.2, 192.168.2.3 etc.

Observações: O modo Internal Networking não há entrada ou saída de tráfego externo, apenas VM’s conectadas umas às outras numa mesma rede interna. Para ter acesso à internet, é necessário utilizar uma segunda interface utilizando NAT na guest.

Isso é tudo pessoal!

PDF Creator    Enviar artigo em PDF para

Comments:

24 Comments posted for VirtualBox, configurações de rede

Make a comment