Redirecionar portas entre servidores. [RESOLVIDO]

1. Redirecionar portas entre servidores. [RESOLVIDO]

Walber Santos
walber

(usa CentOS)

Enviado em 26/01/2009 - 21:36h

Pessoal sei que existe muitas dicas aki no vol mais nenhuma delas funfou pra mim, seguinte:

tenho o servidor 192.168.1.7 e outro com 192.168.1.99 então quero que toda requisição que vier da minha rede interna no 192.168.1.7 na porta 22 seja redirecionado para o 192.168.1.99, alguém pode me dar uma dica?


Obrigado a todos.


  


2. MELHOR RESPOSTA

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 29/01/2009 - 11:19h

Pessoal, nada disto irá funcionar!

O problema dele é CLÁSSICO. Está fazendo nat interno para a rede interna.

Difícil explicar. Eu coloquei uma vez uma vasta explicação neste tópico: http://www.vivaolinux.com.br/topico/netfilter-iptables/Redirecionamento-de-portas-2/

o qual reproduzo aqui:
======================================================

elgio
(usa openSUSE) Enviado em 05/12/2007 - 15:56h:
NÃO FUNCIONA!

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).
======================================================

A solução para este problema podem ser DUAS;
a) usar o utilitário redirect: ele é diferente do iptables, pois abre uma porta local e trabalha no nível de aplicação.

b) usar um duplo nat: esta eu reproduzo para o teu caso:
(considerando eth0 como placa da rede interna. Altere se não for. Regras a serem colocadas no iptables 192.168.1.7. Não pode ser no gateway, pois o tráfego interno de 192.168.1.X não passará pelo gateway e tu disse que quer redirecionar o tráfego da rede interna. Imagino que rede interna seja 192.168.1.X)

iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to 192.168.1.99
iptables -t nat -I POSTROUTING -o eth0 -p tcp -d 192.168.1.99 --dport 22 -j MASQUERADE



3. Re: Redirecionar portas entre servidores. [RESOLVIDO]

Rafael Arcanjo
ST. RaLF

(usa Arch Linux)

Enviado em 26/01/2009 - 21:51h

Primeiro você adiciona este linha do firewall
iptables -t nat -A PREROUTING -s 192.168.1.7 -p tcp --dport 22 -j DNAT --to-destination 192.168.1.99

Ai depois libera o redirecionamento:
iptables -A FORWARD -s 192.168.1.99 -p tcp --dport 22 -j ACCEPT


4. Num deu

Walber Santos
walber

(usa CentOS)

Enviado em 26/01/2009 - 21:56h

Fiz isso mais ainda assim só acesso o 192.168.1.7 ele não está redirecionando para o 192.168.1.99.


5. Re: Redirecionar portas entre servidores. [RESOLVIDO]

Rafael Arcanjo
ST. RaLF

(usa Arch Linux)

Enviado em 26/01/2009 - 22:04h

Já tentou acompanhar o log do iptables?


6. Ok, vou verificar.

Walber Santos
walber

(usa CentOS)

Enviado em 26/01/2009 - 22:26h

Obrigado.


7. Re: Redirecionar portas entre servidores. [RESOLVIDO]

Rafael Arcanjo
ST. RaLF

(usa Arch Linux)

Enviado em 27/01/2009 - 11:14h

Qualquer coisa, posta ai o script do firewall, pois o que você deseja talvez esteja ficando em uma outra regra.

Até.


8. Re: Redirecionar portas entre servidores. [RESOLVIDO]

Tiago Silva
tasilva

(usa Fedora)

Enviado em 27/01/2009 - 15:08h

Walber, eu não entendi direito, vc quer acessar a maquina 192.168.1.99 da sua casa, por exemplo, de uma rede externa, mas tem um gateway na frente dela 192.168.1.7, é isso? Se for isso então no gateway tente:

iptables -t nat -I PREROUTING -s (ip_fonte) -d (ip_destino) -p TCP --dport 22 -j DNAT --to 192.168.1.99


9. Obrigado a todos.

Walber Santos
walber

(usa CentOS)

Enviado em 29/01/2009 - 13:08h

E elgio, explicação muito boa, irei testar hoje e posto o resultado.

Obrigado


Walber Santos


10. Re: Redirecionar portas entre servidores. [RESOLVIDO]

Jefferson Luíz Fernando de Oliveira
jeffbr

(usa Suse)

Enviado em 29/01/2009 - 13:25h

tenta o rinetd
super simples
origem porta destino porta
0.0.0.0 8080 192.168.1.X 8181


11. Re: Redirecionar portas entre servidores. [RESOLVIDO]

Jefferson Luíz Fernando de Oliveira
jeffbr

(usa Suse)

Enviado em 29/01/2009 - 13:39h

Elgio

Muito interessante o seu duplo NAT, realmente não conhecia e funciona muito bem.

abs



12. Funcionou em partes

Walber Santos
walber

(usa CentOS)

Enviado em 29/01/2009 - 15:05h

Elgio fiz os testes e o resultado foi esse:
Onde o ip para onde seria redirecionado era o ip 192.168.1.200

Saida do tcpdump no endereço onde as regras fora aplicadas: 192.168.1.110


13:50:42.425733 IP linuxpower.34200 > 192.168.1.200.ssh: . ack 262977 win 3075 <nop,nop,timestamp 24586751 1375420066>
13:50:42.425953 IP linuxpower.34200 > 192.168.1.200.ssh: . ack 263137 win 3075 <nop,nop,timestamp 24586751 1375420066>


Saida do tcpdump no servidor de destino que no caso é o 192.168.1.200

13:46:54.043663 IP 192.168.1.110.34200 > hades.ssh: . ack 55185441 win 3075 <nop,nop,timestamp 24587698 1375421013>
13:46:54.043875 IP 192.168.1.110.34200 > hades.ssh: . ack 55185601 win 3075 <nop,nop,timestamp 24587698 1375421013>

Com isso realmente esta sendo redirecionando, porém ele entra no loop de pacotes até da "connection refused"


O que será que está ocorrendo de errado?



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts