Squid proxy – Parte 1

Hola a todos, pueden llamarme Brody. Soy especialista del área de centro de datos, tambien un fanboy del mundo de linux por el simple hecho que hace mi vida y trabajo mas fácil. Piensenlo!

De este punto en adelante, los tratare de “tú” de una forma mas impersonal, mas en confianza. Mis tutoriales no serán de solamente instalar un servicio y ya, te daré todos los conocimientos y herramientas necesarias para que exprimas al máximo las capacidades de cada característica de una aplicación, cualquier duda manda un mensaje al inbox

Squid no es solamente un servicio de proxy y cache, puede hacer mucho mas: manejar acl (listas de acceso), filtrar contenido, hasta puede hacer filtrado ssl aun en modo transparente (método de proxy – sin tener que configurar en las opciones de proxy de sus navegadores, es como man in the middle, nadie sabe que esta ahí). Entonces comúnmente veo como se desperdicia todo el potencial de esta aplicación por no saber configurar cada una de sus partes.

Pero lo primero es lo primero, veamos solo la caracteristica de proxy.

Instala:

aptitude install squid3

Edita el archivo de configuración:

vi /etc/squid3/squid.conf

  • http_port ip:puerto

Un ejemplo seria http_port 172.16.128.50:3128  el servicio sera prestado por la ip y puerto especificados, particularmente yo no te recomendaría dejar el puerto 3128 por defecto en un ambiente de producción.

  • acl localnet src  ip/mascara

Un ejemplo seria acl localnet src  172.168.128.0/24 la lista de acceso general (lo mas macro posible) que tendrá acceso a dicho servicio. localnet es como se llama la acl, pero podrías colocar el nombre que quisieras ahí.

  • http_access allow localnet

Sencillo http_access allow localnet el mismo nombre que colocaste en el item anterior, aquí permitimos a esta red, navegar y usar los servicios de squid

  • quick_abort_min 0KB
  • quick_abort_max 0KB

Momento en que abortamos alguna petición. Te lo explico mas detallado: cuando un usuario esta navegando a través de tu proxy y cancela una petición o descarga, tienes 3 opciones, si la descarga falta menos de quick_abort_min 80KB entonces igual Squid la descargara, si la descarga le falta mas que quick_abort_max 150 KB entonces se cancelara de inmediato, si ambos se configuran en 0KB como es el caso, la descarga finaliza apenas el usuario cancela.

  • read_timeout 5 minutes

Este es el tiempo en que durara abierta una sesión del servidor siempre y cuando no haya una nueva lectura, por ejemplo en una pagina estática, no es necesario un valor muy elevado pero en paginas dinámicas como facebook este es un valor aceptable

  • request_timeout 3 minutes

Este valor podría ser mucho menor, depende de la calidad de la conexión wan de tu servidor y la cantidad de clientes que tengas. Este parámetro hace referencia al tiempo máximo de espera por las cabeceras http de una petición, después de establecer la conexión.

  • half_closed_clients off

Evita que queden conexiones medio cerradas debido a errores de comunicación. No quieres dejar bajo ningún concepto que se desperdicien los recursos de tu servidor.

  • shutdown_lifetime 15 seconds

Esta etiqueta permite acortar el tiempo de espera para cerrar los procesos de squid cuando se hace un SIGTERM o SIGHUP

  • log_icp_queries off

Este lo dejo a tu discreción, por defecto viene on, y es para registrar en log cada query realizado al cache del proxy.

  • dns_nameservers 8.8.4.4 8 8.8.8.8

Las consultas dns seran realizadas a estas ip’s separadas por espacio, si ninguna es definida se usan por defecto los dns de tu sistema

  • dns_v4_first on

Bueno depende del pais o configuraciones de tu entorno, pero en mi caso no tengo DNS ipv6, entonces coloca por defecto que todo sea consultado primero a en ipv4

  • ipcache_size 2048

Numero máximo de entradas en el cache dns de squid

  • ipcache_low 90

El tamaño menor de entradas cache dns.

  • fqdncache_size 4096

Numero maximo de entradas FQDN en la cache

  • memory_pools off

Desactivamos que se reserve memoria RAM para futuros procesos de squid, si en tu servidor es un recurso muy escaso

  • forwarded_for off

si quieres evitar que vean tus ip privadas desde la wan, las peticiones llegaran con un unknown, o en tal caso ru ip wan

iniciamos la cache

squid3 -z

Reiniciamos el servicio

service squid3 restart

Para finalizar solo debes colocar en tu navegador, en opciones de proxy la ip y puerto, listo debes estar navegando

Esto es todo por esta ocasión, ya saben que con esto tendrán un squid bien robusto, en próximas entradas haremos cache con squid


24 comentarios

  1.   Ing. Jose Albert dijo

    Excelente, tutorial paso a paso. lo que más me gusto fue la explicación opción por opcion del repertorio de configuraciones.

    Laque más me gusto fue la opción de:

    quick_abort_min 0KB
    quick_abort_max 0KB

    creo que esta es sumamente importante porque muchas veces un usuario puede perder (cancelar) por X situación una descarga próxima ha finalizar y este parámetro bien estimado según nuestros recursos informáticos nos puede permitir continuar con dicha descarga, ya que muy posiblemente tanto como el mismo usuario u otro pudiese intentar en un lapso breve reintentar la descarga del mismo elemento ahorrando trafico hacia internet.

    Corrígeme si me equivoco, BrodyDalle?

    1.    BrodyDalle dijo

      Si y no, te explico.

      Efectivamente la descarga finalizara exitosamente aunque el usuario haya cancelado la misma, solamente entonces cuando el mismo usuario u otro intente descargar la aplicación o pagina web, squid entregara una copia que ya tiene en cache y no ira a Internet a descargar nuevamente los datos. Ahora atención aquí el efecto de reanudar es solamente de un gestor de descarga que almacena los datos en cache de tu maquina durante un tiempo predeterminado y te permite reanudar una descarga cancelada o interrumpida, no es de squid.

      En próximos tutoriales daré a fondo squid como cache, para que no desperdicies los recursos WAN (Internet) de tu red

  2.   javier espinoza dijo

    excelente articulo estoy aprendiendo sobre squid y su implementacion muchas gracias me viene muy bien

    1.    BrodyDalle dijo

      gracias, atento que en próximos tutoriales daré a fondo squid como cache, para que no desperdicies los recursos WAN (Internet) de tu red

  3.   henrry servita dijo

    gran tutorial siempre es bueno ampliar el conocimiento. saludos

  4.   Miguel Piña dijo

    Hola, antetodo gracias por el tema, las explicaciones y el conocimiento que se aporta. Tengo mas que comentar, una duda. Traigo a la mesa un problema que precisamente me sucedió con squid3 en Debian, resulta ser que un buen día, hace meses, actualicé el sistema y junto con este upgrade vino una nueva version de squid, la 3.5, a partir de ahí el proxy dejó de pasar todas las conexiones HTTPS, o sea de buenas a primera ya no abría https//www.google.com.cu, https://www.facebook.com y cualquier cosa que usara el protocolo seguro HTTPS. Investigando un poco, encontré que el problema estaba en el manejo del SSL, cosa de Debian dejó de empaquetar con squid3 por cuestiones legales y filosóficas. NO tengo que decir la incomodidad que existió en la entidad los dias que traté de solucionar este “problema” que al final no pude arreglar, sino que regresé a la versión anterior de Squid3 y retuve el paquete con aptitude para evitar que volviera a actualizarse. En el sitio donde se reportan los bugs de squid hablaba de un bug llamado “squid-in-the-middle”, y alertaba que todos los squid desde la version 3.4.8 hacia atrás eran vulnerables, por lo que recomendaban actualizar a la version mas reciente y compilar el squid con SSL + poner a generar los certificados manualmente…. POR FAVOR! Si alguien se ha topado con esta situación y lo ha resuelto me gustaría fuera tan amable y me diera una luz acerca de este tema y sino, por lo menos que comente que le sucedió lo mismo… y cual fue la solución aplicada. Gracias.

    1.    BrodyDalle dijo

      Actualmente en Debian Jessie esta solo disponible hasta la versión 3.4.8-6+deb8u1… Sin embargo te puedo decir que puedes usar ssl bump si usas squid en modo transparente. http://wiki.squid-cache.org/ConfigExamples/Intercept/SslBumpExplicit…. no pongo en duda tu aporte, por eso pronto instalare la versión mas nueva desde su pagina oficial

  5.   Antonio A. dijo

    Buenos días,

    En cuanto a términos de rendimiento, ¿valdría la pena instalarlo en una Raspberry Pi 2?

    Gracias por adelantado, saludos.

  6.   Antonio A. dijo

    Hola,

    Buen tutorial, pero tengo una pregunta: en términos de rendimiento, ¿valdría la pena instarlarlo en una Raspberry Pi 2?

    Saludos.

    1.    BrodyDalle dijo

      La respuesta corta es No… lo puedes hacer pero ciertas características como interfaz de red, procesador, disco son muchos tus cuellos de botella. Ahora si igual necesitas hacer de proxy, creo que sale mejor tinyproxy

      Gracias por tu participación

  7.   Tabris dijo

    Tenés experiencia con Squid dentro de pfSense?

    1.    BrodyDalle dijo

      si, que necesitas saber? a ver si te puedo ayudar.

  8.   acontreras90 dijo

    Buen tutorial, y a muy buena hora. No se mucho del tema actualmente estoy instalando el proxy en mi empresa con la squid.conf de una version anterior y hay cosas q han cambiado la sintaxis. Me ha servido muchisimo. seguire a la espera de la parte 2.
    Muchisimas Gracias

    1.    BrodyDalle dijo

      gracias por tu comentario, pendiente que pronto estará disponible la segunda parte de squid sobre como hacer cache.

  9.   ramses dijo

    Excelente, hace tiempo implemente un ubuntu server con squid y corria bastante bien ahora ya tengo tiempo desconectado de linux y me gustaria retomar el tema de los server con cache para darle mayor rendimiento al temas de los wisp, gracias por tu aporte Brody!

  10.   rodrigoarielpizarro dijo

    Buenas, muy copada tu ayuda, juste entré por el tema de los IPV6 con los DNS y estoy teniendo problemas ahí. Al aparecer ninguna web con IPV6 me estaría funcionando, entonces estoy necesitando saber si la configuracion dns_v4_first on necesita ser activado antes cuando se compila el squid, porque en 3.3.8 no estaría funcionando.

  11.   jocampo dijo

    Buen día.
    Para empezar, ha sido de mucha ayuda este tutorial. Ahora expongo mi caso, ya que no sé si con squid puedo solucionar mi necesidad o debo buscar otra alternativa.
    Tengo una aplicación configurada sobre una intancia EC2 de AWS, la cual debe realizar peticiones a una api de amazon, el inconveniente surge cuando estas peticiones son masivas, por lo que amazon reconoce la ip y rechaza estas peticiones por un tiempo, generando inconvenientes en la aplicación que tengo. Para solventar esto, usamos el servicio Proxymesh, el cual toma la petición y la envía desde alguna de sus ip’s, evitando así dicho bloqueo, el caso es que para esto, al hacer la petición a amazon, lo hacemos mediante curl en php, dando como opción que se conecte al proxymesh. Ahora estoy buscando la posibilidad de que sea desde la instancia que se pueda configurar que cuando se hagan peticiones al api de amazon, vayan directamente al servicio de proxymesh para que sea el quien se encargue de enviar la petición al destino final. ¿Es posible realizar esta redirección con squid o me recomiendas otra alternativa?
    Muchas grascias.

  12.   janho dijo

    Alquien ha probado multiples esquemas de autenticacion sobre squid? Tengo instalada la version 3.5.22 en debian y por mas que he probado diferenetes variantes no funciona, mi situacion es que necesito que tanto los usuarios de mi AD como otros usuarios externos puedan loguearse, si me funcionan por separado o sea ntml para usarios del dominio logueados y basic (ncsa) para externos pero no las dos a la vez. cualquier ayuda sera util. gracias de antemano

  13.   Will dijo

    Estimado, no se a que se deba, habia instalado squid sin problemas, pero al actualizarlo a la version 3.5 el fichero access.log empezó a quedarse vacio, ya no almacena datos cuando antes si lo hacia. No se si tenga que ver y que implemente el WPAD para ya no usar la configuracion transparente, asi como quitar el redireccionamiento del puerto 80 al 3128 como se hace normalmente, ya que con el wpad ya no es necesario esa regla.

    será por eso que el access.log ahora ya no registra actividad?

    Saludos !!

  14.   Cristian dijo

    Buenas muy buena guia !

    Hace un tiempo que uso squid como web proxy, pero últimamente estoy notando que me tarda n realizar búsqueda o en abrir paginas.. puede ser que necesite purgar el cache?

    Alguien tiene configurado squid con mkt, como les funciona?

    Saludos

  15.   juan dijo

    Muy buena informacion, disculpa como podria unir squid con active directory para que en el momento de ingresar a una pagina bloqueada me pida el usuario y contraseña de una cuenta de active directory y si dicho usuario tiene permiso para entrar en la pagina le de acceso.

  16.   Carlos dijo

    Hola,
    excelente guia, igual y tu puedes orientarme ya que nomas no doy, tengo un internet de 20MB fibra y un squid 3.1 montado sobre centos 6.9 y doy servicio aproximadamente a 300 usuarios antes tenia un enlace de 4MB y un squid 3.1 y el mismo numero de usuarios y obvio todo super lento y mentadas al admin (yo) le echaba la culpa al enlace, por fin logre que lo cambiasen y el internet esta igual de lento, ya reinstale SO, configure squid 3.1 y nada mas no se acelera hago la medición de velocidad desde un cliente del squid y me da 18 a 20 MB pero sigo recibiendo mentadas porque el servicio esta igual de lento

    si pudieses tu o alguien que haya tenido un problema similar darme luz se lo agradeceré infinitamente.

  17.   Luis dijo

    Que pasa con las direcciones, se cambian a la dirección de red propia o se utilizan las que tu estas utilizando.

  18.   Irwing dijo

    estoy aprendiendo sobre squid debian y su implementacion muchas gracias me viene muy bien. pero me esta dando problemas con la conexion y verifico si da error y aparentemente todo esta corriendo bien.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.