[FUG-BR] PF com RDR na externa mas para acesso pela rede interna

Félix fprasera em gmail.com
Quinta Setembro 24 17:24:52 BRT 2015


    Boa tarde.

    Provavelmente está acontecendo o seguinte problema neste acesso:
    A estação 192.x.x.96 manda um pacote para 201.x.x.131.
    O FreeBSD então direciona o pacote de 192.x.x.96 para 192.x.x.60
    O servidor 192.x.x.60 recebe o pacote e tenta responder para 192.x.x.96.
    Mas a estação 192.x.x.96 está esperando a resposta de 201.x.x.131 que 
foi onde ela tentou conectar e não de 192.x.x.60, por isso ela descarta o 
pacote.

    Se for este o caso tem duas formas de resolver este problema.
    A primeira é utilizar um dns interno diferente do externo de forma que o 
dns interno responda por um nome como servico.minhaempresa.com.br e aponte 
para 192.x.x.60 e o dns externo aponte este mesmo dns para 200.x.x.131, e ao 
invés de conectar pelo ip conectar pelo endereço DNS.
    A segunda alternativa é o FreeBSD quando direcionar o pacote da rede 
interna para o servidor na porta 7070 tambem fazer nat, desta forma o 
retorno da estação será para o FreeBSD que deverá traduzir os endereços 
corretamente.

    Félix


-----Mensagem Original----- 
From: Rafael Chagas Pelegrineli
Sent: Thursday, September 24, 2015 4:27 PM
To: freebsd em fug.com.br
Subject: [FUG-BR] PF com RDR na externa mas para acesso pela rede interna

Boa tarde.    Tenho um FreeBSD 8.4 com PF e o utilizo como gateway na 
empresa, então o forward está habilitado e o firewall rodando com NAT da 
rede interna para externa traduzindo para o endereço externo do servidor, e 
RDR de portas específicas no endereço externo para endereços internos na 
rede. O problema é uma máquina interna acessar uma porta específica 
utilizando o IP externo como destino, mas que tem um RDR para outra máquina 
na rede interna.

Ex: Tenho um servidor com endereço 192.x.x.60 com um serviço rodando na 
porta 7070. No gateway tenho uma regra que redireciona os acessos ao 
endereço externo 200.x.x.131 na porta 7070 para o servidor interno 
192.x.x.60 na porta 7070. Mas se uma máquina na rede interna com endereço 
192.x.x.96 precisar acessar o serviço utilizando o IP externo 201.x.x.131 na 
porta 7070, o RDR não funciona.
Regras do firewall com relação a esse 
problema:================================================ext_if0="re2"ext_addr0="200.x.x.131"ext_net="{ 
200.x.x.128/26}"

int_if0="re0"int_addr0="192.x.x.1"int_net="{ 192.x.x.0/16 }"
set fingerprints "/etc/pf.os"set block-policy returnscrub in allset skip on 
lo0

nat pass on $ext_if0 from any to any -> $ext_addr0

rdr pass on $ext_if0 proto tcp from any to $ext_addr0 port 7070 -> 
192.x.x.60
pass out allblock in on $ext_if0 all

=================================================
Se estou em um computador fora da rede, um telnet para 200.x.x.131 7070 
funciona, mas dentro da rede não.Alguma dica?
Rafael Chagas Pelegrineli
-------------------------
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd 



Mais detalhes sobre a lista de discussão freebsd