Port Forward - Liberando uma porta interna



  • Olá !

    Sou novo com o pfSense, mas tenho relativa experiência com FreeBSD.
    Estou tentando fazer algo que pode ser simples, mas não estou conseguindo.
    Desejo abrir e direcionar uma porta do gateway com pfSense para um IP da rede interna.
    No gateway anterior sempre fiz isto com o RINETD, muito simples e prático.

    Bem, até então o que fiz:

    1. Criei um NAT - Port Forward:
      WAN TCP * * WAN address 5900 (VNC) 192.168.0.50 5900 (VNC)  (O IP 192.168.0.50 é o IP interno da rede. 5900 é a porta a ser liberada).

    2. Crie uma regra de liberação da porta:
      PASS IPv4 TCP * * WAN address 5900 (VNC) * none   (Liberando o acesso externo na porta 5900)

    3. Em SYSTEM - ADVANCED - habilitei a opção: "NAT Reflection mode for port forwards"

    4. Na interface WAN desabilitei as opções:
          Block private networks e Block bogon networks.

    Ao tentar verificar se a porta está aberta, com o comando, nmap IP_GATEWAY -p 5900, ele identifica que a porta não está aberta, enquanto que, no outro gateway com o RINETD ele apresenta a porta como Aberta.

    O que pode estar faltando para habilitar esta porta para a rede externa ?
    Estou usando o pfSense 2.1.4.

    Grato pela ajuda desde já,
    Marcone



  • Boa noite marcone,

    Para seu cenário, as opções 2, 3 e 4 são desnecessárias.

    2- Quando voce cria um nat do tipo forward, por padrão ele ja cria a regra de liberação na interface que foi feito o nat, no caso a WAN;

    3- NAT Reflection é para situações que voce esta dentro de sua rede interna e precise sair na interface wan fazer o nat e refletir de volta para sua rede interna. **eu acho :D  mas tenho certeza que voce nao precisa.

    4- Block private networks e Block bogon networks são para bloquear origens com endereços de rede privada e redes bogons. Para verificar se sua rede não está na tabela de rede bogons (que eu acho dificil está) acesse "Diagnostics > Tables > boggons" ou http://ip_meu_pfsense/diag_tables.php?type=bogons.

    O nmap não é uma boa forma de testar, pois a porta em questão pode esta liberada, mas o icpm (utilizado pelo nmap entre outros) pode está bloqueado.

    Faça as seguintes analises por favor:

    1- verifique se não tem um regra acima bloqueando o trafego em questão;
    2- verifique se o cliente (onde esta instalado o vnc) em questão está setado o gateway do pfsense;
    3- verifique se o firewall do cliente em questão não está bloqueando requisições partindo de redes externas. (no windows firewall - Publico);
    4- verifique se o antivírus o cliente em questão não está bloqueando requisições partindo de redes externas.

    aguardamos sua resposta

    abraços.

    att,

    Bruno Pinheiro.



  • Olá Bruno, bom dia !

    Lhe agradeço pela resposta.
    Primeiramente excluí as opção que não são necessárias, uma vez que a liberação já seria feita pelo NAT, conforme mencionado.

    As análises feitas:
    1 - Verifique se não tem uma regra acima bloqueando:

    • Não tenho outras regras, apenas 1 liberando o ICMP e outra liberando a porta 80:
      PASS WAN IPv4 TCP * * * 80 (HTTP) * none
      PASS WAN IPv4 ICMP * * * * * none  
      Acima destas não tenho outras regras.

    2 - Verifique o gateway do cliente:

    • OK. O mesmo está com o gateway do pfSense.

    3 e 4 - Firewall e Antivirus do cliente:

    OK. O mesmo consigo acessar por VNC de outra máquina interna e também pelo gateway atual.

    Para tentar simular melhor se o pfSense está ou não bloqueando a porta, coloquei outro computador na rede externa e tentei fazer o acesso pela aplicação. Assim não precisei usar o NMAP. Mas também não tive êxito. Mas ao colocar o IP do gateway atual, ele consegue acessar.

    Alguma outra indicação ou configuração que poderia fazer ?

    Retomando, o NAT está assim configurado:
    WAN TCP * * WAN address 5900 (VNC) 192.168.0.50 5900 (VNC)

    Obrigado,
    Marcone



  • Bom dia amigo,

    diga-me uma coisa.

    sabendo que seu firewall tem um IP wan e um gateway wan nessa rede wan, qual é o endereço que voce coloca na aplicação?

    1- Gateway da WAN
    2- IP address da WAN

    aguardo,

    Att,

    Bruno Pinheiro.



  • Olá !

    Segue a estrutura:

    Gateway atual - IP WAN 10.40.4.1, IP LAN 192.168.0.1, GW 10.40.4.10

    Gateway Novo, com pfSense - IP WAN 10.40.4.7 IP LAN 192.168.0.2, GW 10.40.4.10

    Máquina com VNC na rede interna: IP 192.168.0.50, GW: troquei para 192.168.0.2 (novo Gateway, antes era 192.168.0.1).

    Configurei outro computador na rede 10.40.x.x com IP 10.40.4.34/255.255.255.0, GW 10.40.4.10.
    Através deste tentei acessar o 192.168.0.50, mas utilizando o IP 10.40.4.7 para a conexão.

    Assim, respondendo, coloco o IP da WAN para tentar fazer a conexão com a máquina interna, e não o gateway do meu firewall.

    Abraço,
    Marcone



  • Confirme se ficou dessa forma então: (considerando que o cliente 192.168.0.50 possui o gateway 192.168.0.2)

    origem                    tipo                destino

    10.40.4.34                  >                10.40.4.7              Funciona???????

    Maquina de teste      acesso        pfsense novo

    aguardo.

    att,

    Bruno Pinheiro



  • Olá Bruno,

    Isto mesmo.
    10.40.4.34 é o computador que irá acessar.
    10.40.4.7 é o pfSense.

    Mas ao tentar conectar nesta porta, não conecta.

    Abraço,
    Marcone



  • Entendi, quanto ao antivirus e firewall, ele pode ter contexto que libere somente IPs da rede interna, mas não IPs de outra rede. Não sei se pode ser isso. Em fim, para entender melhor, post aqui a saida dos seguintes comandos: (se possivel, salve tudo em um bloco de notas para nao ficar poluido aqui).

    netstat -rn
    pfctl -s nat
    pfctl -s rules

    aguardo,

    att,

    Bruno Pinheiro



  • Olá Bruno,

    Segue o arquivo anexado.
    Uma observação:
    Além das 2 redes já comentadas, tenho um outro link paralelo, cujo rede é a 10.10.17.x.

    Obrigado,
    Marcone

    pfsense.txt



  • Bom dia Marcone,

    O pfsense para não ter problema com muilt-wan, ele tem uma função chamada reply-to (adiciona em todos os pacotes entrantes pela wan). Essa função é automatica para interfaces (interfaces, não confuda com rules, pois ambos tem a opção de gateway) configuradas com gateways. Dessa forma, todo pacote será marcado com um gateway (10.40.4.10), assim ele vai desconsiderar a tabela de roteamento do sistema e mandar o pacote (na volta) para gateway 10.40.4.10 em vez de 10.40.4.34. Esse NAT somente funcionara se voce estiver atras do 10.40.4.10 (como tivesse na internet). Para fins de testes, faça assim, navegue até a 'Interface > wan" e remova o gateway. Ou então navegue até a RULE (Firewall > Rules > WAN-10.40.4.0) criada por esse NAT e em "Advanced features" marque a seguinte opção "This will disable auto generated reply-to for this rule."

    Regra criada pelo NAT no seu PFSENSE:

    pass in quick on bce0 reply-to (bce0 10.40.4.10) inet proto tcp from any to 192.168.0.204 port = 5900 flags S/SA keep state label "USER_RULE: NAT "

    att,

    Bruno Pinheiro



  • Olá Bruno, bom dia !

    Grato pelo seu retorno.
    Segui suas orientações: Desmarquei o Gateway para a WAN e habilitei a opção "This will disable auto generated reply-to for this rule.", dentro da regra do NAT, que direciona para o IP interno.
    Assim fiquei sem gateway para esta interface.

    Ao executar o comando "pfctl -s rules", a regra citada por você sumiu.

    Realizei os mesmos testes, conectei uma máquina com IP 10.40.4.34, mas da mesma forma, não conectou com a máquina interna pelo VNC. Algo mais que poderia ser feito ? Alguma outra porta também não precisa ser liberada ?

    Obrigado,
    Marcone



  • Tem sim, vamos depurar mais  8)  hehe

    na verdade era uma das duas opções, ou remover o gateway ou marcar para nao fazer o reply-to. Só tome cuidado que voce terá problemas de retorno de pacote para internet caso esse cara não seja o seu default gateway.

    Em fim, mãos a obra!!

    Abra 4 terminais do pfsense, deixe em execução os seguinte comandos (1 para cada pfsense)

    tcpdump -ni bce0 port 5900
    tcpdump -ni bce1 port 5900
    tcpdump -ni igb0 port 5900
    tcpdump -n -e -ttt -i pflog0 port 5900

    Feito isso tente fazer o acesso novamente. Quando ele apresentar o erro de falha na conexão, volte aos terminais, pressione Ctrl+c e copie os resultados para um bloco de notas e post aqui no forum.

    aguardo.

    att,

    Bruno Pinheiro



  • Olá Bruno,

    Segue em anexo o resultado dos comandos.
    Lembro que desta vez somente desativei o gateway da WAN, deixando o outro parâmetro desabilitado.

    Obrigado,
    Marcone

    pfSense2.txt



  • Faça a seguinte configuração:

    1- "Firewall > NAT > Outbound"  marque manual caso esteja como automatico;
    2- Encontre o NAT criado com as seguintes informações: (mais ou menos como a imagem pfnat1.jpg);

    Interface: interface do endereço 10.40.4.7
    Source: 192.168.0.0/24
    Source Port: *
    Destination: *
    Destination Port: *
    NAT Address: interface_address (endereço 10.40.4.7)
    NAT Port: *
    Static Port: NO

    3- Edite essa regra e modifique de acordo como a imagem pfnat2.jpg;
    4- Confirme se a mudança ficou mais ou menos como a imagem pfnat3.jpg;
    5- Aplique as configurações e em "Diagnostics > States > Reset States" clique no botão Reset;
    6- Abra o terminal novamente e deixe em execução os seguinte comando:

    tcpdump -ni bce0

    7- Teste agora o acesso e post o resultado do comando supracitado.

    Fico no aguardo.

    Att,

    Bruno Pinheiro.








  • Olá !

    Segue o retorno do tcpdump.

    Att,
    Marcone

    pfsense3.txt



  • Olá,

    Finalmente consegui resolver a situação. Talvez não da forma que estava procurando, mas funcionou.
    Fui por um outro caminho. Primeiro instalei o aplicativo rinetd pelo comando:

    pkg_add -r (caminho do tbz do rinetd)

    Adicionei no arquivo /usr/local/etc/rinetd.conf as entradas necessárias:

    10.40.4.7 5900 10.10.18.50 5900

    Após criei uma nova regra do NAT no pfSense da seguinte forma:

    PASS WAN TCP  * * 192.168.0.50 5900 (VNC) 10.40.4.7 5900 (VNC)

    Iniciei o rinetd:
    /usr/local/sbin/rinetd

    e Voilá ! Passei a acessar o VNC da rede externa para uma máquina interna.

    Abraço,
    Marcone