PfSense-Web-Proxy-Con-Multi-WAN



  • Favor necesito colaboracion para configurar pfsense con multiwan en concreto 2 conexiones a internet con FailOVER
    con squid proxy + squid Guard



  • Hola

    Para pfSense 2.2.6 temgo un procedimiento Procedimiento – pfSense 2.2.6 amd64 con Squid en entorno MultiWan
    Basicamente creo que te valdría para 2.3 o te orientaria.

    Salu2



  • Hola Esto es para squid no transparente?



  • En el manual se ve para configurarlo como no transparente, pero para hacerlo transparente sólo tendrías que saltarte algunos pasos (ficheros WPAD por ejemplo), y activar una casilla en al configuración.

    Por cierto, muy buen manual. Ojalá lo hubiera encontrado cuando me tocó configurar el mio.
    Lo único que no he visto es para que el balanceo del squid sea real, porque al menos en mi caso, el squid ignoraba el grupo de puertas de enlace y salía por la GW por defecto hasta que esta se caía y salía por la restante.

    Un saludo.



  • Hola

    @Danixu86:

    Lo único que no he visto es para que el balanceo del squid sea real, porque al menos en mi caso, el squid ignoraba el grupo de puertas de enlace y salía por la GW por defecto hasta que esta se caía y salía por la restante.

    Hay que leer la letra pequeña :)

    Nota: Aviso: Squid con pfSense en multiwan no efectuará balanceo de carga, como mucho fail-over

    https://doc.pfsense.org/index.php/Multi-WAN#Local_Services

    By default, traffic using a proxy such as Squid will bypass policy routing and use the default route for traffic at all times. It also bypasses expected outbound NAT and leaves via the WAN IP address directly.

    Policy routing traffic from the firewall itself is not currently possible, and as such, load balancing is not possible. Failover can be achieved in many cases by using default gateway switching under System > Advanced on the Miscellaneous tab.

    Salu2



  • Si, si lo decía por si era yo el manco que no sabía hacerlo correctamente jejeje. Ya vi por varios sitios ese aviso.

    La verdad es que encontré la forma de hacerlo diciéndole al Squid que mandara el tráfico a través de localhost, con lo que conseguías que siguiera las reglas del box. La ventaja es que el balanceo es real, pero está por probar si da problemas con webs que comprueben la IP a través de la que te conectas (aunque de momento no he tenido queja).

    Un saludo.



  • Hola

    @Danixu86:

    Si, si lo decía por si era yo el manco que no sabía hacerlo correctamente jejeje. Ya vi por varios sitios ese aviso.

    La verdad es que encontré la forma de hacerlo diciéndole al Squid que mandara el tráfico a través de localhost, con lo que conseguías que siguiera las reglas del box. La ventaja es que el balanceo es real, pero está por probar si da problemas con webs que comprueben la IP a través de la que te conectas (aunque de momento no he tenido queja).

    Un saludo.

    Hmmm… tengo que probar eso, seria una solución simple y elegante para que Squid en pfSense use balanceo :)

    Salu2



  • Cómo  haces Danixu86 para que squid envié el tráfico por localhost? en su setup se definen las interfaces por donde escucha,  lan, wan, localhost. Pero para que se conecte a los servidores web usa el default gateway del sistema ¿¿¿???



  • Ahora mismo no tengo el box a mano para mirarte cómo lo hice, pero es básicamente añadir una línea en la caja de texto para las ACL en la que le indicas que la salida la haga a través de localhost. Mañana cuando tenga acceso pego la línea por aquí.



  • Hola

    Eso, eso, que lo explique. Danixu86, hazte un procedimiento o doc o guia y publicálo por aquí :)

    Salu2



  • Hola!!, lo dicho, ya tengo acceso al box  ;)

    Al final os engañé un poco (sin saberlo claro  ::)). Al final resulta que el balanceo que tenía no era real, sino que me lo pareció porque la prueba la hice con una web https y en mi caso no lo tengo configurado para que pase por el squid. De todas formas he rebuscado un pelín y he encontrado la forma de hacerlo real (y esta vez sin mentiras  ;D).

    $ for i in `seq 1 20`; do curl http://ipinfo.io/ip && sleep 1 2>/dev/null; done
    81.xx.xxx.138
    81.xx.xxx.138
    80.xx.xx.106
    80.xx.xx.106
    80.xx.xx.106
    81.xx.xxx.138
    81.xx.xxx.138
    81.xx.xxx.138
    81.xx.xxx.138
    80.xx.xx.106
    81.xx.xxx.138
    81.xx.xxx.138
    80.xx.xx.106
    80.xx.xx.106
    81.xx.xxx.138
    81.xx.xxx.138
    81.xx.xxx.138
    81.xx.xxx.138
    80.xx.xx.106
    80.xx.xx.106
    

    Tengo que mirar lo de sticky connections porque la ignora.

    El procedimiento es fácil:

    • Vamos a Services > Squid Proxy Server

    • Vamos a la pestaña General y abajo del todo pulsamos sobre el botón "Show Advanced Options"

    • Esto nos mostrará unas cuantas opciones nuevas entre las que están las ACL. Pegamos en la casilla "Custom ACLS (Before Auth)" las siguientes líneas:
      acl rnd1 random 1/2
      acl rnd2 random 1/2
      tcp_outgoing_address 172.xx.x.254 rnd1
      tcp_outgoing_address 172.xx.x.254 rnd2

    • Damos a save y probamos

    Con eso estás creando dos acl del tipo random con una probabilidad de un 50% (1/2). Después con tcp_outgoing_address indicas qué interfaz de pfsense debe utilizar cada acl que has creado antes (es la IP de la interfaz, no la de la puerta de enlace). Con esto puedes poner también prioridad de las puertas de enlace. Si una GW tiene 10MB y otra 30 por ejemplo, puedes poner la de 10MB a 1/4 y la otra a 3/4 para que use más veces la rápida.

    Espero que os sirva, y si encuentro algo de las sticky connections lo posteo por aquí ;)



  • Hola

    Buen trabajo :)
    Tiene buena pinta …

    Cuando encuentre tiempo lo pruebo. ¿Funcionará para SSL/HTTPS con Squid en modo NO transparente?

    Salu2



  • Supongo que si, porque realmente le estás diciendo que el tráfico de salida lo mande por esas dos interfaces.



  • Hola de nuevo,

    He estado haciendo pruebas con el manual que colgaste para configurar el proxy y funciona bastante bien. En mi caso lo he hecho poniendo el WPAD en otro servidor, configurando el apache y añadiendo las entradas al DHCP.

    También haciendo pruebas he visto que Android y Windows ignoran la información del proxy.
    Android parece ser que no busca en http://wpad/wpad.dat o la entrada 252 de DHCP y se lo tienes que decir tu a mano, pero en el caso de Windows me llama la atención de que todos los navegadores lo cojan sin problema y él diga que no hay proxy…

    C:\Users\Daniel>netsh winhttp show proxy
    
    Configuración actual del proxy WinHTTP:
    
        Acceso directo (sin servidor proxy).
    

    Hasta el Internet Explorer navega por el proxy:

    
    C:\Windows\system32>netstat -ban
    
    Conexiones activas
    
      Proto  Dirección local        Dirección remota       Estado
     [iexplore.exe]
      TCP    192.168.22.196:1453    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1454    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1455    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1456    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1457    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1458    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1459    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1460    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1461    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1462    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1463    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1464    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1465    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1466    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1467    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1468    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1469    192.168.22.254:3128    ESTABLISHED
     [iexplore.exe]
      TCP    192.168.22.196:1470    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1471    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1472    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1473    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1474    192.168.22.254:3128    TIME_WAIT
      TCP    192.168.22.196:1475    192.168.22.254:3128    ESTABLISHED
    

    ¿Se sabe de alguna forma para hacer que tanto Android como Windows hagan caso al proxy?

    Un saludo y gracias!



  • Hola

    Tengo un gui php script para configurar WPAD sin revertir la gui de pfsense a http (y que configura las entyradas 252 en el dhcpd, el host override,proxy.pac, enlaces simbólicos a wpad,dat y wpad.da, etc) en:

    https://www.javcasta.com/pfsense-2-3-x-mywpad-mywpad-php/

    Ya no uso squid, pero recuerdo que algunos android les iba bien con detectar proxy automaticamente y a otros les tenia que indicar el proxy.pac o wpad,dat ( http://ip-pfsense/wpad.dat o http://ip-pfsense/proxy.pac )

    Salu2



  • Gracias por el PHP, está bastante bien.

    La verdad es que no quiero tocar en este servidor nada que no se pueda restaurar con el fichero de configuración porque en breve voy a dejar la empresa y la persona que se va a encargar no sabe mucho de Linux, así que tendría un buen marrón si muere y tiene que restaurarlo. Cerrándome a sólo lo relacionado con el fichero de configuración me aseguro que si muere sólo tiene que hacer una instalación y una configuración rápida, y después cargar el fichero de configuración.

    Los cambios los estoy haciendo en otro del que haré una imagen y así se queda restaurable.

    He leído que algunos Android a partir de la versión 5 cargaban el proxy del DHCP, pero no sé si Sony ha reciclado el cliente de una versión antigua o que pasa, pero el mío no se autoconfigura. Tienes que darle tu la dirección del WPAD manualmente y es algo que no es viable porque no puedo hacer que cada persona que se conecte al Wifi tenga que meter esa dirección.
    Al final he decidido poner el proxy para los clientes que lo acepten y dejarlo directo para los que no. Mi ubuntu es otro por ejemplo que se pasa el WPAD por las narices, pero me importa menos  ;D

    ¡Un saludo!