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]

Responder a