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

Rafael Aquino rafael em lk6.com.br
Quinta Setembro 24 17:29:36 BRT 2015



----- Mensagem original -----
> De: "Rafael Chagas Pelegrineli" <rafpelegri em yahoo.com.br>
> Para: "Lista Brasileira de Discussão sobre FreeBSD" <freebsd em fug.com.br>
> Enviadas: Quinta-feira, 24 de setembro de 2015 16:27:35
> Assunto: [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


Oi, 

O melhor seria usar DNS com view.... Mas se não tem outra saída, este tipo de cenário eu costumava fazer direto com 
pf assim:

no nat on $int_if proto {tcp, udp} from $int_if to <rede_interna>
nat on $int_if proto {tcp, udp} from <rede_interna> to $ip_interno port 8080 -> $int_if
rdr on $int_if proto tcp from <rede_interna> to $ip_externo port 8080 -> $ip_int_if port 8080

Assim tu consegue injetar, através de um NAT específico na interface interna, o pacote de volta pra rede interna.

Tenta colocar isso no pfsense.

(A porta 8080 é do exemplo, claro... ;-)

Abraço!


---
Rafael Mentz Aquino
LK6 Soluções em TI
Rua Domingos de Almeida, 135 sala 1102
Centro - Novo Hamburgo - RS
(51) 3065-6001 - 9999-7030
www.lk6.com.br
Catálogo Virtual: http://www.youblisher.com/p/1205960-LK6-TI/


Mais detalhes sobre a lista de discussão freebsd