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@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
-------------------------
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd

Responder a