Erro - Direcionamento de porta

1. Erro - Direcionamento de porta

Marcelo Medeiros
Spym4n_m

(usa CentOS)

Enviado em 18/11/2011 - 08:59h

Bom dia a todos!

Estou com uma dúvida que já persiste há um bom tempo e não consigo fazer funcionar.

Tenho um servidor Tomcat na minha rede interna, que escuta na porta 80. Preciso disponibilizar esse acesso externamente, mas em outra porta. Resumidamente, seria assim:

O usuário externo vai acessar meu IP externo na porta 8086 e o firewall vai direcionar a solicitação na porta 80 do meu servidor interno. A regra que eu uso é a seguinte:

$IPTABLES -t nat -A PREROUTING -i eth2 -p tcp --dport 8086 -j DNAT --to 192.168.0.121:80
$IPTABLES -t nat -A POSTROUTING -d 192.168.0.121 -p tcp --dport 8086 -j SNAT --to $IP_PUB
$IPTABLES -A FORWARD -p tcp -i $IF_PUB --dport 8086 -d 192.168.0.121:80 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -i $IF_LAN --sport 8086 -s 192.168.0.121:80 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $IF_PUB -p tcp --dport 8086 -j DNAT --to 192.168.0.121:80
$IPTABLES -t nat -A POSTROUTING -o $IF_PUB -p tcp --dport 8086 -j SNAT --to 192.168.0.121:80

Sendo:
$IF_PUB = Interface ligada à Internet (eth2)
$IF_LAN = Interface ligada a rede interna (eth1)
$IP_PUB = Meu IP externo

Minha saída do comando iptables -t nat -L mostra o seguinte (mostrando apenas o importante):

Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere anywhere tcp dpt:8086 to:192.168.0.121:80

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT tcp -- anywhere spe-srv-gpr.grupospecto.intranet tcp dpt:8086 to:189.90.54.210
SNAT tcp -- anywhere anywhere tcp dpt:8086 to:192.168.0.121:80

Alguem pode dar uma dica do que pode estar errado? Já pesquisei demais e nenhuma solução me ajudou.

Um abraço a todos!



  


2. Direcionamento de porta

Ivan Carlos dos Santos
ivancsantos

(usa Debian)

Enviado em 18/11/2011 - 17:00h

Boa tarde amigo!

Tente assim:

$IPTABLES -t nat -A PREROUTING -i eth2 -p tcp --dport 8086 -j DNAT --to 192.168.0.121:80
$IPTABLES -A FORWARD -p tcp -i eth2 --dport 80 -d 192.168.0.121:80 -j ACCEPT

OBS: editei a regra FORWARD (19/11 09:44h) para corrigir a porta que deve ser 80.

Supondo que sua eth2 seja a interface externa (internet)...


Voce também precisa ter uma regra para liberar pacotes de resposta, caso não tenha é só adicionar:
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


Espero ter ajudado,


Att,
Ivan Santos


3. Re: Erro - Direcionamento de porta

leonardo Souza
lejoso

(usa Debian)

Enviado em 19/11/2011 - 08:06h

Bom Dia,

Troque o seguinte:

$IPTABLES -A FORWARD -p tcp -i $IF_PUB --dport 8086 -d 192.168.0.121:80 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -i $IF_LAN --sport 8086 -s 192.168.0.121:80 -j ACCEPT



Por

$IPTABLES -A FORWARD -p tcp -i $IF_PUB --dport 80 -d 192.168.0.121:80 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -i $IF_LAN --sport 80 -s 192.168.0.121:80 -j ACCEPT


Motivo: No pre-routing da tabela nat a porta de destino foi alterada de 8086 para 80, com isso quando o pacote chegar na chain de Forward da tabele Filter, a porta que tem que ser liberada será a porta 80.


Att,

Leonardo Souza


4. Re: Erro - Direcionamento de porta

Ivan Carlos dos Santos
ivancsantos

(usa Debian)

Enviado em 19/11/2011 - 09:43h

lejoso escreveu:

Bom Dia,

Troque o seguinte:

$IPTABLES -A FORWARD -p tcp -i $IF_PUB --dport 8086 -d 192.168.0.121:80 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -i $IF_LAN --sport 8086 -s 192.168.0.121:80 -j ACCEPT



Por

$IPTABLES -A FORWARD -p tcp -i $IF_PUB --dport 80 -d 192.168.0.121:80 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -i $IF_LAN --sport 80 -s 192.168.0.121:80 -j ACCEPT


Motivo: No pre-routing da tabela nat a porta de destino foi alterada de 8086 para 80, com isso quando o pacote chegar na chain de Forward da tabele Filter, a porta que tem que ser liberada será a porta 80.


Att,

Leonardo Souza


Correto... e fiz confusão na segunda regra!
Obrigado pela correção :)


5. Re: Erro - Direcionamento de porta

Marcelo Medeiros
spym4n_m

(usa CentOS)

Enviado em 21/11/2011 - 10:46h

ivancsantos escreveu:

lejoso escreveu:

Bom Dia,

Troque o seguinte:

$IPTABLES -A FORWARD -p tcp -i $IF_PUB --dport 8086 -d 192.168.0.121:80 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -i $IF_LAN --sport 8086 -s 192.168.0.121:80 -j ACCEPT



Por

$IPTABLES -A FORWARD -p tcp -i $IF_PUB --dport 80 -d 192.168.0.121:80 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -i $IF_LAN --sport 80 -s 192.168.0.121:80 -j ACCEPT


Motivo: No pre-routing da tabela nat a porta de destino foi alterada de 8086 para 80, com isso quando o pacote chegar na chain de Forward da tabele Filter, a porta que tem que ser liberada será a porta 80.


Att,

Leonardo Souza


Correto... e fiz confusão na segunda regra!
Obrigado pela correção :)


Pessoal, obrigado pelo Reply!

Tentei usar as dicas, minha regra ficou assim:

$IPTABLES -A FORWARD -p tcp -i $IF_PUB02 --dport 80 -d 192.168.0.121:80 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -i $IF_LAN --sport 80 -s 192.168.0.121:80 - ACCEPT
$IPTABLES -t nat -A PREROUTING -i $IF_PUB02 -p tcp --dport 8086 -j DNAT --to 192.168.0.121:80

E mesmo assim ainda não consigo conectar de fora da rede usando http://IP-EXTERNO:8086.

Mais alguma dica???

Abraços




6. Re: Erro - Direcionamento de porta

Ivan Carlos dos Santos
ivancsantos

(usa Debian)

Enviado em 21/11/2011 - 15:44h

Boa Tarde!
Não sei se é isso, pois não tenho como fazer um teste agora, mas não custa tentar:

Nas suas regras de FORWARD voce filtrou pacotes na porta 80 (--dport 80) e com destino ao ip do servidor (-d 192.168.0.121:80) informando a porta novamente. Não sei se é realmente isso, mas foi a unica coisa que achei estranha na regra, tente tirar esse :80 ficando assim "-p tcp --dport 80 -d 192.168.0.121"


Fica como dica também, se voce substituir sua segunda regra, a que permite pacotes de resposta, pela aquela que informei no primeiro post, assim não terá que fazer essa regra toda vez que for publicar um serviço :)


Abraço!


Att,
Ivan Santos


7. Re: Erro - Direcionamento de porta

Marcelo Medeiros
spym4n_m

(usa CentOS)

Enviado em 24/11/2011 - 15:05h

Ivan e Lejoso!

Muito obrigado pela ajuda de voces!

A regra funcionou direitinho agora, realmente a regra Forward tava errada. A porta já tinha sido alterada, então tinha que ser a 80. A regra ficou assim (Estou postando para ajudar outros que talvez tenham a mesma dúvida):


$IPTABLES -A FORWARD -p tcp -i $IF_PUB02 --dport 80 -d 192.168.0.121 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -i $IF_LAN --sport 80 -s 192.168.0.121 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $IF_PUB02 -p tcp --dport 8086 -j DNAT --to 192.168.0.121:80

Sendo,

IF_PUB02 = Interface conectada na Internet;
$IF_LAN = Interface interna;

Agradeço muito a ajuda de todos!

Um abraço!








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts