[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