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

    PfSense 2.3 – WPAD con nginx

    Scheduled Pinned Locked Moved Español
    19 Posts 8 Posters 7.1k 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.
    • J
      javcasta
      last edited by

      Hola.

      Sigo con la serie de posts sobre pfSense 2.3 como servidor WPAD con ngninx (sin revertir GUI a HTTP).
      ( http://www.javcasta.com/pfsense-2-3-wpad-con-ngnix-sin-revertir-gui-a-http/ )

      Ahora explico como Monitorizar WPAD con ngnix.

      Lo tengo en: http://www.javcasta.com/pfsense-2-3-monitorizar-wpad-con-ngnix/.

      –-=-=-=-=-

      Si se ha seguido en procedimiento:

      • http://www.javcasta.com/pfsense-2-3-wpad-con-ngnix-sin-revertir-gui-a-http/

      Una forma de habilitar los logs de la instancia de ngnix que sirve el wpad.dat/proxy.pac/wpad.da para Monitorizar WPAD o accesos a wpad.dat/wpad.da/proxy.pac
      Es:

      Crear una carpeta llamada ngnix en /var/log/

      Y en ese directorio crear un fichero llamado access.log

      desde shell como root:

      
      mkdir /var/log/ngnix
      echo > /var/log/ngnix/access.log
      
      

      Paramos ngnix
             ```
      /usr/local/etc/rc.d/nginx onestop

          Editar
          **/usr/local/etc/ngnix.conf**
      
      Y en su sección http, habilitar log_format main
      Y en su sección server, indicar donde tiene el log
      
      > #…
      >     http {
      >     include      mime.types;
      >     default_type  application/octet-stream;
      > 
      >   **log_format  main**  ‘$remote_addr – $remote_user [$time_local] “$request” ‘
      >     ‘$status $body_bytes_sent “$http_referer” ‘
      >     ‘”$http_user_agent” “$http_x_forwarded_for”‘;
      > 
      >     #access_log  logs/access.log  main;
      > 
      >     sendfile        on;
      >     #tcp_nopush    on;
      > 
      >     #keepalive_timeout  0;
      >     keepalive_timeout  65;
      > 
      >     #gzip  on;
      > 
      >     #listen 80;
      >     #listen 443 default_server ssl;
      > 
      >     server {
      >     listen      10.168.0.254:80;
      >     server_name  wpad.localdomain.local;
      > 
      >     #charset koi8-r;
      >     **access_log  /var/log/ngnix/access.log  main;**
      >     #access_log  logs/host.access.log  main;
      >     #….
      
          Salvamos fichero
          Lanzamos ngninx:
             ```
      /usr/local/etc/rc.d/nginx onestart
      

      Desde shell podemos monitorizar los accesos a wpad.dat/proxy.pac/wpa.da

      tail -f "/var/log/ngnix/access.log" | grep -E "wpad.dat|proxy.pac|wpad.da"
      

      [2.3-RELEASE][root@pfSense3.localdomain.local]/root: tail -f "/var/log/ngnix/access.log" | grep -E "wpad.dat|proxy.pac|wpad.da"
      10.168.0.10 - - [20/Apr/2016:11:23:33 +0000] "GET /wpad.dat HTTP/1.1" 200 1215 "-" "Mozilla/4.0 (Windows NT 6.1; Win64; x64; rv:44.0) Gecko/2000000 Firefox/44.0" "-"
      10.168.0.12 - - [20/Apr/2016:11:29:00 +0000] "GET /wpad.dat HTTP/1.1" 200 1215 "-" "Dalvik/2.0.0 (Linux; U; Android 4.1.1; SM-T220 Build/NOY37X)" "-"
      10.168.0.12 - - [20/Apr/2016:11:29:01 +0000] "GET /wpad.dat HTTP/1.1" 200 1215 "-" "Dalvik/2.0.0 (Linux; U; Android 4.1.1; SM-T2200 Build/NOY37X)" "-"
      10.168.0.12 - - [20/Apr/2016:11:29:41 +0000] "GET /wpad.dat HTTP/1.1" 200 1215 "-" "Dalvik/2.0.0 (Linux; U; Android 4.1.1; SM-T2200 Build/NOY37X)" "-"
      10.168.0.11 - - [20/Apr/2016:11:31:54 +0000] "GET /wpad.dat HTTP/1.1" 200 1215 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:44.0) Gecko/2000000 Firefox/44.0" "-"
      10.168.0.11 - - [20/Apr/2016:11:37:51 +0000] "GET /proxy.pac HTTP/1.1" 304 0 "-" "WinHttp-Autoproxy-Service/5.1" "-"

      Si deseas verlo desde navegador. Crea un fichero wpad-mon.php en “/usr/local/www/wpad-mon.php”

      tal que contenga:

      /*
      wpad-mon.php
      by Javier Castañón - https://javcasta.com/ - PIyMenta 2016
      VorumServer 2.0 SecureLAN
      
      */
      echo "
      
      ## Monitor WPAD
      
      ";
      $ejecutar = "tail -50 /var/log/ngnix/access.log | grep -E 'wpad.dat|wpad.da|proxy.pac'";
      $salida2 = shell_exec($ejecutar);
      "
      
      * * *
      
      ";
      echo "Ultimos 50 accesos a wpad.dat / wpad.da / proxy.pac"."
      ";
      echo "==================================================="."
      ";
      echo "```
      $salida2
      ```";
      echo "
      
      * * *
      
      ";
      echo "[By Javier Castañon - javcasta - PIyMenta 2016](https://javcasta.com/)";
      ?>
      

      Y lo abres desde navegador: https://wpad.localdomain.local/wpad-mon.php

      O si tienes un widget personal (como estoy implementandolo en VorumServer 2 SecureLAN, aprovecho para incluirlo)
      puedes incluir un link a https://wpad.localdomain.local/wpad-mon.php y desde el dashboard lo tienes disponible

      ref Como crear widgets >> https://doc.pfsense.org/index.php/Creating_widgets

      Salu2

      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
      • F
        Finger
        last edited by

        quiero ser como tu.

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

          @Finger:

          quiero ser como tu.

          jajajajajaja

          –
          Juan Carlos Reyes
          Powered by Debian
          o
          L_/
          OL

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

            Hola.

            Se nota que es viernes … jaja, buen finde :)

            Salu2

            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
            • L
              lazaro
              last edited by

              juancho…imagino que si modificamos desde el gui la opcion de http o https en Opciones generales, se puerde todo lo que hayamos puesto manualmente en el archivo de nginx?

              saludos

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

                Hola

                El fichero "/usr/local/etc/nginx/nginx.conf" es independiente de la instancia nginx de la GUI de pfSense.

                Si analizas su conf del fichero original, está perfilado para que escuche por defecto en el tcp80 (HTTP)

                Así que yo lo que hago es lanzar una instancia de ngninx para que escuche en el tcp80 en el servidor wpad.undominio.algo para que brinde el proxy.pac / wpad.dat / wpad.da

                Si reviertes a HTTP la GUI de pfSense no va a funcionar, ya que hay 2 instancias de nginx escuchando en el mismo puerto (tcp80) a la vez

                Salu2

                nota: No me llamo Juancho.

                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
                • M
                  masterlanpc
                  last edited by

                  Una pregunta si uso esta configuracion con proxy modo transparente
                  como seria la parte de: Host Overrides, uso el rango de ip en lan 192.168.255.0

                  "http://wpad.sequreisphome.net/proxy.pac"
                  "http://wpad.sequreisphome.net/wpad.dat"
                  "http://wpad.sequreisphome.net/wpad.da"

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

                    Hola

                    Si usas el proxy squid en modo transparente, WPAD no vale para nada, WPAD es para modo no transparente y que los navegadores de los clientes autodetecten la config del proxy vía dhcp y/o query DNS y obtengan el fichero de conf proxy.pac o wpad.dat o wpad.da vía query http

                    Salu2

                    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
                    • M
                      masterlanpc
                      last edited by

                      Ok hermano en ese caso me gustaria saber lo que pregunte anteriormente para implemetarlo tal como tu lo haces sin modo transparente

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

                        Hola

                        Puedes configurarlo vía

                        • script cli: https://forum.pfsense.org/index.php?topic=112715.msg628966#msg628966
                        • script gui: https://forum.pfsense.org/index.php?topic=113441.0

                        Y si lo haces a mano, se crea un Host Override o entrada en unbound para wpad-undominio.algo <–-> ip lan o de la interfaz pfSense donde los clientes vía http obtengan el proxy.pac, etc: http://wpad.undominio.algo/proxy,pac

                        Salu2

                        Nota: No soy tu hermano, no sea que mi hermano real piense que le suplantas :) jaja

                        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
                        • M
                          masterlanpc
                          last edited by

                          Ok disculpa lo de hermano no era mi intencion ofender mil disculpas

                          1 Reply Last reply Reply Quote 0
                          • L
                            lazaro
                            last edited by

                            Ciero ya vi, el proceso del gui toma la configuracion de

                            /var/etc/nginx-webConfigurator.conf

                            buenos tips que posteas

                            saludos

                            @javcasta:

                            Hola

                            El fichero "/usr/local/etc/nginx/nginx.conf" es independiente de la instancia nginx de la GUI de pfSense.

                            Si analizas su conf del fichero original, está perfilado para que escuche por defecto en el tcp80 (HTTP)

                            Así que yo lo que hago es lanzar una instancia de ngninx para que escuche en el tcp80 en el servidor wpad.undominio.algo para que brinde el proxy.pac / wpad.dat / wpad.da

                            Si reviertes a HTTP la GUI de pfSense no va a funcionar, ya que hay 2 instancias de nginx escuchando en el mismo puerto (tcp80) a la vez

                            Salu2

                            nota: No me llamo Juancho.

                            1 Reply Last reply Reply Quote 0
                            • pozoleroP
                              pozolero Rebel Alliance
                              last edited by

                              Que tal @Javcasta muy bueno el tutorial sobre wpad, aun no implemento.  Sólo tengo una duda:  Qué sucede cuando wpad solo sirve para que el navegador tenga salida a internet, pero no los programas que hacen usao de la configuración del proxy de manera global?

                              Espero haberme explicado

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

                                Hola y ante todo muchas gracias por tu aporte y por tu ayuda.
                                Tengo dos dudas:
                                La primera es si debo configurar algo en la parte NAT del firewall y la segunda es como debo configurar el proxy.pac si tengo varias vlan configuradas en pfsense y la ip de mi lan es la 10.0.0.1/24
                                vlan102 (10.0.102.1/24)
                                vlan103 (10.0.103.1/24)
                                …..
                                .....

                                Es así:
                                function FindProxyForURL(url, host) {
                                //proxy  10.0.0.1:3028; by Javcasta
                                var wpad = "PROXY wpad.localdomain.lan:3028";
                                host = host.toLowerCase();
                                var hostIP = dnsResolve(host);
                                if (hostIP == 0) return wpad;
                                if (isPlainHostName(host)) return "DIRECT";
                                if (shExpMatch(host, ".local")) return "DIRECT";
                                //mi dominio localdomain.lan;
                                if (shExpMatch(host, ".localdomain.lan")) return "DIRECT";
                                //redes privadas;
                                if (isInNet(dnsResolve(host), "127.0.0.0", "255.0.0.0")) return "DIRECT";
                                if (isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0")) return "DIRECT";
                                if (isInNet(dnsResolve(host), "10.0.0.0", "255.255.0.0")) return "DIRECT";
                                if (isInNet(dnsResolve(host), "10.0.0.0", "255.255.255.0")) return "DIRECT";
                                //mi red privada;
                                if (isInNet(dnsResolve(host), "10.0.0.0", "255.255.255.0")) return "DIRECT";
                                //end mi red privada;
                                if (isInNet(dnsResolve(host), "IP de la vlan102", "255.255.255.0")) return "DIRECT";
                                if (isInNet(dnsResolve(host), "IP de la vlan103", "255.255.255.0")) return "DIRECT";
                                if (shExpMatch(host, "fe80::")) return "DIRECT";
                                if (shExpMatch(url, "http:
                                ")) return wpad;
                                if (shExpMatch(url, "https:*")) return wpad;
                                return wpad;
                                }

                                He aplicado esta regla a la vlan102 que es con la que estoy probando y si desactivo la ultima regla no puedo navegar. ¿Que estoy haciendo mal?. Tengo la sensacion de que el problema puede estar en la configuracion de mis dns. Mi dashboard me muestra:

                                DNS server(s)
                                127.0.0.1
                                80.58.61.250
                                80.58.61.254
                                194.179.1.100
                                194.179.1.101

                                Y en servicios tengo activado el dns resolver y configurado tal y como indicas el host override. Si ejecuto:
                                Shell Output - nslookup wpad 10.0.0.1
                                Server: 10.0.0.1
                                Address: 10.0.0.1#53

                                ** server can't find wpad: NXDOMAIN
                                y si ejecuto:
                                Shell Output - nslookup wpad.localdomain.lan 10.0.0.1
                                Server: 10.0.0.1
                                Address: 10.0.0.1#53

                                Name: wpad.localdomain.lan
                                Address: 10.0.0.1

                                Muchas gracias.

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

                                  A ver si alguien me puede echar una mano ya que no consigo que funcione correctamente. Mi error esta o en las reglas o en el proxy.pac.

                                  Mi lan tiene la ip 10.0.0.1/24, pero yo estoy intentando hacerlo funcionar desde una vlan (10.0.102.1/24). Mas adelante configurare mas vlan y una interfaz para servir wifi (172.30.0.1/23) con portal cautivo y dhcp.El caso es que ahora medio funciona pero va muy mal. Tarda mucho en cargar cualquier pagina desde los clientes. Estas son mis reglas en la vlan y la primera la pongo porque sino no me sirve el proxy.pac,wpad.dat, wpad.da, es decir, puedo hacer ping a wpad.localdomain.local, pero si hago http://wpad.localdomain.local entonces no lo coge:

                                  Y este es mi proxy.pac/wpad.dat/wpad.da alojado en /usr/local/www/nginx

                                  function FindProxyForURL(url, host) {

                                  var wpad = "PROXY wpad.localdomain.local:3128";
                                  host = host.toLowerCase();
                                  var hostIP = dnsResolve(host);
                                  if (hostIP == 0) return wpad;
                                  if (isPlainHostName(host)) return "DIRECT";
                                  if (shExpMatch(host, ".local")) return "DIRECT";
                                  //mi dominio localdomain.local;
                                  if (shExpMatch(host, ".localdomain.local")) return "DIRECT";
                                  //redes privadas;
                                  if (isInNet(dnsResolve(host), "127.0.0.0", "255.0.0.0")) return "DIRECT";
                                  if (isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0")) return "DIRECT";
                                  if (isInNet(dnsResolve(host), "10.0.0.0", "255.255.0.0")) return "DIRECT";
                                  if (isInNet(dnsResolve(host), "10.0.0.0", "255.255.255.0")) return "DIRECT";
                                  //mi red privada;
                                  if (isInNet(dnsResolve(host), "10.0.102.0", "255.255.255.0")) return "DIRECT";
                                  //end mi red privada;
                                  if (isInNet(dnsResolve(host), "172.30.0.0", "255.255.254.0")) return "DIRECT";
                                  if (shExpMatch(host, "fe80::")) return "DIRECT";
                                  if (shExpMatch(url, "http:
                                  ")) return wpad;
                                  if (shExpMatch(url, "https:*")) return wpad;
                                  return wpad;
                                  }

                                  Mi cliente de ejemplo tiene ip 10.0.102.19/24 puerta de enlace 10.0.102.1 y dns 10.0.0.1

                                  Gracias.

                                  1 Reply Last reply Reply Quote 0
                                  • F
                                    fabshdz
                                    last edited by

                                    Hola, yo también tengo tu mismo problema, no me coge el archivo pac, dat, o da….

                                    Lo voy a volver a intentar hoy.

                                    La última vez, me quedé sin Internet, y tuve que aplicar un respaldo porque no logré revertir >.<

                                    Lamento que tenga que abrir este post, pero prefiero para no abrir un nuevo hilo

                                    De antemano gracias

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