Desarrollador(es) | Duane Wessels, Henrik Nordström, Amos Jeffries, Alex Rousskov, Francesco Chemolli, Robert Collins, Guido Serassio y voluntarios [2] |
---|---|
Lanzamiento inicial | Julio de 1996 ( 1996-07 ) |
Versión estable | 6.12 [3] / 11 de octubre de 2024 |
Repositorio | github.com/squid-cache/squid |
Escrito en | C++ [4] |
Sistema operativo | BSD , Linux , Unix , Windows [5] |
Tipo | Servidor proxy |
Licencia | GPL 2.0 o posterior [6] |
Sitio web | www.squid-cache.org |
Squid es un proxy web HTTP de reenvío y almacenamiento en caché . Tiene una amplia variedad de usos, incluida la aceleración de un servidor web mediante el almacenamiento en caché de solicitudes repetidas, el almacenamiento en caché de la World Wide Web (WWW), el Sistema de nombres de dominio (DNS) y otras búsquedas de red para un grupo de personas que comparten recursos de red, y la ayuda a la seguridad mediante el filtrado del tráfico. Aunque se utiliza principalmente para HTTP y el Protocolo de transferencia de archivos (FTP), Squid incluye soporte limitado para varios otros protocolos, incluidos Internet Gopher , Secure Sockets Layer (SSL), [7] Transport Layer Security (TLS) y Hypertext Transfer Protocol Secure ( HTTPS ). Squid no admite el protocolo SOCKS , a diferencia de Privoxy , con el que Squid se puede utilizar para proporcionar soporte para SOCKS.
Squid fue diseñado originalmente para ejecutarse como un demonio en sistemas tipo Unix . Se mantuvo un puerto para Windows hasta la versión 2.7. Las nuevas versiones disponibles en Windows utilizan el entorno Cygwin . [8] [9] Squid es software libre publicado bajo la Licencia Pública General GNU .
Squid fue desarrollado originalmente como el caché de objetos Harvest , [7] parte del proyecto Harvest en la Universidad de Colorado en Boulder . [10] [11] Se completó más trabajo en el programa en la Universidad de California, San Diego y se financió a través de dos subvenciones de la National Science Foundation . [12] Duane Wessels bifurcó la "última versión precomercial de Harvest" y la renombró Squid para evitar confusiones con la bifurcación comercial llamada Cached 2.0, que se convirtió en NetCache . [13] [14] La versión 1.0.0 de Squid se lanzó en julio de 1996. [13] SquidNT , un puerto del servidor proxy Squid, se fusionó con el proyecto principal de Squid en septiembre de 2006. [15]
En la actualidad, Squid se desarrolla casi exclusivamente gracias a esfuerzos voluntarios.
En octubre de 2023, se reveló que Squid seguía sufriendo 35 vulnerabilidades de seguridad que no se habían solucionado durante dos años y medio después de su informe inicial. [16]
Una vez instalado un servidor proxy de Squid, los navegadores web pueden configurarse para utilizarlo como servidor proxy HTTP, lo que permite a Squid conservar copias de los documentos devueltos, lo que, en caso de solicitudes repetidas de los mismos documentos, puede reducir el tiempo de acceso y el consumo de ancho de banda . Esto suele ser útil para que los proveedores de servicios de Internet aumenten la velocidad para sus clientes y para las redes LAN que comparten una conexión a Internet . Dado que los servidores de almacenamiento en caché están controlados por el operador del servicio web, los servidores proxy de almacenamiento en caché no anonimizan al usuario y no deben confundirse con los servidores proxy anonimizadores.
Un programa cliente (por ejemplo, un navegador) debe especificar explícitamente el servidor proxy que desea utilizar (algo habitual en los clientes de ISP) o bien puede utilizar un proxy sin ninguna configuración adicional: "almacenamiento en caché transparente", en cuyo caso Squid intercepta todas las solicitudes HTTP salientes y almacena todas las respuestas en caché. Esto último suele ser una configuración corporativa (todos los clientes están en la misma LAN) y, a menudo, genera las preocupaciones sobre privacidad mencionadas anteriormente.
Squid tiene algunas funciones que pueden ayudar a anonimizar las conexiones, como la desactivación o modificación de campos de encabezado específicos en las solicitudes HTTP de un cliente . La persona que controla el ordenador que ejecuta Squid puede decidir si se configuran o no y para qué se configuran. Las personas que solicitan páginas a través de una red que utiliza Squid de forma transparente pueden no saber si se está registrando esta información. [17] Al menos en las organizaciones del Reino Unido, los usuarios deberían estar informados si se están monitorizando los ordenadores o las conexiones a Internet. [18]
La configuración anterior, que almacena en caché el contenido de una cantidad ilimitada de servidores web para una cantidad limitada de clientes, es la clásica. Otra configuración es la de " proxy inverso " o "aceleración de servidor web" (utilizando http_port 80 accel vhost ). En este modo, la caché sirve a una cantidad ilimitada de clientes para una cantidad limitada de servidores web (o solo uno).
Por ejemplo, si slow.example.com es un servidor web "real" y www.example.com es el servidor de caché de Squid que lo "acelera", la primera vez que se solicita una página desde www.example.com , el servidor de caché obtendría la página real desde slow.example.com , pero las solicitudes posteriores obtendrían la copia almacenada directamente desde el acelerador (durante un período configurable, después del cual se descartaría la copia almacenada). El resultado, sin ninguna acción por parte de los clientes, es menos tráfico hacia el servidor de origen, lo que significa menos uso de CPU y memoria, y menos necesidad de ancho de banda. Sin embargo, esto significa que el servidor de origen no puede informar con precisión sobre sus cifras de tráfico sin una configuración adicional, ya que todas las solicitudes parecerían haber venido del proxy inverso. Una forma de adaptar los informes en el servidor de origen es utilizar el encabezado HTTP X-Forwarded-For informado por el proxy inverso, para obtener la dirección IP del cliente real.
Es posible que un servidor Squid funcione simultáneamente como proxy normal y como proxy inverso. Por ejemplo, una empresa puede alojar su propio sitio web en un servidor web, con un servidor Squid que actúa como proxy inverso entre los clientes (clientes que acceden al sitio web desde fuera de la empresa) y el servidor web. El mismo servidor Squid podría actuar como un caché web clásico, almacenando en caché las solicitudes HTTP de los clientes dentro de la empresa (es decir, los empleados que acceden a Internet desde sus estaciones de trabajo), acelerando así el acceso web y reduciendo las demandas de ancho de banda.
Por ejemplo, una característica del protocolo HTTP es limitar una solicitud al rango de datos del recurso al que se hace referencia. Esta característica se usa ampliamente en sitios web de transmisión de video como YouTube , de modo que si un usuario hace clic en el medio de la barra de progreso del video, el servidor puede comenzar a enviar datos desde el medio del archivo, en lugar de enviar todo el archivo desde el principio y que el usuario espere a que los datos anteriores terminen de cargarse.
Las descargas parciales también son ampliamente utilizadas por Microsoft Windows Update para que paquetes de actualización extremadamente grandes puedan descargarse en segundo plano y pausarse a mitad de la descarga si el usuario apaga su computadora o se desconecta de Internet.
El formato de descarga Metalink permite a los clientes realizar descargas segmentadas emitiendo solicitudes parciales y distribuyéndolas en varios espejos.
Squid puede retransmitir solicitudes parciales al servidor web de origen. Para que una solicitud parcial se satisfaga rápidamente desde la memoria caché, Squid requiere que ya exista una copia completa del mismo objeto en su almacenamiento.
Si un usuario de video proxy está viendo una transmisión de video y navega a una página diferente antes de que el video se descargue por completo, Squid no puede conservar la descarga parcial para reutilizarla y simplemente descarta los datos. Se requiere una configuración especial para forzar que dichas descargas continúen y se almacenen en caché. [19]
Squid es compatible con muchos sistemas operativos , incluidos:
La compilación actual se basa en la última compilación de Squid 4 para Cygwin Windows de 64 bits
Squid en Windows
La NSF fue la principal fuente de financiación para el desarrollo de Squid entre 1996 y 2000. Dos subvenciones (#NCR-9616602, #NCR-9521745) recibidas a través de la División de Investigación e Infraestructura de Redes Avanzadas (ANIR) fueron administradas por la Universidad de California en San Diego.