Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Configurando WPAD no pfSense 2.3 com NGINX sem perder mensagem de sgerror.php

    Scheduled Pinned Locked Moved Portuguese
    10 Posts 7 Posters 5.2k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • V
      vazjunior
      last edited by

      Configuração útil para quem usa Squid+SquidGuard
      –----------------------------------------------------------------

      1-Webgui configurada em HTTPS (443)
      2-No meu caso meu DNS e DHCP estão num Server Windows 2008 R2 e fiz a configuração das chamadas do WPAD no DNS e DHCP no meu Windows Server 2008 (pfSense apenas com a função de fornecer o arquivo WPAD.DAT ou PROXY.PAC). Se o seu DNS e DHCP estão no server pfSense veja como configurar em: https://www.javcasta.com/pfsense-2-3-wpad-con-nginx/
      3-Após pesquisar bastante descobre que era apenas uma questão de levantar uma segunda instância do arquivo nginx.conf que está em /usr/local/etc/nginx , então estou disponibilizando como deve ficar o conteúdo do arquivo nginx.conf desta segunda instância. Isto resolve o problema e o pfSense vai fornecendo o arquivo WPAD e o SquidGuard a tela de bloqueio do sgerror.php ao mesmo tempo:

      Passo 1: Editar o arquivo /usr/local/etc/nginx/mime.types e incluir as linhas (pode incluir em qualquer posição dentro do arquivo):

      application/x-ns-proxy-autoconfig     pac;
      application/x-ns-proxy-autoconfig     dat;
      application/x-ns-proxy-autoconfig     da;
      
      

      Inclua as mesmas linhas de comando acima também no arquivo /usr/local/etc/nginx/mime.types-dist que se encontra na mesma pasta.

      Passo 2: Editar o arquivo  /cf/conf/config.xml e incluir a tag <shellcmd>/usr/local/etc/rc.d/nginx onestart</shellcmd> antes da tag de fechamento
      Esta opção é para reforçar que o servidor nginx seja iniciado na inicialização do pfSense. Também pode ser feito via Cron.

      Passo 3: Acreditando que seu arquivo WPAD foi criado com o nome PROXY.PAC e esteja dentro da pasta /usr/local/www/nginx-dist/ crie via console dois links simbólicos para o arquivo WPAD.DAT e WPAD.DA:

      ln -s /usr/local/www/nginx-dist/proxy.pac /usr/local/www/nginx-dist/wpad.dat
      ln -s /usr/local/www/nginx-dist/proxy.pac /usr/local/www/nginx-dist/wpad.da
      
      

      Passo 4: Crie um arquivo nginx-wpad.conf  com o código abaixo em /usr/local/etc/nginx

      # nginx configuration file
      
      worker_processes  1;
      
      events {
          worker_connections  1024;
      }
      
      http {
      	include       /usr/local/etc/nginx/mime.types;
      	default_type  application/octet-stream;
      	sendfile        on;
      	keepalive_timeout 65;
      
      	server {
      		listen 192.168.20.1:80;    #Coloque aqui o IP do seu pfSense (Gateway)
      		server_name wpad.meudominio.local
      
      		#---------------------------------------------------------------#
      		client_max_body_size 200m; 
      		#---------------------------------------------------------------#
      
      		root "/usr/local/www/nginx-dist/";
                      #altere o caminho caso seu sgerror.php fique em outra pasta
      
      		location ~ \.php$ {
      			try_files $uri =404; #  This line closes a potential security hole
      			fastcgi_pass   unix:/var/run/php-fpm.socket;
      			fastcgi_index  index.php;
      			fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
      			fastcgi_read_timeout 180;
      			include        /usr/local/etc/nginx/fastcgi_params;
      		}
      	}
      }
      
      

      Dê permissão de leitura para este arquivo via console conforme código abaixo:

      chmod +r /usr/local/etc/nginx/nginx-wpad.conf
      

      Passo 5: Crie um arquivo nginx-wpad.sh  com o código abaixo em /usr/local/etc/rc.d
      Este script é que irá criar a segunda instância de nginx.conf, que no nosso caso passará a se chamar nginx-wpad.conf. Ao executar este script ele irá verificar se já existe uma instancia de nginx-wpad.conf rodando, caso não exista, ele cria a instância.

      #!/bin/sh
      /bin/ps ax | /usr/bin/grep /usr/local/etc/nginx/nginx-wpad.conf | /usr/bin/grep -v grep
      if [ $? -eq 0 ]; then
         /bin/echo ok
      else
         /usr/local/sbin/nginx -c /usr/local/etc/nginx/nginx-wpad.conf
         chmod go+rw /var/run/php-fpm.socket
      fi
      

      Após criar o arquivo dê permissão de execução para este arquivo (faça isso via console):

      chmod +x /usr/local/etc/rc.d/nginx-wpad.sh
      

      Por padrão o arquivo sgerror.php que gera a tela de bloqueio se encontra em /usr/local/etc/www mas neste caso eu copiei o arquivo sgerro.php para a pasta /usr/local/etc/www/nginx-dist onde também se encontra o arquivo WPAD.DAT. Caso você queira deixar o arquivo na pasta /usr/local/etc/www altere no arquivo nginx-wpad.conf o root conforme imagem abaixo:

      root "/usr/local/www/";
      #altere o caminho caso seu sgerror.php fique em outra pasta
      
      

      Passo 6: Como dizia meu avô…o seguro morreu de velho e o desconfiado vive até hoje! Bem, mesmo que o script nginx-wpad.sh seja carregado pelo pfSense na inicialização eu coloquei o script para também rodar via Cron. Então veja como ficou a configuração no Cron (instale o Cron pela opção: System > Package Manager > Available Packages caso você não o tenha instalado).

      Passo 7: Para finalizar, crie uma regra no Firewall em LAN liberando acesso ao WPAD na porta 80 conforme imagem. Neste exemplo o servidor do pfSense tem IP 192.168.10.1:

      Lembrando que, este procedimento não é preciso alterar nenhum outro arquivo. O único trabalho a ser feito é liberar no Firewall a porta 80 de LAN Net para o IP do seu servidor pfSense onde se encontra o arquivo WPAD.

      CRÉDITOS:
      Rafael Freitas
      www.javcasta.com

      cron.png
      cron.png_thumb
      rules.png
      rules.png_thumb

      1 Reply Last reply Reply Quote 0
      • marcellocM
        marcelloc
        last edited by

        Fixado nos tutorias. Obrigado pela contribuição.

        Se não me engano, na 2.3 já tem um pacote para subir virtualhosts no ngix.

        Treinamentos de Elite: http://sys-squad.com

        Help a community developer! ;D

        1 Reply Last reply Reply Quote 0
        • V
          vazjunior
          last edited by

          @marcelloc:

          Fixado nos tutorias. Obrigado pela contribuição.

          Se não me engano, na 2.3 já tem um pacote para subir virtualhosts no ngix.

          Marcelo, não sobe ainda não…fiz funcionou belezinha e depois de dois dias parou de funcionar porem estou sem tempo para dar uma olhada no que está acontecendo. Qual o nome desse pacote ?

          1 Reply Last reply Reply Quote 0
          • D
            diegovaz
            last edited by

            Boa tarde pessoal!

            também segui o mesmo tutorial e me deparei com o mesmo problema, procurei aqui no fórum e também no fórum do tutorial e não encontrei.

            alguém pode dar uma mãozinha ai?

            abraço

            Diego

            1 Reply Last reply Reply Quote 0
            • V
              vazjunior
              last edited by

              Bem pessoa, agora após testes está ai o procedimento…caso tenham dúvidas ou encontre erros postem ai. Fiz um laboratório com esta configuração e mesmo após varias reinicializações do sistemas tudo funcionou perfeitamente como deveria.

              1 Reply Last reply Reply Quote 0
              • V
                vazjunior
                last edited by

                Pessoal, lá de vez em quando…isso não acontece constantemente...na hora de mostrar a tela de erro do sgerror.php mosta esta tela antes, mas se eu mandar carregar o site que estou sentando acessar novamente ai já vem a tela do sgerror.php...parece que a causa do problema é algo com o nginx! Estou compartilhando pois talvez alguem saiba como não mostrar essa tela assim refinamos essa configuração do WPAD.

                erro_wpad.png
                erro_wpad.png_thumb

                1 Reply Last reply Reply Quote 0
                • M
                  mantunespb
                  last edited by

                  @marcelloc:

                  Fixado nos tutorias. Obrigado pela contribuição.

                  Se não me engano, na 2.3 já tem um pacote para subir virtualhosts no ngix.

                  Não achei esse pacote.

                  1 Reply Last reply Reply Quote 0
                  • J
                    javcasta
                    last edited by

                    @vazjunior:

                    Configuração útil para quem usa Squid+SquidGuard
                    –----------------------------------------------------------------

                    1-Webgui configurada em HTTPS (443)
                    2-No meu caso meu DNS e DHCP estão num Server Windows 2008 R2 e fiz a configuração das chamadas do WPAD no DNS e DHCP no meu Windows Server 2008 (pfSense apenas com a função de fornecer o arquivo WPAD.DAT ou PROXY.PAC). Se o seu DNS e DHCP estão no server pfSense veja como configurar em: https://www.javcasta.com/pfsense-2-3-wpad-con-nginx/
                    ....

                    CRÉDITOS:
                    Rafael Freitas
                    www.javcasta.com

                    Olá.

                    Obrigado por citação minha página https://javcasta.com/ :)

                    Eu tenho um script php na versão CLI ea versão gui para configurar pfSense wpad em pfSense 2.3.x

                    versão CLI: WPADcliSetup.php https://forum.pfsense.org/index.php?topic=112715.0
                    versão GUI: myWPAD.php  https://forum.pfsense.org/index.php?topic=113441.0

                    Cumprimentos

                    Javier Castañón
                    Técnico de comunicaciones, soporte y sistemas.

                    Mi web: https://javcasta.com/

                    Soporte scripting/pfSense https://javcasta.com/soporte/

                    1 Reply Last reply Reply Quote 0
                    • W
                      wwatanabe
                      last edited by

                      Pra quem não precisar do WPAD, mas quiser subir a segunda instancia do NGINX para o SGERROR e customizando a tela de erro do SquidGuard: https://forum.pfsense.org/index.php?topic=115653.0

                      squidguard_errorpage.png
                      squidguard_errorpage.png_thumb

                      1 Reply Last reply Reply Quote 0
                      • V
                        victorfmaraujo
                        last edited by

                        Creio que o pacote ShellCMD poderia ter sido utilizado no passo 2

                        Passo 2: Editar o arquivo  /cf/conf/config.xml e incluir a tag <shellcmd>/usr/local/etc/rc.d/nginx onestart</shellcmd> antes da tag de fechamento
                        Esta opção é para reforçar que o servidor nginx seja iniciado na inicialização do pfSense. Também pode ser feito via Cron.

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post
                        Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.