========================================
HowTo: Iptables para organizar suas Máquinas Virtuais
========================================
Problema:
Imagine a seguinte situação. Você têm uma máquina física com uma boa quantidade de memória, um disco de tamanho razoável, e deseja transformar essa máquina em um servidor de máquinas virtuais, instalando um Linux de responsa para isso, o CentOS.
Essa máquina física irá armazenar diversas máquinas virtuais (Vmware), porém você já tem um parque de máquinas em sua rede, tudo configurado bonitinho e tal.
Uma alternativa é criar as máquinas virtuais(VM´s) em Bridged, porém ao fazer isso suas VM´s passarão a ficar misturadas com suas outras máquinas de seu parque principal.
Outra alternativa é você criar as VM´s como Nat, deixando a máquina física (hospedeira) definir os IP´s das VM´s. Essa é das maneiras mais indicadas, pois suas VM´s ficam isoladas de seu parque de máquinas principal, porém a partir delas é possível acessar sua rede, e vice-versa.
Vamos a receita.
========================================
1. Instale o CentOS em sua máquina física normalmente. Coloque-a em seu parque de máquinas já existentes, atribuindo um IP da sua rede.
(Pode seguir um bom tutorial, como do http://howtoforge.com/)
2. Instale o VmWare
(Aqui tem um tutorial legal de como fazer: http://www.cyberciti.biz/)
3. Depois de instalado o VmWare, e criado suas máquinas virtuais (isso você já deve saber), todas como NAT nas configurações de rede, é hora de configurar o Iptables de sua máquina física.
4. Execute isso no terminal de sua máquina física.
# vi /etc/init.d/firewall.sh
Entre com o código abaixo, editando conforme seu parque de máquinas virtuais.
[c]
#!/bin/bash
# chkconfig: 2345 95 20
# description: Regras de redirecionamento
# What your script does (not sure if this is necessary though)
# processname: firewall.sh
prog=”firewal”
echo 1 >> /proc/sys/net/ipv4/ip_forward
#limpa tables nat
iptables -t nat -F
#mascara trafego pras vm
iptables -t nat -A POSTROUTING -d 172.16.117.0/24 -j MASQUERADE
#redireciona porta para as respectivas maquinas virtuais.
#SSH da VM de banco:
iptables -t nat -A PREROUTING -p tcp –dport 221 -j DNAT –to 172.16.117.129:22
#Oracle da VM de banco:
iptables -t nat -A PREROUTING -p tcp –dport 1521 -j DNAT –to 172.16.117.129:1521
#Apache (httpd) da VM de banco
iptables -t nat -A PREROUTING -p tcp –dport 70 -j DNAT –to 172.16.117.129:80
#Tomcat da VM de banco
iptables -t nat -A PREROUTING -p tcp –dport 7070 -j DNAT –to 172.16.117.129:8080
#RDP (Remote Desktop da VM Windows)
iptables -t nat -A PREROUTING -p tcp –dport 3389 -j DNAT –to 172.16.117.128:3389
[/c]
5. Após salvar, e sair da edição, é hora de transformar o script em executável:
# chmod +x firewall.sh
6. Colocando o script para iniciar automaticamente:
# chkconfig –level 2345 firewall.sh
7. Pronto, feito isso sempre que quiser adicionar uma novo redirecionamento basta executar este comando:
# echo iptables -t nat -A PREROUTING -p tcp –dport numero_porta -j DNAT –to ip_da_maquina_virtual:porta_da_maquina_virtual >> /etc/init.d/firewall.sh
Reinicia o script:
# /etc/init.d/firewall.sh stop
# /etc/init.d/firewall.sh start
8. Feito, dessa maneira quando se quiser acessar determinado serviço de uma máquina virtual, é só chamar o ip da máquina física passando a porta configurada.
Por exemplo, imaginemos que a máquina física tenha o seguinte IP: 192.168.0.10, e a mesma foi adicionada em seu servidor de DNS com o nome de vm.dominio.com.br.
Você quer acessar o a Área de trabalho remota de sua máquina virtual Windows que esta dentro do servidor vm.dominio.com.br, veja como fazer.
Se estiver utiizando uma estação Windows, em qualquer lugar de seu parque, basta ir em:
# Botão Inicia/Executar
# digitar: mstsc
Se abrirá uma janela pedido o ip ou nome da máquina, ai basta você entrar com o nome da máquina física, não precisa nem passar a porta, porque ele já vai enviar a requisição na porta padrão do serviço de terminal server (3389).
Então é so digitar: vm.dominio.com.br ou o IP, 192.168.0.10. Se vc estiver utilizando o Linux, procure pelo programa RDesktop
Outro exemplo, digamos que você queira acessar o Tomcat da máquina de banco de dados, basta de qualquer estação da sua rede, através do browser, chamar a máquina física passando a porta configurada no arquivo firewall.sh:
vm.dominio.com.br:7070
É isso ai, espero que tenha sido claro nas explicações.