Redirecionamento de portas para servidores remotos
William da Rocha Lima (WROCHAL)
FONTE: underlinux
Introdu��o
Supondo que temos a seguinte estrutura:
Internet ----- Router ----- Tux1 ----[ DMZ ]
+----- Tux2
+----- Tux3
Algumas pessoas utilizam essa estrutura (seja por seguran�a ou por op��o), mantendo
somente o Tux1 (que consideremos como nosso "Firewall" ou bastion host) com IP v�lido
na Internet, e os outros servidores com IPs inv�lidos (10.0.0.0/8, 192.168.0.0/16, ou
demais redes inv�lidas, vide RFC 1918). Os servidores internos ficam em uma �rea
conhecida como DMZ (Demilitarized Zone), e sendo necess�rio os pacotes trafegarem pelo
Tux1 antes de se chegar nos mesmos.
Considerando-se a seguinte estrutura b�sica de endere�amento IP:
Tux1 Tux2 Tux3
eth0 (intranet) 192.168.1.1/24 192.168.1.2/24 192.168.1.3/24
eth1 (internet) 200.200.5.2/24
Objetivo
Considerando que o servidor Tux2 possui um servi�o MySQL rodando e queremos
torn�-lo dispon�vel na Internet, podemos utilizar no Tux1 o redirecionamento remoto.
Existem diversas formas e softwares para se fazer isso. O mais eficiente � atrav�s do
recurso DNAT/SNAT (NAT 1:1) do IPTables. Por�m para quem ainda utiliza o IPChains,
existem softwares como o ipmasqadm, FastForward, e o que iremos descrever neste
artigo, o redir. Espero ao longo do tempo (vers�o 2.0 do artigo :p) ir descrevendo a
utiliza��o dos outros softwares/recursos.
redir
O redir � um software bem simples para ser utilizado com esta finalidade, e tamb�m
possui recursos interessantes. Utilizaremeos a vers�o 2.2.1.
Site: http://sammy.net/~sammy/hacks/
Download: http://sammy.net/~sammy/hacks/redir-2.2.1.tar.gz
RPM:
ftp://ftp.rpmfind.net/linux/PLD/current/dists/nest/PLD/i386/PLD/RPMS/redir-2.2-1.i386.rpm
O processo para instala��o � o comumente utilizado. No caso do RPM, utilize:
> rpm -ivh redir-2.2-1.i386.rpm
Agora no caso do tar.gz:
> tar -xvzf redir-2.2.1.tar.gz
> cd redir-2.1.1
> ./configure
> make
> make install
> cp redir /usr/sbin/
Digitando o comando 'redir' obtemos:
# redir
usage:
redir --lport= --cport= [options]
redir --inetd --cport=
Options are:-
--lport= port to listen on
--laddr=IP address of interface to listen on
--cport= port to connect to
--caddr= remote host to connect to
--inetd run from inetd
--debug output debugging info
--timeout= set timeout to n seconds
--syslog log messages to syslog
--name= tag syslog messages with 'str'
--connect= CONNECT string passed to proxy server
--bind_addr=IP bind() outgoing IP to given addr
--ftp= redirect ftp connections
where type is either port, pasv, both
--transproxy run in linux's transparent proxy mode
--bufsize= size of the buffer
--maxbandwidth= limit the bandwidth
--random_wait= wait before each packet
--wait_in_out= 1 wait for in, 2 out, 3 in&out
Version 2.2.1.
J� vemos por esse "help" do redir, que seu uso � simpl�rio, mas bem robusto, como no
caso do redirecionamento via ftp, proxy transparente, limita��o de banda, ...
Usando o redir
Como explicitado mais acima, digamos que queremos garantir o acesso ao servi�o MySQL
do servidor Tux2 para a Internet. Considerando que a porta default usada pelo MySQL �
a 3306, usaremos essa como porta de escuta (listen).
Vamos analizar alguns parametros b�sicos do redir:
--lport Porta de escuta (listen port).
--laddr Endere�o IP de escuta. No caso de se utilizar todos os IP (interfaces da
m�quina), este parametro pode ser ocultado.
--cport Porta de destino.
--caddr Endere�o IP de destino.
Afinal, como funcionaria essa porta/IP de listen?
� o seguinte: o usu�rio que quisesse acessar o seu servidor MySQL atrav�s da Internet
logicamente n�o utilizaria o IP 192.168.1.2 e sim o IP do Tux1, pois este que est�
fazendo o redirecionamento, ou seja, ele chamar� o servi�o atrav�s do IP 200.200.5.2,
usando a porta 3306, que foi definida como porta listen.
Entao como ficar� nossa utiliza��o?
> redir --lport=3306 --laddr=200.200.5.2 --cport=3306 --caddr=192.168.1.2
Pronto, como isso o redir redirecionar� o tr�fego para o servidor MySQL do Tux2.
E como incrementar um pouquinho isso?
Temos outros recursos interessantes como:
--debug Inicialmente � interessante analizar as mensagens de debug para verificar se
algo est� acontecendo de errado.
--syslog Gera registro nos logs residentes em /var/log/. Geralmente (dependendo do seu
/etc/syslogd.conf) estar� em messages
> redir --lport=3306 --laddr=200.200.5.2 --cport=3306 --caddr=192.168.1.2 --debug
>--syslog
Utiliza��o mais avan�ada do redir
Supondo que eu tivesse servidores HTTP (porta 80 em ambos) no Tux2 e Tux3 e quisesse
disponibilizar ambos na Internet, como eu poderia fazer?
Concordam comigo, que inicialmente seguindo nosso racioc�nio anterior n�o daria, visto
que quando eu disponibilizasse o Tux2, abriria a porta 80 para redirecionamente e como
eu poderia abrir a porta novamente pro Tux3 tamb�m?
Confuso? Vejamos isso em exemplo pr�tico:
Linha relativa ao redirecionamento pro Tux2:
> redir --lport=80 --laddr=200.200.5.2 --cport=80 --caddr=192.168.1.2
Tux3:
> redir --lport=80 --laddr=200.200.5.2 --cport=80 --caddr=192.168.1.3
Tux1: bind: Address already in use
O que aconteceu foi que o sistema disponibilizou a porta 80 aberta para o Tux2 e
quando tentei abrir novamente deu mensagem de erro dizendo que ela estava em uso.
Temos duas maneiras para se contornar isso:
1. Mudar a porta de listen pra o Tux3
Manter a linha referente ao Tux2 e colocar a linha pro Tux3 como:
> redir --lport=8080 --laddr=200.200.5.2 --cport=3306 --caddr=192.168.1.3
S� que com isso tenho um problema, s� posso acessar o Tux3 pela Internet usando a URI
no meu browser:
http://200.200.5.2:8080
Ou seja, voce tem que explicitar a porta 8080. Mas isso em alguns casos ficaria
invi�vel. Ent�o utilizemos o segundo m�todo! :)
2. Utilizar IP Aliasing
Com isso utilizaremos IPs com aliasing na placa de rede eth1, ou seja, colocar no
mesmo servidor outros endere�os IP.
Digamos que sua rede de IPs vis�veis na Internet � a 200.200.5.0, o IP 200.200.5.1
est� sendo utilizado pelo Roteador e o 200.200.5.2 como principal da eth1, criaremos
um alias com o IP 200.200.5.3.
> ifconfig eth1:1 200.200.5.3 netmask 255.255.255.0
Com isso habilitamos na placa eth1 o IP 200.200.5.3. Se quisessemos outro:
> ifconfig eth1:2 200.200.5.4 netmask 255.255.255.0
Considerando que criamos o aliasing eth1:1 ent�o definimos a "regra" para o Tux3:
> redir --lport=80 --laddr=200.200.5.3 --cport=3306 --caddr=192.168.1.3
Com isso o usu�rio fora de nossa rede poder� acessar
http://200.200.5.2 -> Forward para Tux2
http://200.200.5.3 -> Forward para Tux3
Bom pessoal, espero com isso t�-los ajudado a esclarecer a utiliza��o sobre o redir.
Estou disposto a ajudar, qualquer coisa � s�:
Mail > [EMAIL PROTECTED]
Abra�os,
=================== SEPARA��O DA RESPOSTA ===================
Em << DT >> a << TM >> << FR >> escreveu:
>Colegas,
>
>N�o saco nada sobre roteamento,
>
>Algu�m pode me ajudar a configurar uma m�quina com CL8+ como roteador?
>
>Receberei um Link da Telemar e IPS v�lidos.
>A minha rede est� assim
>
>M�quina 1 - (Ser� o roteador) 192.168.0.1
>M�quina 2 - (Web Server) 192.168.0.2
>M�quina 3 - (Mail Server) 192.168.0.3
>
>M�scara de subrede � 255.255.255.0
>
>GRato,
>
>David Muniz
>
>
>
>
William da Rocha Lima
Analista de Tecnologia
[EMAIL PROTECTED]
ICQ#: 111752037
Linux User: 289392
MSN - YIM - AIM
Assinantes em 07/10/2002: 2244
Mensagens recebidas desde 07/01/1999: 185860
Historico e [des]cadastramento: http://linux-br.conectiva.com.br
Assuntos administrativos e problemas com a lista:
mailto:[EMAIL PROTECTED]