Configurando WPAD no pfSense 2.3 com NGINX sem perder mensagem de sgerror.php
-
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
-
Fixado nos tutorias. Obrigado pela contribuição.
Se não me engano, na 2.3 já tem um pacote para subir virtualhosts no ngix.
-
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 ?
-
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
-
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.
-
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.
-
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.
-
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.comOlá.
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.0Cumprimentos
-
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
-
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.