Redirecionamento de portas [RESOLVIDO]

1. Redirecionamento de portas [RESOLVIDO]

Darlei Fabricio Pereira
dfpereira

(usa Debian)

Enviado em 05/12/2007 - 15:37h

Boa tarde!
Tenho um servidor de testes com Debian instalado e coloquei um regra no iptables para redirecionar as conexões na porta 3389, para uma determinada máquina na rede local.

A regra foi a seguinte:
iptables -t nat -I PREROUTING -d 192.168.1.86 -p tcp --dport 3389 -j DNAT --to-destination 192.168.1.29:3389

onde: 192.168.1.86, é o IP da rede interna do meu servidor de testes.
192.168.1.29, é a máquina que eu quero redirecionar os pacotes.

Detalhes: isso é só um teste dentro da rede interna, justamente pra testar a regra do iptables. O serviço na máquina destino está rodando perfeitamente.

Fiz algo errado, ou isso não funcionaria na rede interna??

Obrigado!


  


2. MELHOR RESPOSTA

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 05/12/2007 - 15:56h

Esta dúvida, inclusive, é bem reincidente e difícil de entender o motivo, mas NÃO FUNCIONA. Vou ver se consigo formalizar uma explicação fácil de entender até para usar como referência para outras perguntas.

Tens o seguinte cenário (hipotético):

Maq A (10.1.0.2) Maq B (10.1.0.3)

Roteador (10.1.0.1)

Máq A e Maq B estão no mesmo domínio de broadcast, logo se comunicam SEM GATEWAY, sem passar pelo roteador (DIRETO)

Digamos que eu coloquei a seguinte regra no roteador, direcionando a porta 3339 para a máquina B:

iptables -t nat -I PREROUTING -d 10.1.0.1 -p tcp --dport 3389 -j DNAT --to-destination 10.1.0.3:3389
(quase igual a sua)

Acontece que quando a máquina A for enviar um pacote para a 10.1.0.1 na porta 3389, o roteador VAI FAZER SIM O NAT. Vamos chamar este pacote de PACOTE A:

Dados do pacote A:
Ip origem: 10.1.0.2
Ip destino: 10.1.0.1
Porta Origem: XX
Porta Destino: 3389

O pacote A passa pelo roteador e é alterado pela regra do Iptables virando o que vamos chamar de pacote A1:

Dados do pacote A1:
Ip origem: 10.1.0.2
Ip destino: 10.1.0.3 (O roteador TROCOU)
Porta Origem: XX
Porta Destino: 3389

É o pacote A1 quem chega na máquina B. A máquina B aceita o pacote e o responde. Contudo como a origem (10.1.0.2) é rede local a máquina B não usa o gateway!! Ela responde DIRETO para máquina A no que irei chamar de pacote A1R (resposta do pacote A1):

Dados do pacote A1R:
Ip origem: 10.1.0.3
Ip destino: 10.1.0.2
Porta Origem: 3389
Porta Destino: XX

Ora, a máquina A simplesmente joga fora este pacote pois NUNCA estabeleceu contato com o IP 10.1.0.3 na porta 3389! Ela o fez com o 10.1.0.1 e continua aguardando o que ela entende ser a resposta do pacote A (vindo do 10.1.0.1!!!)

Isto acontece porque a RESPOSTA não passa pelo roteador, que seria o cara que faria a troca novamente (ele se lembra do que trocou e destroca no retorno).

Logo, NÃO FUNCIONA!!

Algumas gambiarras poderiam ser feitas como um duplo nat onde o roteador também troca o seu IP de origem, mas ai já é bruxaria.

3. Re: Redirecionamento de portas [RESOLVIDO]

Darlei Fabricio Pereira
dfpereira

(usa Debian)

Enviado em 05/12/2007 - 16:18h

Cara, sua explicação foi ótima, faz total sentido!
Não sei como não tinha pensando nisso antes, parece muito óbvio agora!
Obrigado e parabéns pela didática!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts