Capítulo 29. Servidor alterno Squid

Tabla de contenidos

29.1. Algunos aspectos de los cachés alternos
29.2. Requisitos del sistema
29.3. Inicio de Squid
29.4. Archivo de configuración /etc/squid/squid.conf
29.5. Configuración de un alterno transparente
29.6. cachemgr.cgi
29.7. squidGuard
29.8. Generación de informes de caché con Calamaris
29.9. Información adicional

Resumen

Squid es un caché alterno (proxy) muy utilizado en plataformas Linux y UNIX. Esto significa que almacena los objetos de Internet solicitados, como los datos de un servidor Web o FTP, en un equipo más cercano a la estación de trabajo que los solicita que el servidor original. En este capítulo se describe su configuración, los ajustes necesarios para que funcione, cómo configurar el sistema para que el servicio del alterno sea transparente, cómo recopilar estadísticas de uso de caché con la ayuda de programas como Calamaris y cachemgr y cómo filtrar contenido Web con squidGuard.

Squid actúa como caché alterno (proxy). Redirige las solicitudes de objetos de los clientes (en este caso, los navegadores Web) al servidor. Cuando los objetos solicitados llegan del servidor, los entrega al cliente y conserva una copia en el caché del disco duro. Una de las ventajas del almacenamiento en caché es que si varios clientes solicitan el mismo objeto, el servicio los puede proporcionar desde el caché del disco duro. De este modo, los clientes reciben los datos mucho más rápido que cuando tienen que obtenerlos desde Internet. Este procedimiento también reduce el tráfico de la red.

Además del almacenamiento en caché, Squid ofrece una amplia variedad de funciones, como la distribución de la carga en las jerarquías de los servidores alternos, la definición de estrictas listas de control de acceso para todos los clientes que accedan al alterno, el permiso o la denegación de acceso a páginas Web concretas (con la ayuda de otras aplicaciones) y la generación de estadísticas de las páginas Web visitadas con más frecuencia con el fin de evaluar los hábitos de navegación de los usuarios. Squid no es un alterno genérico. Normalmente sólo ejerce sus funciones con conexiones HTTP. También es compatible con los protocolos FTP, Gopher, SSL y WAIS, pero no es compatible con otros protocolos de Internet, como Real Audio, noticias o videoconferencia. Dado que Squid sólo es compatible con el protocolo UDP para proporcionar comunicaciones entre diferentes cachés, muchos otros programas multimedia tampoco son compatibles.


29.1. Algunos aspectos de los cachés alternos

Squid puede utilizarse de varios modos diferentes como caché alterno. Si se combina con un cortafuegos, puede mejorar la seguridad. Se pueden utilizar varios alternos al mismo tiempo. También es posible determinar los tipos de objetos que deben almacenarse en caché y durante cuánto tiempo.

29.1.1. Squid y la seguridad

Existe la posibilidad de utilizar Squid con un cortafuegos para proteger las redes internas del exterior al utilizar un caché alterno. El cortafuegos deniega el acceso a los servicios externos a todos los clientes excepto a Squid. Todas las conexiones Web deben establecerse a través del alterno. Con esta configuración, Squid controla por completo el acceso Web.

Si la configuración del cortafuegos incluye una zona DMZ, el alterno debe funcionar en dicha zona. La Sección 29.5, “Configuración de un alterno transparente” describe cómo implementar un alterno transparente. Esto simplifica la configuración de los clientes, dado que en este caso no necesitan ninguna información sobre el alterno.

29.1.2. Cachés múltiples

Existe la posibilidad de configurar varias sesiones de Squid de modo que intercambien objetos entre sí. Se reduce así la carga total del sistema y aumentan las posibilidades de encontrar un objeto que ya exista en la red local. También es posible configurar jerarquías de caché, de modo que un caché pueda enviar solicitudes de objetos a cachés del mismo nivel o a cachés principales, de modo que los objetos se obtengan de otro caché de la red local o directamente desde el origen.

La selección de la topología adecuada para la jerarquía de caché es muy importante, dado que no es deseable aumentar el tráfico general de la red. En una red muy grande, puede resultar conveniente configurar un servidor alterno para cada subred y conectarlos a un alterno principal, que a su vez esté conectado al caché alterno del proveedor de Internet.

Todas estas comunicaciones se gestionan mediante ICP (protocolo de caché de Internet), que se ejecuta sobre el protocolo UDP. Las transferencias de datos entre cachés se gestionan mediante HTTP (protocolo de transmisión de hipertexto) basado en TCP.

Para encontrar el servidor más adecuado desde el que obtener los objetos, cada caché envía una solicitud ICP a todos los alternos del mismo nivel. Éstos responden a las solicitudes mediante respuestas ICP con un código HIT si se detecta el objeto, o MISS si no es así. Si se detectan varias respuestas HIT, el servidor alterno decide desde qué servidor desea efectuar la descarga, dependiendo de factores como el caché que envió la respuesta más rápida o el que se encuentra más cerca. Si no se recibe ninguna respuesta satisfactoria, la solicitud se envía al caché principal.

[Tip]Sugerencia

Para evitar la duplicación de objetos en diferentes cachés de la red, se emplean otros protocolos ICP, como CARP (protocolo de encaminamiento de matrices de cachés) o HTCP (protocolo de caché de hipertexto). Cuantos más objetos se mantengan en la red, mayores son las posibilidades de encontrar el deseado.

29.1.3. Almacenamiento en caché de objetos de Internet

No todos los objetos disponibles en la red son estáticos. Hay muchas páginas CGI generadas de forma dinámica, contadores de visitantes y documentos con contenido cifrado mediante SSL. Estos tipos de objetos no se almacenan en caché, dado que cambian cada vez que se accede a ellos.

La cuestión es cuánto tiempo deben permanecer en caché los demás objetos almacenados. Para determinarlo, a todos los objetos en caché se les asigna uno de los distintos estados posibles. Los servidores Web y alternos averiguan el estado de los objetos añadiéndoles encabezados como “Última modificación” o “Caduca”, junto a la fecha correspondiente. Otros encabezados especifican que los objetos no deben almacenarse en caché.

Los objetos en caché suelen sustituirse debido a la falta de espacio disponible en disco. Para ello se emplean algoritmos como el de uso más reciente (LRU). Básicamente, esto significa que el alterno desecha los objetos que no se han solicitado desde hace más tiempo.