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%C3%B3digos_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 0pid_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 secondsAllow local network(s) on interface(s)
acl localnet src 172.26.0.0/255.255.255.0
uri_whitespace stripcache_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 95No 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 localhosthttp_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !safeports
http_access deny CONNECT !sslportsAlways 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 100Throttle 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 allCustom 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=0Block 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 localnetDefault 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.
-
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)
-
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.
-
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.
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.
-
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.
-
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. -
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.
- 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).
-
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?