Redirecionamento de portas

1. Redirecionamento de portas

Luciano José Cardoso Ferreira
ljcferreira

(usa RedHat)

Enviado em 21/09/2007 - 17:05h

Boa tarde Galera
Estou com gande problema aqui na minha empresa.
Assim... possuo uma pequena rede e atraz de um firewall tenho um servidor web rodando. As pessoas de fora acessam normalmente o meu site e o sistema, porém quando alguma máquina de dentro da minha rede tenta acessa esse site e o sistema ele simplesmente não carrega. Se eu digitar o endereço ip do servidor interno funciona certinho, mas se digitar a url do meu site ele não funciona.
Acredito que precise configurar alguma coisa e até o momento ainda não consegui....
Se alguém souber ficaria muito feliz...


  


2. Re: Redirecionamento de portas

Leandro Totino Pereira
tatototino

(usa Slackware)

Enviado em 21/09/2007 - 17:21h

Para rede interna você precisaria configurar um servidor DNS, caso já tenha um, ve se está resolvendo os nomes com o comando nslookup,dig ou outro.
E também veja qual é o erro no "/var/log/messages"

um abraço


3. firewall

Juno Kim
juno

(usa Linux Mint)

Enviado em 24/09/2007 - 11:53h

Cara,
Por acaso você não tem nenhuma regra no seu firewall que bloqueie acesso à porta onde roda o seu sistema ?

Falou =)


4. Vamos ver se entendi

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 24/09/2007 - 12:10h

Tu tem na tua rede INTERNA um servidor WEB, possivelmente usando ip privado (192. 10. 172.16).

Os teus usuários TAMBÉM estão na rede Interna, certo?

No teu firewall tens um NAT que redireciona a porta 80 para o ip privado do servidor.

É este o cenário?

Se for, já era.
Não funciona.

Porque quando o cliente interno RESOLVE o nome (DNS) o resolve para um Ip público, logo precisa usar o gateway. Ao passar pelo gateway o mesmo faz NAT, jogando o pacote de volta para dentro da rede . Só que como servidor e cliente estão na mesma rede, o servidor vai querer responder DIRETO ao cliente, com o seu ip privado. O cliente reseta, pois nunca iniciou nada com ele (não com aquele IP).

Soluções:
1) não realizar NAT se o origem for a tua rede INTERNA

2) Configurar o teu DNS para que entregue o ip PRIVADO quando a requisição for para a rede interna.



5. Detalhes da solução 2

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 24/09/2007 - 12:14h

Se eu acertei no cenário, então no servidor tu deve ter uma regra mais ou menos assim:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to IP-DO-SERVIDOR

Acertei??

Se for, mude ela para:

iptables -t nat -A PREROUTING -i PLACA-QUE-VEM-DA-INTERNET -s ! IPS-REDE-INTERNA -p tcp --dport 80 -j DNAT --to IP-DO-SERVIDOR


Exemplo:

iptables -t nat -A PREROUTING -i eth0 -s ! 192.168.0.0/24 -p tcp --dport 80 -j DNAT --to IP-DO-SERVIDOR

Se ele NÃO FIZER redir da conexão do teu cliente, o nat não vai acorrer e o pacote vai chegar no servidor com o IP real do cliente. O servidor ainda vai responder direto, mas como os ips estão certos, vai funcionar.



6. Ajuda

Luciano José Cardoso Ferreira
ljcferreira

(usa RedHat)

Enviado em 25/09/2007 - 22:10h

Muito Obrigado Elgio.
Mas é assim...
O meu Firewall esta com o IP Publico, e o meu servidor web esta na mesma classe de ip da minha rede local atraz do firewall.
O meu firewal também é a minha porta de saida para a internet sendo ele o meu gatway e o DNS,
tenho uma regra que redireciono tudo o que chega na interface eth1 fazendo o proxy transparente.
Depois faço o nat da interface eth1 para a eth0 mascarando o mesmo, onde eth1 é a minha LAN e eth0 minha rede WAN que esta conectado o IP Público.
Então pra quem acessa de fora a requisição cai na eth0 faz o nat para a eth1 e o iptables redireciona para a porta e endereço de ip correto do meu servidor web.
O problema é quando uma máquina de dentro da minha rede local,(mesma classe do servidor) digita no browser o endereço do meu site, nesse momento o browser não responde mais.
Mas todos os outros sites funcionam normalmente

Abraços pela ajuda... e se tiver algo pra complementar.... aguardo


7. Re: Redirecionamento de portas

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 26/09/2007 - 08:55h

Então é exatamente o problema que imaginei.

O NATEADO não tem o ip de origem trocado, apenas o de destino. Quem bate na eth0 (ex: IP 200.x.y.z) vai continuar sendo 200.x.y.z mas o ip de destino é que muda para o ip privado.

Só que quando vem DA REDE INTERNA (ex: servidor em 10.1.1.5, cliente em 10.1.1.6), o cliente 10.1.1.6 resolve o DNS para o IP público do servidor (201.x.y.z). O pacote vai para o gateway da seguinte forma:

IP Origem: 10.1.1.6 (ip do cliente)
IP Destino: 201.x.y.z (ip PUBLICO do servidor)

Quando passa pelo gateway, ele é nateado como todas as outras requisições e devolvido ao servidor:

Ip origem: 10.1.1.6 (ip do cliente)
Ip destino: 10.1.1.5 (ip PRIVADO do servidor)

Chega no servidor!
Só que quando responde, o servidor vai fazer DIRETO ao 10.1.1.6, que vai jogar fora pois não está esperando resposta de 10.1.1.5, mas sim de 201.x.y.z!!

Entendeu o problema.
Agora a solução...


8. Solução 1: DNS

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 26/09/2007 - 08:57h

A primeira solução e a mais elegante é do configurar o teu DNS para que responda 10.1.1.5 quando perguntarem o IP do nome do servidor. Mas tem que responder apenas para os clientes internos, sendo que os clientes externos devem continuar resolvendo para o IP público.

Assim, quando o cliente resolver o nome, vai resolver direto para 10.1.1.5 e não vai nem tentar enviar para o gateway.

Esta solução é boa porque o trafego fica todo local, não passa pelo gateway, o que seria um desperdício já que ambos estão LADO a LADO.

Já interegi com um outro amigo do BOL que teve extamente este problema e ele resolveu por DNS.



9. Solução 2: Separar as redes

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 26/09/2007 - 09:00h

Até por questões de segurança é interessante que o servidor esteja em uma outra rede, mesmo que ainda privada.

Veja, o problema está que a IDA passa pelo gateway, mas a resposta vem direto ao cliente com IP errado.

Se tudo, ida e volta, tiverem que passar pelo gateway (caso onde clientes e servidores estão em redes distintas) o problema não vai acontecer.

Para por em outra rede tu pode ou ter uma outra placa de rede e criar vlans no teu swtich ou usar o maravilhoso mundo do 802.1q (onde tu não precisa de novas placas de rede). Linux suporta 802.1q, só tem que ver se teus switches também suportam.


10. Solução 3: MAIS NAT

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 26/09/2007 - 09:07h

Esta solução é suja, e deveria ser usada apenas como paleativo. Ainda como não tenho como reproduzir o cenário aqui, não estou bem certo se as regras seguintes são suficientes.

A idéia é fazer um SNAT exclusivo para este caso, além do DNAT que já ocorre. É suja porque acaba fazendo com que tudo passe pelo gateway. A mais elegante, como disse, é por DNS.

Mas seria assim:
eth0: Internet
eth1: Interna
Gw interno: 10.1.0.1
servidor Publico: 201.x.y.z
servidor privado: 10.1.1.5
Clientes: 10.1.1.0/24

iptables -t nat -I POSTROUTING -o eth1 -s 10.1.1.0/24 -d 10.1.1.5 -j SNAT --to 10.1.0.1

Por ir no POSTROUTING, quer dizer que o PREROUTING já ocorreu e o ip público DE DESTINO 201.x.y.z já foi trocado para o ip privado 10.1.1.5. Agora se troca TAMBÉM o Ip de origem para o do gateway obrigando o servidor a responder PARA O GATEWAY que vai desfazer os DOIS NATS...

É NINJA e como disse NÃO SEI SE FUNCIONA!

Como aplicar esta solução é rápido, tenta ai e me dá um retorno. Mesmo que depois, com tempo, tu implemente uma solução melhor SEM NAT.

No aguardo


11. Vamos lá...

Luciano José Cardoso Ferreira
ljcferreira

(usa RedHat)

Enviado em 27/09/2007 - 09:23h

Valeu mesmo pelas dicas...
Hoje a tarde 27/09/2007 mais tardar amanha estarei colocando essa regra no meu iptables.
Mas já adiantando, como faria para configurar pela primeira solução, a Mais elegante... não tenho ideia de como se faça...
Abraços e Muito Obrigado, e é por isso que gosto do linux...


12. Re: Redirecionamento de portas

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 27/09/2007 - 10:49h

Não sei não o caminho das pedras para fazer isto no DNS, porque nunca precisei.

Mas terias que entregar o ip privado apenas para teus clientes e o publico para a internet.

To vendo se encontro esta dica aqui no VOL



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts