Squid no cachea



  • Buenas noches, he instalado con la ayuda del foro un pfSense + squid +squidguard. Hasta aquí todo bien, el tema es que al activar la cache del proxy siguiendo la documentación de este foro no parece que haga su trabajo correctamente.

    Dejo unas líneas del fichero access.log (Todas iguales).

                        0 172.26.0.54 TCP_DENIED/400 1757 GET NONE:// - NONE/- text/html
    1430166017.169      0 172.26.0.54 TCP_DENIED/400 1763 GET NONE:// - NONE/- text/html
    1430166017.175      0 172.26.0.54 TCP_DENIED/400 1752 GET NONE:// - NONE/- text/html
    1430166017.182      0 172.26.0.54 TCP_DENIED/400 1746 GET NONE:// - NONE/- text/html
    1430166022.981      0 172.26.0.35 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166023.036      0 172.26.0.135 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166025.354      0 172.26.0.252 TCP_DENIED/400 1552 NONE NONE:// - NONE/- text/html
    1430166025.354      0 172.26.0.252 TCP_DENIED/400 1552 NONE NONE:// - NONE/- text/html
    1430166032.139  15229 172.26.0.35 TCP_MISS/200 3162 CONNECT www.csi-csif.org.es:443 - DIRECT/87.216.210.194 -
    1430166032.533      0 172.26.0.54 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166032.536      0 172.26.0.54 TCP_DENIED/400 1552 NONE NONE:// - NONE/- text/html
    1430166032.981      0 172.26.0.35 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166033.036      0 172.26.0.135 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166042.981      0 172.26.0.35 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166043.036      0 172.26.0.135 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166051.203      0 172.26.0.18 TCP_DENIED/400 1550 NONE NONE:// - NONE/- text/html
    1430166051.496      0 172.26.0.35 TCP_DENIED/400 2316 POST NONE:// - NONE/- text/html
    1430166052.981      0 172.26.0.35 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166053.036      0 172.26.0.135 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166059.363      0 172.26.0.135 TCP_DENIED/400 1872 POST NONE:// - NONE/- text/html
    1430166061.776      0 172.26.0.131 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166062.935      0 172.26.0.35 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166063.035      0 172.26.0.135 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166063.827      0 172.26.0.252 TCP_DENIED/400 1552 NONE NONE:// - NONE/- text/html
    1430166064.777      0 172.26.0.252 TCP_DENIED/400 1552 NONE NONE:// - NONE/- text/html
    1430166072.935      0 172.26.0.35 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166073.036      0 172.26.0.135 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166082.936      0 172.26.0.35 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166083.035      0 172.26.0.135 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166085.356      0 172.26.0.252 TCP_DENIED/400 1552 NONE NONE:// - NONE/- text/html
    1430166085.356      0 172.26.0.252 TCP_DENIED/400 1552 NONE NONE:// - NONE/- text/html
    1430166088.866      0 172.26.0.49 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166088.874      0 172.26.0.49 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166088.886      0 172.26.0.49 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166089.361  61800 172.26.0.18 TCP_MISS/200 6422 CONNECT setup.icloud.com:443 - DIRECT/17.167.139.47 -
    1430166092.935      0 172.26.0.35 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166093.035      0 172.26.0.135 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166094.166      0 172.26.0.54 TCP_DENIED/400 1866 GET NONE:// - NONE/- text/html
    1430166096.288      0 172.26.0.23 TCP_DENIED/400 3051 POST NONE:// - NONE/- text/html
    1430166097.560      0 172.26.0.49 TCP_DENIED/400 1555 NONE NONE:// - NONE/- text/html
    1430166102.935      0 172.26.0.35 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166103.035      0 172.26.0.135 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166112.936      0 172.26.0.35 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166113.035      0 172.26.0.135 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166113.037      0 172.26.0.135 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166113.500      0 172.26.0.35 TCP_DENIED/400 2096 POST NONE:// - NONE/- text/html
    1430166115.187  78040 172.26.0.49 TCP_MISS/200 6581 CONNECT www.facebook.com:443 - DIRECT/31.13.93.3 -
    1430166118.140      0 172.26.0.131 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166118.142      0 172.26.0.131 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166118.144      0 172.26.0.131 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166118.146      0 172.26.0.131 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166122.936      0 172.26.0.35 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166123.035      0 172.26.0.135 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166123.309 899930 172.26.0.49 TCP_MISS/200 1666 CONNECT mtalk.google.com:443 - DIRECT/64.233.167.188 -
    1430166123.319      0 172.26.0.49 TCP_DENIED/403 1310 CONNECT mtalk.google.com:5228 - NONE/- text/html
    1430166123.831      0 172.26.0.252 TCP_DENIED/400 1552 NONE NONE:// - NONE/- text/html
    1430166124.776      0 172.26.0.252 TCP_DENIED/400 1552 NONE NONE:// - NONE/- text/html
    1430166125.723      0 172.26.0.51 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166125.724      0 172.26.0.51 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    1430166125.726      0 172.26.0.51 TCP_DENIED/400 1553 NONE NONE:// - NONE/- text/html
    

    He borrado la cache con los siguientes comandos:

    /usr/local/etc/rc.d/squid.sh stop
    rm -rf /var/squid/cache/
    mkdir -p /var/squid/cache/
    chown squid:squid /var/squid/cache/
    chmod 777 /var/squid/cache/
    squid -z
    /usr/local/etc/rc.d/squid.sh start
    

    No encuentro ningún TCP_HIT por ningún lado por lo que creo que no está cacheando nada.

    He leído varios posts referentes a esto pero después de seguir las indicaciones no he obtenido resultados.

    Muchas gracias



  • 400 Solicitud incorrecta
        La solicitud contiene sintaxis errónea y no debería repetirse.

    http://es.wikipedia.org/wiki/Anexo:Códigos_de_estado_HTTP#4xx_Errores_del_cliente

    Google TCP_DENIED/400

    Tu problema no es si cachea o no, creo. Diría que tienes algo mal en la configuración. Me atrevería a decir que tiene que ver con el modo transparente, pues las únicas conexiones que pasan son las https (TCP 443).

    Te sugiero, además, borres de nuevo toda la caché y la definas desde el configurador web en Services - Proxy Server - Local Caché

    Lo digo porque crear la carpeta desde root con permisos 777 me parece algo arriesgado…

    $ ls -l /var/squid | grep cache
    drwxr-xr-x  130 proxy  proxy  2048 Apr 28 00:00 cache
    

    Logs explicados en https://forum.pfsense.org/index.php?topic=90755.msg502360#msg502360



  • Hola bellera, muchas gracias.

    He borrado y vuelto a crear la cache como me dijiste pero sigue igual.

    Comentarte que el squid no está en modo transparente, tengo creadas 2 port forward que redirigen todas las peticiones desde la lan net hacia los puertos 80 y 443 al proxy por el puerto 3128 para forzar que todo pase por el squid.

    Te paso el contenido de squid.conf por si hay ves algo raro:

    Do not edit manually !

    http_port 172.26.0.5:3128
    icp_port 0

    pid_filename /var/run/squid.pid
    cache_effective_user proxy
    cache_effective_group proxy
    error_directory /usr/pbi/squid-i386/etc/squid/errors/Spanish
    icon_directory /usr/pbi/squid-i386/etc/squid/icons
    visible_hostname localhost
    cache_mgr mrecio@akceso.com
    access_log /var/squid/logs/access.log
    cache_log /var/squid/logs/cache.log
    cache_store_log none
    logfile_rotate 7
    shutdown_lifetime 3 seconds

    Allow local network(s) on interface(s)

    acl localnet src  172.26.0.0/255.255.255.0
    uri_whitespace strip

    cache_mem 512 MB
    maximum_object_size_in_memory 32 KB
    memory_replacement_policy heap GDSF
    cache_replacement_policy heap LFUDA
    cache_dir ufs /var/squid/cache 50000 16 256
    minimum_object_size 0 KB
    maximum_object_size 4 KB
    offline_mode off
    cache_swap_low 90
    cache_swap_high 95

    No redirector configured

    Setup some default acls

    acl all src 0.0.0.0/0.0.0.0
    acl localhost src 127.0.0.1/255.255.255.255
    acl safeports port 21 70 80 210 280 443 488 563 591 631 777 901  3128 1025-65535 443
    acl sslports port 443 563  443
    acl manager proto cache_object
    acl purge method PURGE
    acl connect method CONNECT
    acl dynamic urlpath_regex cgi-bin ?
    acl allowed_subnets src 172.26.0.0/24 172.26.1.0/24
    acl blacklist dstdom_regex -i '/var/squid/acl/blacklist.acl'
    cache deny dynamic
    http_access allow manager localhost

    http_access deny manager
    http_access allow purge localhost
    http_access deny purge
    http_access deny !safeports
    http_access deny CONNECT !sslports

    Always allow localhost connections

    http_access allow localhost

    quick_abort_min 0 KB
    quick_abort_max 0 KB
    request_body_max_size 0 KB
    reply_body_max_size 0 deny all
    delay_pools 1
    delay_class 1 2
    delay_parameters 1 -1/-1 -1/-1
    delay_initial_bucket_level 100

    Throttle extensions matched in the url

    acl throttle_exts urlpath_regex -i '/var/squid/acl/throttle_exts.acl'
    delay_access 1 allow throttle_exts
    delay_access 1 deny all

    Custom options

    url_rewrite_program /usr/pbi/squidguard-i386/bin/squidGuard -c /usr/pbi/squidguard-i386/etc/squidGuard/squidGuard.conf
    url_rewrite_bypass off
    url_rewrite_children 16 startup=8 idle=4 concurrency=0

    Block access to blacklist domains

    http_access deny blacklist

    Setup allowed acls

    Allow local network(s) on interface(s)

    http_access allow allowed_subnets
    http_access allow localnet

    Default block all to be sure

    http_access deny all

    Al ejecutar squid -z me da los siguientes avisos:

    aclParseAclLine: WARNING: empty ACL: acl throttle_exts urlpath_regex -i "/var/squid/acl/throttle_exts.acl"
    2015/04/28 12:10:08| parseConfigFile: squid.conf:74 unrecognized: 'url_rewrite_bypass'

    no sé si esto te puede ayudar algo.



  • @MichelR:

    Comentarte que el squid no está en modo transparente, tengo creadas 2 port forward que redirigen todas las peticiones desde la lan net hacia los puertos 80 y 443 al proxy por el puerto 3128 para forzar que todo pase por el squid.

    No puedes hacer esto. Quita los redireccionamientos y pon la configuración de squid en modo transparente.

    Eso creará los redireccionamientos necesarios y pondrá a squid en modo transparent/intercept, que es lo que te falta.

    https://forum.pfsense.org/index.php?topic=21083.msg108436#msg108436 (transparent, squid 2.x)

    https://forum.pfsense.org/index.php?topic=83611.msg458311#msg458311 (rdr, redireccionamientos)

    https://forum.pfsense.org/index.php?topic=72872.msg402557#msg402557 (intercept, squid 3.x)



  • @MichelR:

    Al ejecutar squid -z me da los siguientes avisos:

    aclParseAclLine: WARNING: empty ACL: acl throttle_exts urlpath_regex -i "/var/squid/acl/throttle_exts.acl"

    Este error no creo que sea crítico. Quizás tocaste algo en Traffic management y el archivo ACL que se generó está vacío.



  • @MichelR:

    Al ejecutar squid -z me da los siguientes avisos:

    2015/04/28 12:10:08| parseConfigFile: squid.conf:74 unrecognized: 'url_rewrite_bypass'

    ¿ squid 2.x o 3.x ?

    https://forum.pfsense.org/index.php?topic=73740.0



  • Squid 2.X

    El tema de tenerlo no transparente es por poder filtrar el tráfico HTTPS, y el tema del NAT es por evitar que me deshabiliten los usuarios los datos del proxy desde los navegadores y poder navegar libremente.



  • Pues tienes puesta la sintaxis para integrar squidGuard a squid 3.x, no a squid 2.x. Revisa eso.

    No puedes enviar el tráfico de forma incondicional a un proxy NO transparente. Si el proxy NO es transparente el navegador debe "enterarse" de que lo tiene.

    Si quieres filtrar https sólo tienes las siguientes soluciones:

    1. Declarar el proxy en el navegador.

    2. Usar técnicas de autodescubrimiento de proxy (wpad), que NO funcionan en todas las combinaciones de s.o.+navegador clientes.

    3. Emplear squid 3.x con SSL Bump, que precisa la instalación de certificado en los navegadores de los clientes.

    Todo esto está ampliamente explicado en nuestro apartado de Documentación. Y yo diría que, además, es el tema más debatido de este foro…

    Y yendo a la fuente, http://wiki.squid-cache.org/SquidFaq/InterceptionProxy



  • Creo que no me estoy explicando bien.

    Los navegadores tienen los datos del proxy cpnfigurados correctamente, pero si algún usuario los deshabilitaba podía navegar sin filtro de squid, de ahí lo de redirigir el tráfico al squid, ahora en seguida me llaman porque no pueden navegar si intentan quitar el proxy ;D ;D

    Eso lo tengo controlado y funciona bien, el tema es la cache, por lo que veo no cachea nada, por lo que he leído en un link que me has mandado el problema es que se hacen peticiones erróneas de ahí lo del error TCP_DENIED/400.

    @bellera:

    Pues tienes puesta la sintaxis para integrar squidGuard a squid 3.x, no a squid 2.x. Revisa eso.

    No sé como ver eso, es aconsejable instalar la versión 3?
    En cuánto al proxy transparente o no,  ¿ tu que me recomiendas ? Llevo poco tiempo con pfSense y como verás me asaltan las dudas…

    Muchas gracias por todo.



  • Hola,

    Ese error  TCP_DENIED/400 1553 NONE NONE:// en modo transparente lo puede estar dando por tener el proxy configurado en el interface localhost. Si estás utilizando squid2 asegurate de no activar el proxy para localhost y si estás usando squid3 no actives el modo transparente para localhost.



  • @MichelR:

    Creo que no me estoy explicando bien.

    Los navegadores tienen los datos del proxy configurados correctamente, pero si algún usuario los deshabilitaba podía navegar sin filtro de squid, de ahí lo de redirigir el tráfico al squid, ahora en seguida me llaman porque no pueden navegar si intentan quitar el proxy ;D ;D

    Eso lo tengo controlado y funciona bien, el tema es la cache, por lo que veo no cachea nada, por lo que he leído en un link que me has mandado el problema es que se hacen peticiones erróneas de ahí lo del error TCP_DENIED/400.

    Insisto. Quita los redireccionamientos.

    Y asegúrate simplemente que en LAN no dejas ir a destinos TCP 80, TCP 443 y TCP 8000-8100 (http alternativos). Eso impedirá que naveguen directamente. No hace falta regla de bloqueo en LAN. Simplemente que no haya una regla default que permita hacer esto y más.

    Es más simple de lo que parece…

    No sé como ver eso, es aconsejable instalar la versión 3?

    Pues dejando lo que venía por defecto en Custom Integration… al instalar squidGuard para squid 2.x. Si no venía esto es que instalaste squidGuard para squid 3.x en lugar de para squid 2.x

    squid3 hace más cosas pero si no las necesitas no tienes por qué cambiar. Son ramas distintas, mantenidas las dos.

    redirect_program /usr/pbi/squidguard-squid3-i386/bin/squidGuard -c /usr/pbi/squidguard-squid3-i386/etc/squidGuard/squidGuard.conf;redirector_bypass off;url_rewrite_children 5
    

    En cuánto al proxy transparente o no,  ¿ tu que me recomiendas ? Llevo poco tiempo con pfSense y como verás me asaltan las dudas…

    En mi opinión, proxy declarado en los navegadores y asegurarse que LAN no deja ir directo. Es lo que funciona siempre. Aunque tiene la pega de tener que explicar esos a los usuarios.



  • Como siempre bellera todo perfecto.

    Lo único que no consigo es lo de la cache, he seguido tus pasos pero nada de nada, no veo ningún TCP_HIT o TCP_HIT_MEM por ningún sitio en el log. Me vendría muy bien porque hay páginas que se utilizan mucho por todos los usuarios de la red, además de las actualizaciones de windows y antivirus que aliviarían mucho el ancho de banda.

    Muchísimas gracias por todo, poco a poco voy comprendiendo como funciona pfSense.



  • @ncolunga:

    Ese error  TCP_DENIED/400 1553 NONE NONE:// en modo transparente lo puede estar dando por tener el proxy configurado en el interface localhost. Si estás utilizando squid2 asegurate de no activar el proxy para localhost y si estás usando squid3 no actives el modo transparente para localhost.

    ncolunga, supongo que si lo tuviera configurado debería ver algo así en el squid.conf

    http_port 127.0.0.1:3128

    He revisado el fichero de configuración y no veo nada parecido.
    Además no tengo el squid en modo transparente.



  • @MichelR:

    no veo ningún TCP_HIT o TCP_HIT_MEM por ningún sitio en el log.

    Prueba con un contenido estático dos veces como mínimo, forzando el refresco en el navegador o desde dos PCs distintos.

    Por ejemplo, http://www.bellera.cat/josep/pfsense/indice.html

    Si sigues igual, algo no va bien en la caché. Revisa logs de squid.

    @bellera:

    • Status - Services para ver si el servicio está en marcha o no. Ahí puede pararse y ponerse en marcha. Tarda un rato en actualizarse la página…
    • En Status - System logs - System verás las posibles puestas en marcha y paros de squid.
    • En Services - Proxy server verás que tienes Log store directory puesto a /var/squid/logs Puedes mirar el archivo cache.log a través de la consola. Este archivo va diciendo qué pasa con el funcionamiento de squid.
    • A parte de esto veo que en el configurador web se puede marcar la casilla Enabled logging. Si se hace tendrás también access.log. Este tiene los accesos que van haciendo los usuarios. Existe un tercer archivo llamado store.log que va registrando qué pasa con los objetos de la caché (altas, bajas, actualizaciones).


  • @MichelR:

    las actualizaciones de windows y antivirus

    Si tienes muchos usuarios plantéate repositorios locales.

    Para Windows, https://forum.pfsense.org/index.php?topic=23148.msg119166#msg119166

    https://technet.microsoft.com/es-es/library/hh852345.aspx o http://download.wsusoffline.net/

    Para el antivirus, hay soluciones corporativas en las que los clientes toman las actualizaciones desde un servidor local.



  • Muchas gracias bellera, todo solucionado.

    Buen aporte wsusoffline, me voy a poner a ello rápidamente porque es muy buena solución, además se puede programar una tarea para que se haga automáticamente un determinado día.

    http://www.miniacademia.es/wsus-offline-update/

    Un saludo



  • amigo como solucionaste tu problema?