Você está na página 1de 6

Virtualização para servidores com VirtualBox [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...

Virtualização para servidores com VirtualBox

Autor: Eduardo Fonseca Velasques <eduveks at gmail.com>


Data: 06/02/2009

Introdução

O que não falta agora são soluções de virtualização. Mas a mais simples e com
excelente performance na minha opinião é o VirtualBox, dá para fazer tudo que
é preciso com muita simplicidade e rapidez.

Para virtualização em desktop o VirtualBox já vem reinando a algum tempo.

E para servidor, muitos não apostam por que simplesmente não sabem que é
possível, mas dá! E não é preciso ter ambiente gráfico, usando o VRDP pode-se
administrar a máquina remotamente. Mas convém ter o ambiente gráfico, tudo
fica muito mais fácil, e hoje em dia não vejo por que não ter ambiente gráfico no
servidor, pois o que não falta são ambientes gráficos levezinhos que nem afetam
a performance do servidor.

Existe uma solução para máquinas virtuais usando OpenSolaris e VirtualBox


chamada xVM Server:

http://xvmserver.org/
http://www.sun.com/software/products/xvmserver/index.xml

Mas como já tenho o CentOS redondinho, agora é tarde.

Bem, então eu resolvi fazer de tudo para ter o VirtualBox trabalhando no


servidor com o Windows 2003 Server em máquina virtual dentro do VirtualBox
no CentOS 5.

Melhor impossível, ficou perfeito, excelente performance, fácil administração,


todos serviços funcionando lindamente.

Vamos ao que interessa. Basicamente CentOS 5 com o VirtualBox instalado,


com a máquina virtual para o Windows Server 2003 instalada e configurada,

1 de 6 01-09-2010 21:14
Virtualização para servidores com VirtualBox [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...

isto é moleza e o que não falta são tutoriais pela net ensinando como fazer isto
com screenshots e tudo, e o VirtualBox é muito intuitivo. Por isso este não é o
âmbito aqui.

Rede

Agora a parte mais complicada, que tive que pesquisar bastante para fazer com
que o CentOS Linux comunicasse com o Windows Server. O que me ajudou mais
a desvendar isto foi este script:

VirtualBox Host Interface Networking with NAT

Mas como nem tudo é perfeito, este script não serve no CentOS, são necessárias
algumas alterações.

Então em primeiro lugar, configurar o IP da máquina virtual, ir no Windows


2003 Server e configurar o TCP/IP assim:

IP address: 192.168.20.201
Subnet mask: 255.255.255.0
Default gateway: 192.168.20.1

Feito isto, ir no CentOS e criar uma interface de rede virtual:

# /usr/bin/VBoxTunctl -u root

Depois disto, pode verificar com o "/sbin/ifconfig -a" se aparece o tap0. Pronto,
aí está a nossa interface de rede virtual.

É preciso configurar no VirtualBox para usar a nova interface de rede virtual, a


tap0. Ir nos "Settings" da máquina virtual, em "Network", no "Attached to",
mudar para "Host Interface" e selecionar a tap0. Para ir nos "Settings" tem que
desligar a máquina virtual.

Settings da Máquina Virtual > Network > Attached to > Host Interface

Agora é preciso configurar a interface de rede virtual:

# /sbin/ip link set tap0 up


# /sbin/ip addr add 192.168.20.1/32 dev tap0

2 de 6 01-09-2010 21:14
Virtualização para servidores com VirtualBox [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...

# /sbin/route add -host 192.168.20.201 dev tap0

Deverá conseguir "pingar" a máquina virtual:

# ping -c 1 192.168.20.201

Se for preciso rodar ASPX no servidor, aí está a solução, só configurar no nginx


para fazer proxy reverso do IIS no IP 192.168.20.201 e já vai funcionar
perfeitamente.

A máquina virtual até aqui não tem acesso a internet. Para resolver isto é
preciso fazer isto:

# /sbin/sysctl net.ipv4.ip_forward=1
# /sbin/iptables -t nat -A POSTROUTING --out-interface eth0 -j
MASQUERADE
# /sbin/iptables -A FORWARD --in-interface tap0 -j ACCEPT

E também configurar os DNS primário e secundário, da máquina virtual, com


os mesmos dados DNS do CentOS. Para ver os DNS do CentOS:

# cat /etc/resolv.conf

Agora deverá ter a internet funcionando no Windows.

Acesso remoto

Podemos iniciar a máquina virtual pela linha de comando, só que ficamos sem
acesso ao ambiente gráfico do VirtualBox. Para então ter acesso a máquina
virtual convém configurar o VRDP no VirtualBox para acessar a máquina
virtual remotamente:

Settings da Máquina Virtual > Remote Display > Enable VRDP Server

Settings da Máquina Virtual > Remote Display > Port = 3089

É importante mudar o número da porta, por que a porta do VRDP é a mesma do


Terminal Services, dá para trocar o número da porta do Terminal Services no
regedit, mas é mais simples aí no VRDP, e assim já se evita um conflito.

Só que assim o VirtualBox vai deixar entrar qualquer um pelo VRDP sem
autenticação, então convém bloquear a porta do VRDP para que ninguém fora

3 de 6 01-09-2010 21:14
Virtualização para servidores com VirtualBox [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...

do CentOS consiga controlar a máquina virtual:

# /sbin/iptables -A INPUT -p tcp -i eth0 --dport 3089 -j REJECT


--reject-with tcp-reset
# /sbin/iptables -A INPUT -p tcp -i eth1 --dport 3089 -j REJECT
--reject-with tcp-reset
# /sbin/iptables -A INPUT -p udp -i eth0 --dport 3089 -j REJECT
# /sbin/iptables -A INPUT -p udp -i eth1 --dport 3089 -j REJECT

Assim a porta do VRDP fica protegida para que ninguém que venha das
interfaces de rede externas consiga conectar.

Para conectar via VRDP é só usar o tsclient:

# tsclient

No tsclient, em computer colocar:

localhost:3089

E em protocol:

RDPv5

Clicar em "Connect" e pronto! Já conseguimos controlar a máquina virtual


remotamente quando estivermos executando ela em background, isto será
muito útil.

No Windows 2003 Server podemos ter o Terminal Services, e para acessar o


terminal services através da internet ou rede temos que fazer uns ajustes, pois
a porta do Terminal Services é a mesma do VRDP, então temos que mudar uma
ou outra porta, como já mudamos a porta padrão do VRDP para 3089, então o
Terminal Services vai funcionar bem na porta 3389.

Então para por o Terminal Services a funcionar é preciso ativar, no Windows


Server:

Control Panel > System > Remote > Enable Remote Desktop on this computer

E agora é fazer NAT para a porta do Terminal Services:

# /sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 3389 -j


DNAT --to 192.168.20.201:3389

4 de 6 01-09-2010 21:14
Virtualização para servidores com VirtualBox [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...

# /sbin/iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 3389 -j


DNAT --to 192.168.20.201:3389

E assim fica o Terminal Services disponível, e o mesmo pode ser feito para
outros serviços do Windows que precisam estar disponíveis externamente, como
MSSQLServer.

Últimos ajustes

Há outros exemplos desta configuração usando bridges, mas acho que assim
fica muito mais simples.

Para iniciar a máquina virtual pela linha de comando é assim:

# /usr/bin/VBoxVRDP -startvm NOME-DA-MAQUINA-VIRTUAL-


NO-VIRTUALBOX

Para quando o servidor iniciar, iniciar também a máquina virtual e carregar


toda configuração, coloquei os seguintes comandos no /etc/rc.local:

/usr/bin/VBoxTunctl -u root
/sbin/sysctl net.ipv4.ip_forward=1
/sbin/ip link set tap0 up
/sbin/ip addr add 192.168.20.1/32 dev tap0
/sbin/route add -host 192.168.20.201 dev tap0
/sbin/sysctl net.ipv4.ip_forward=1
/sbin/iptables -t nat -A POSTROUTING --out-interface eth0 -j MASQUERADE
/sbin/iptables -A FORWARD --in-interface tap0 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 3089 -j REJECT --reject-with
tcp-reset
/sbin/iptables -A INPUT -p tcp -i eth1 --dport 3089 -j REJECT --reject-with
tcp-reset
/sbin/iptables -A INPUT -p udp -i eth0 --dport 3089 -j REJECT
/sbin/iptables -A INPUT -p udp -i eth1 --dport 3089 -j REJECT
/sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 3389 -j DNAT --to
192.168.20.201:3389
/usr/bin/nohup /usr/bin/VBoxVRDP -startvm winserver > /dev/null &

Tem muita gente que acha deselegante usar o rc.local, mas eu não acho
deselegante, muito pelo contrário, afinal pra que que ele serve? :P

No meu caso, em um AMD Opteron Quad-Core com 4GB de RAM, o Windows

5 de 6 01-09-2010 21:14
Virtualização para servidores com VirtualBox [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...

2003 Server em máquina virtual de 512MB com o VirtualBox demora 6


segundos para estar completamente inicializado.

Acompanhe as atualizações sobre este tema em:

Virtualização para servidores com VirtualBox

http://www.vivaolinux.com.br/artigo/Virtualizacao-para-servidores-
com-VirtualBox

Voltar para o site

6 de 6 01-09-2010 21:14

Você também pode gostar