squid -> dansguardian -> squid

Reinaldo Orrego reinaldo.orrego en gmail.com
Lun Mar 31 20:56:28 CLT 2008


El lun, 31-03-2008 a las 12:01 -0400, Victor Hugo dos Santos escribió:
> Señores,
> 
> estoy intentando configurar squid + dansguardian, con la siguiente
> estructura (base):
> 
> - usuarios sin autentificar pueden navegar en sitios básicos y se
> deniega todo los demás sitios
> - usuarios autentificados, pueden navegar en varios sitios, excepto
> los sitios bloqueados por DG
> 
> el problema es que el DG, pesar que trabajar bien con usuarios y
> grupos..  no tiene la posibilidad de autentificar los usuarios... así
> que configure el squid para solicitar el usuario y contraseña al
> cliente y después pasar estés datos al DG... hasta acá va bien !!! el
> problema es que en el DG necesito poner un proxy a donde reenviar las
> peticiones validas de los usuarios y pongo el mismo squid como proxy
> de  salida .. lo que genera un loop y me muestra este error en los
> logs:
> 
> 
> -----------------------------
> 2008/03/31 10:33:10| WARNING: Forwarding loop detected for:
> GET /favicon.ico HTTP/1.0
> Host: www.miip.es
> User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9b4)
> Gecko/2008030714 Firefox/3.0b4
> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
> Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
> Accept-Encoding: identity,gzip,deflate
> Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
> Keep-Alive: 300
> Proxy-Authorization: Basic dmhzYW50QnVuZGEwOQ==
> Via: 1.1 proxy2.midominio.com (squid/3.0.PRE6)
> X-Forwarded-For: 172.X.X.150
> Cache-Control: max-age=259200
> X-Forwarded-For: 172.X.X.150
> -----------------------------
> 
> bien... he visto varias paginas, intentando evitar este loop, entre ellas esta:
> http://wiki.squid-cache.org/SquidFaq/TroubleShooting#head-16ad27f86ac8fcbd395bcf440c202ee23308a7cc
> 
> donde agregue las siguientes lineas a mi squid.conf
> 
> -----------------------------
> # Our parent caches
> cache_peer localhost parent 8080 0 proxy-only no-query login=PASS no-digest
> 
> # An ACL list
> acl PEERS src localhost
> 
> # Prevent forwarding loops
> cache_peer_access localhost allow !PEERS
> -----------------------------
> 
> lo que a mi punto de vista.. debería de funcionar.. pero no !!! no
> funciona, continua con el mismo error en los logs (sii.. reinicie
> ambos servicios).
> 
> también.. intente modificar los parámetros "visible_hostname" y
> "unique_hostname" con nombres distintos.. pero nada..
> 
> mmmmm.. según mi punto de vista, existen las siguientes posibilidades..
> 
> 1 - poner una otra instancia de squid, a donde el DG pueda enviar las
> solicitudes (cliente > squid > DG > squid) ... no me agrada mucho la
> idea, porque debería de modificar los scripts de inicio de squid y
> efectuar algunos cambios raros en los archivos de configuracion.
> 
> 2 - poner una instancia de privoxy al frente del DG, quedando asi
> (clinte -> squid -> DG -> privoxy) ... posiblemente sea la mejor
> alternativa hasta el momento.. pero el tema es que no conozco muy bien
> privoxy y tengo temor de dar resultados inesperados en los clientes
> (pero estoy estudiando su implementación y efectos)
> 
> 3 - encontrar algún parámetro en el squid, que evite el loop y dejar
> la estructura tal cual esta ahora (lo que seria mejor en estes
> momentos).
> 
> bien.. abajo, envio los parámetros de mi squid.conf en estés momentos:
[...]

> bien.. ojala alguien haya encontrado una solución para este tema y/o
> tenga alguna idea que pueda ayudar.

La verdad es que yo nunca he echo la prueba de hacer lo que tu estas
intentando, pero se me ocurre una idea que te podria servir.

Yo tengo un Squid con Dansguardian funcionando actualmente en mi red,
pero de la forma

Cliente > Dansguardian > squid > firewall

Danswardian, squid y firewall en la misma maquina, pero Dansguardian y
squid en un entorno chroot.

Lo que podrias hacer es instalar dos veces squid en entornos chroots
separados y usando puertos separados. Yo lo estoy haciendo con proxy
transparente, no se si tu estas trabajando de la misma forma. Pero yo lo
tengo asi

cliente > gw/firewall (redirecciona al puerto 8080) > danswardian(8080)
> squid(3128) > internet

Tu podrias hacer lo siguiente

cliente > gw/firewall (redirecciona al puerto 8888) > squid1 (8888) >
danswardian(8080) > squid2(3128) > internet

(dejando cada squid en un chroot separado).

Como te he dicho no he probado esta solucion, pero me imagino que
deberia funcionar

Saludos



Más información sobre la lista de distribución Linux