
La configuración de Squid se lleva a cabo con el siguiente fichero:
/etc/squid.conf
Antes de pasar a especificar las directivas de configuración más importantes, mostraré como está configurada la jerarquia de caches para comprender mejor la configuración. Actualmente existen 3 ordenadores con Squid: Cancerbero, Hidrogeno y Sanpedro. La función de cada uno puede verse a continuación:
Hidrogeno tiene una caché con control de ancho de banda. Cancerbero es su padre y Sanpedro su hermano.
Sanpedro tiene una caché con control de ancho de banda. Cancerbero es su padre e Hidrogeno su hermano.
Cancerbero tiene una caché sin control de ancho de banda. Hidrógeno y Sanpedro son sus hermanos.
En la imágen queda reflejada la comunicación entre cachés:

Hay cuatro puntos importantes para llegar ha configurar la jerarquía de cachés que está funcionando actualmente:
definición de la jerarquia a utilizar
control de acceso a las cachés
control del ancho de banda
cacheo transparente de las peticiones
En los siguientes apartados se mostrarán las opciones necesarias para llevar a cabo estas funciones.
Antes de definir la jerarquía, debemos definir los puertos por los cuales se van a comunicar las cachés, esto se hace desde la sección NETWORK OPTIONS del archivo de configuración. Las directivas quedarían:
http_port 3128 icp_port 3130 htcp_port 4827 |
En la sección OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM del archivo de configuración de Squid definiremos las cachés vecinas de la actual y el parentesco que tienen con esta. Si tomamos por ejemplo a Hidrógeno, sus vecinos y parentescos quedarían configurados de la siguiente forma:
cache_peer 193.146.99.248 parent 3128 3130 no-digest default cache_peer 193.146.102.181 sibling 3128 3130 no-delay |
Apartado en el que veremos la forma que tiene Squid para controlar el acceso al servicio que proporciona. Si nos desplazamos hasta la sección ACCESS CONTROLS del archivo de configuración, veremos la forma de llevar a cabo nuestro cometido. El ejemplo que veremos a continuación, es una parte de la lista de control de acceso de Hidrogeno. Este ha de permitir el acceso a la red local a la que proporciona el servicio de chaché así como a sus cachés vecinas. Veamos como se hace:
Definimos las redes y los host a los que vamos a proporcionar acceso:
acl red_local src 192.168.2.0/24 acl cancerbero src 193.146.99.248/255.255.255.255 acl sanpedro src 193.146.102.181/255.255.255.255 |
Les permitimos acceder a la caché:
http_access allow red_local http_access allow cancerbero http_access allow sanpedro |
Permitimos a las cachés vecinas intercambiar mensajes de control por los puertos definidos para tal efecto:
icp_access allow cancerbero icp_access allow sanpedro |
Este control lo llevan a cabo las Delay pools. Vamos a configurar nuestro proxy de forma que determinados archivos se bajen de Internet más lentamente que otros a determinadas horas. Con esto conseguimos que la navegación web en horas puntas sea fluída, y no sea entorpecida por “bajadores compulsivos” ;-)
Si seguimos los siguientes pasos, habremos logrado nuestro cometido:
No queremos limitar las descargas en nuestra red local:
acl magic_words1 url_regex -i 192.168 |
Queremos limitar la descarga de este tipo de archivos:
acl magic_words2 url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .iso .raw .wav .mov |
Queremos limitar el ancho de banda durante el día, permitiendo el ancho de banda completo durante la noche:
acl day time 09:00-23:59 |
Tenemos dos delay_pools diferentes:
delay_pools 2 |
Primer delay pool - no queremos retrasar nuestro tráfico local:
delay_class 1 2 delay_parameters 1 -1/-1 -1/-1 delay_access 1 allow magic_words1 |
Segundo delay pool - queremos retrasar la descarga de los archivos mencionados en “magic_words2”. Limitaremos el ancho de banda de bajada de este tipo de archivos a 5 Kbytes/s:
delay_class 2 2 delay_parameters 2 5000/150000 5000/120000 delay_access 2 allow day delay_access 2 deny !day delay_access 2 allow magic_words2 |
Para evitar la configuración de cada cliente de la red a la que sirve el proxy caché, tenemos la opción de configurar Squid para que actue de forma transparente. Esto quiere decir que todas las peticines que los clientes realicen al puerto 80 (si nos referimos a la navegación web), pasarán a través de Squid automáticamente[2].
Las siguientes opciones son necesarias para que Squid trabaje de forma transparente:
httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on |
[2] Para que esto funcione realmente, es necesario configurar el cortafuegos de una manera determinada. Se verá en la documentación del cortafuegos