VirtualBox, configurações de rede

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!

Tags: , ,
| fevereiro 25th, 2008 | Posted in archlinux, network |

26 Responses to “VirtualBox, configurações de rede”

  1. Hugo Doria Linux Mozilla Firefox 3.0b3 Says:

    O post ficou ótimo, Kessia! Já recomendei no meu. Assim que chegar em casa vou dar uma testada em todos os modos também.

    Abraços.

  2. Jeferson Lopes BRAZIL Linux Mozilla Firefox 2.0.0.11 Says:

    Legal Késsia, quando eu instalar o Virtual Box, já sei onde buscar as informações para colocar meus S.O’s na rede.

    Uma pergunta meio off-topic:
    - Que software você usou para desenhar esta topologia de rede? ^^

    Agradeço.. e ótimo dia!

  3. Kessia Pinheiro BRAZIL Linux Mozilla Firefox 3.0b3 Says:

    Opa! Valeu!
    @Jeferson: usei o Gliffy (http://www.gliffy.com) para fazer o básico (ícones basicamente), mas tive que refazer quase tudo no Inkscape mesmo. =)

  4. nofxx BRAZIL Mac OS X Opera 9.50 Says:

    Um desenho colorido vale por 79 parágrafos (cerca de)

    =D

  5. Instalando o virtualbox no Arch Linux - Hugo Dória UNITED STATES WordPress 2.3.3 Says:

    [...] A Kessia fez um ótimo post mostrando como fazer a configuração de rede no virtualbox. Recomendo! Compartilhe: These icons link to social bookmarking sites where readers can share and [...]

  6. ganso BRAZIL Windows XP Mozilla Firefox 2.0.0.12 Says:

    Putz muito bom hein! Parabéns, super caprichado, assim facilita a leitura, isso que é mulher! Quer se casar comigo?

  7. VirtualBox: configurações de rede BRAZIL WordPress 2.3.3 Says:

    [...] por Kessia Pinheiro (kessiapinheiroΘgmail·com) – referência [...]

  8. Kessia Pinheiro BRAZIL Linux Mozilla Firefox 3.0b3 Says:

    Hm, para interesse: sou compromissada. =)
    E obrigada.

  9. fulano BRAZIL Windows XP Internet Explorer 6.0 Says:

    q programa vc usou para fazer as imagens? alguma espécie de DIA?

  10. adrix Windows XP Mozilla Firefox 2.0.0.12 Says:

    Kessia, vc ja testou no ubuntu?? tentei fazer modo bridge não seguindo esse post, mas nao obtive sucesso.

  11. Diego Souza BRAZIL Windows XP Mozilla Firefox 2.0.0.12 Says:

    Parabéns pelo post, fazia um tempo que eu tinha procurado esse tema bem explicado.

    :-)

  12. ganso BRAZIL Windows XP Mozilla Firefox 2.0.0.12 Says:

    A única coisa que estraga é que você é compromissada hehe. De qualquer forma, parabéns novamente!

  13. Edgar Szilagyi BRAZIL Ubuntu Linux Mozilla Firefox 2.0.0.12 Says:

    Muito bom! Apenas uma correção:
    Para levantar a interface virtual é
    ifconfig tap0 up
    afinal, criamos a tap0 e não a tap1.
    Mas este é um erro pequeno, que facilmente percebemos e corrigimos.
    Testei no Ubuntu 7.10 e funcionou perfeitamente!
    Parabéns pelo Post! Estava a um tempão procurando por essa informação.

  14. Leandro Ubuntu Linux Mozilla Firefox 2.0.0.12 Says:

    Instalei o virtual box no meu Ubuntu e instalei o windows xp.
    Tentei fazer o nat com o port forwarding, mas não entendi muito bem os comandos, se alguem puder explicar com mais detalhes os comandos.

  15. julio BRAZIL Windows XP Mozilla Firefox 2.0.0.14 Says:

    E quando o host é windows? Como fazer para uma VM linux comunicar com o host windows?
    obrigado,
    julio

  16. Kessia Pinheiro BRAZIL Debian GNU/Linux Mozilla Firefox 2.0.0.12 Says:

    Desculpe, mas Windows não esta nos meus conhecimentos. Nunca utilizei Windows a fundo para dizer. . . Creio que o PDF sobre networking do VirtualBox explica.

  17. Automatizando a bridge no VirtualBox -- Even me. . . UNITED STATES WordPress 2.5.1 Says:

    [...] algum tempo eu escrevi um post sobre configurações de rede no VirtualBox. Bem, para que meu host tivesse contato com a guest preciso de uma conexão do tipo Host Interface [...]

  18. Oscar Costa » Blog Archive » Habilitando a rede do VirtualBox com NAT no Linux WordPress 2.6 Says:

    [...] Pesquisando um pouco no oráculo, encontrei no blog da Kessia Pinheiro um ótimo post sobre o assunto, VirtualBox, configurações de rede. [...]

  19. Instalando o virtualbox no Arch Linux | Hugo Doria UNITED STATES WordPress 2.6.1 Says:

    [...] A Kessia fez um ótimo post mostrando como fazer a configuração de rede no virtualbox. Recomendo! KDEMod 4.1 no Arch LinuxComo criar pacotes para o Arch Linux – parte II – pacotes svn e [...]

  20. Aldair BRAZIL Fedora Linux Mozilla Firefox 3.0b5 Says:

    segui seu exemplo no fedora parece ter dado certo a interface eth1 antes utilizada por min para fazer a conecção fical sem ip o ip dela ficol na br0 a maquina hospedeira funcionol perfeitamente ja a maquina virtual winxp conectada a tap0 so pinga para a bridge br0 não pinga para a rede local nem funciona a internete..qual configuração teria que ficar na placa de rede do win xp? na configuração da maquina virtual coloquei conectar na interface do hospedeiro..o que pode estar errado??

  21. raul Windows XP Mozilla Firefox 3.0.1 Says:

    preciso saber o seguinte:
    tenho uma conexão tim web no hospedeiro que tem sistema windows XP, ele tem um ip tipo 189.164.XXX.XXX que é o ip da internet. e eu tenho um servidor apache instalado numa vm com linux CentOs4.6. Este linux tem o IP 192.168.0.5. Eu queria saber como rotear para que ao acessar externamente pelo http://189.164.xxx.xxx veja o servidor apache do linux… tem como??

  22. Fernando PORTUGAL Windows Vista Mozilla Firefox 3.0.6pre Says:

    Parabéns o post, está muito simples e bem explicado.

  23. Cezar BRAZIL Debian GNU/Linux Mozilla Firefox 3.0.6 Says:

    Ótimo Post Kessia! Porém não consegui fazer com que o meu guest Win2003 acesse diretamente a placa de rede (para fornecer boot PXE aos clientes da rede)… voce tem alguma ideia? abraço!
    PS: Novamente, ótimo post!

  24. Veja como configurar Port Forwarding(redirecionamento de portas) usando NAT no VirtualBox « Assistência Técnica em Informática WordPress MU Says:

    [...] http://even.archlinux-br.org/blog/virtualbox-configuracoes-de-rede [...]

  25. Diego BRAZIL Windows XP Mozilla Firefox 3.6.8 Says:

    Parabéns, ótimo artigo. Abordou o tema de forma clara, direta e prática.

    Diego Ferreira

  26. Lucas Ferreira Opera 9.80 Says:

    Perfeito! Se não fosse seu post eu não descobria essa emulação de interface (tap0) nem tão cedo. A bridge linkou a real e a virtual! Sacar como passar essas configurações usando a interface do vbox é que foi difícil. Valeu!