VirtualBox, configurações de rede
Tagged Under : archlinux, network, virtualbox
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:
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).
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.
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!



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.
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!
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. =)
Um desenho colorido vale por 79 parágrafos (cerca de)
=D
[...] 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 [...]
Putz muito bom hein! Parabéns, super caprichado, assim facilita a leitura, isso que é mulher! Quer se casar comigo?
[...] por Kessia Pinheiro (kessiapinheiroΘgmail·com) - referência [...]
Hm, para interesse: sou compromissada. =)
E obrigada.
q programa vc usou para fazer as imagens? alguma espécie de DIA?
Kessia, vc ja testou no ubuntu?? tentei fazer modo bridge não seguindo esse post, mas nao obtive sucesso.
Parabéns pelo post, fazia um tempo que eu tinha procurado esse tema bem explicado.
A única coisa que estraga é que você é compromissada hehe. De qualquer forma, parabéns novamente!
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.
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.
E quando o host é windows? Como fazer para uma VM linux comunicar com o host windows?
obrigado,
julio
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.
[...] 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 [...]
[...] Pesquisando um pouco no oráculo, encontrei no blog da Kessia Pinheiro um ótimo post sobre o assunto, VirtualBox, configurações de rede. [...]
[...] 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 [...]
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??
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??
Parabéns o post, está muito simples e bem explicado.