Publicado el 12 de Marzo del 2019
598 visualizaciones desde el 12 de Marzo del 2019
135,8 KB
9 paginas
Creado hace 18a (24/02/2007)
Squid, un proxy caché para GNU/Linux
24 de febrero de 2007
Resumen
En este documento se describe la instalación y configuración del proxy-
cache squid, para controlar el acceso de una red local a Internet. Esta docu-
mentación se elaboró para el curso Máquinas virtuales para la puesta en marcha
de un portal educativo organizado por el CEP de Sevilla en Septiembre de 2006.
cJosé Angel Bernal, Fernando Gordillo, Hugo Santander y Francisco Villegas
cAlberto Molina Coballes y José Domingo Mu ñoz Rodríguez. Algunos Dere-
chos reservados.
Este trabajo es una obra derivada de la documentación del curso Software Libre
y Educacion: servicios de red, gestores de contenidos y seguridad de José Angel Bernal,
Fernando Gordillo, Hugo Santander y Paco Villegas. Esta obra se distribuye bajo
una licencia Attribution-ShareAlike 2.5 de Creative Commons. Para ver una copia
de esta licencia, visite:
http://creativecommons.org/licenses/by-sa/2.5/
1
1. Visión general
Como alternativa al software comercial existente, apareció Squid. Su funcio-
namiento se basa en guardar las peticiones que hacen los usuarios a servidores
web remotos. Cuando un usuario quiere acceder a una página la solicita a Squid,
que se encarga de acceder al servidor web remoto. Una vez obtenida, la reenvía
al usuario, guardando una copia. En el caso que otro usuario solicite de nuevo
esa página, únicamente tendrá que recuperarla de su disco local y servirla.
Otra función que realiza Squid es la de proporcionar un servicio de proxy a
ordenadores que necesiten acceder a Internet a través de alg ún tipo de cortafue-
gos. Por eso es com ún denominar a Squid como un proxy caché, al unir las dos
funcionalidades que presenta.
Squid puede almacenar datos de los protocolos HTTP, FTP, Gopher y DNS.
El tener un servidor de caché especializado puede reducir considerablemente el
uso que se haga del ancho de banda disponible. En lugar de descargar páginas
repetidamente, se comprobará si la página del servidor remoto es más nueva que
la que tiene almacenada en disco. De no ser así, no se molestará en descargarla.
2. Conceptos sobre cachés
Los servidores que act úan de proxy-caché se pueden configurar de varias for-
mas. La forma más simple es un solo servidor proxy-caché en la red en el que
todos los ordenadores pertenecientes a esa red accederán a este servidor, que
será el que almacenará todos los datos. Cuando un usuario solicita al servidor
una página, éste comprueba si fue actualizada desde que fue almacenada. Si tiene
la versión actualizada ahorra al usuario final la descarga de la misma propor-
cionándosela directamente.
Otro método de configurar la salida a Internet de una red de ordenadores es
creando una jerarquía de servidores proxy-caché. Los servidores en un nivel su-
perior a un servidor son denominados padres (parent) y los que se encuentran al
mismo nivel son hermanos o iguales (sibblings, neighbor o peer).
Cuando Squid obtiene una petición de un cliente, comprueba si el objeto so-
licitado (página, gráfico o fichero) está en el disco del servidor. Si está, comprueba
que el objeto no está caducado y procede a enviarlo al cliente. Si, por el contrario,
el objeto no está o ha caducado, comprueba que otras cachés (padres o hermanas)
lo tengan. Lo hace a su vez enviando paquetes UDP a esas máquinas con la URL.
3.
Instalación
Se instala simplemente con:
apt-get install squid
Los ficheros y directorios más importantes son:
En el directorio /etc/squid se guardan los ficheros de configuración. Es-
pecíficamente en el fichero squid.conf se encuentra la mayor parte de
ella.
2
Una parte importante de ficheros se encuentran en /usr/lib/squid, pero
no tendremos que preocuparnos de ellos por ahora.
La documentación se encuentra en /usr/share/doc/squid-x.x.x/
En /var/spool/squid se van a encontrar las páginas “cacheadas”, es de-
cir, las traídas desde Internet y que se almacenan para la próxima vez que
las solicite alguien y no hayan cambiado.
En /var/log/squid se guardan los accesos de nuestros usuarios a Inter-
net a través del proxy, así como los posibles errores que hayan ocurrido.
4. Configuración de Squid
El archivo de configuración que utiliza Squid es /etc/squid/squid.conf,
pudiendo encontrarse en otras localizaciones dependiendo de la instalación. Este
archivo está ampliamente comentado por lo que no lo analizaremos de forma
detallada, sino que haremos un rápido recorrido por el fichero de configuración
centrándonos en los aspectos que consideremos más importantes.
Una de las primeras directivas de configuración que aparece es:
http_port 3128
que indica el puerto en el que va a estar escuchando Squid.
Como ya hemos descrito, Squid es un proxy-caché y pueden existir elementos
que no queramos almacenar. Esto puede conseguirse a través del fichero de con-
figuración. Con la siguiente línea no almacenaríamos en caché ning ún objeto que
se encuentre en la ruta cgi-bin:
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
Posteriormente veremos con más detalle la sintaxis y usos de la directiva acl
para la creación de clases.
Es posible también definir parámetros de uso de memoria. Si queremos definir
la cantidad de memoria RAM que deseamos asignar a las funciones de Squid con
un valor de 8 Mb1
cache_mem 8 MB
Es posible también definir cuando se empieza a eliminar archivos de la caché.
Cuando la caché llega al total del porcentaje de cache swap high Squid comien-
za a eliminar los elementos almacenados menos utilizados hasta que llega al total
del porcentaje cache swap low.
cache_swap_low 90
cache_swap_high 95
1Con las configuraciones actuales y en función del uso de nuestra máquina, en general, debe-
mos optar por un valor mayor.
3
Otra alternativa para regular el caché es configurarlo para que no almacene archivos
que tengan un tama ño mayor que el indicado:
maximum_object_size 4096 KB
Ya hemos comentado que el caché de Squid es un espacio en disco reservado para
almacenar los distintos objetos que se piden a través del proxy. Será necesario
definir el lugar donde se va a almacenar el caché2.
cache_dir ufs /var/spool/squid 100 16 256
El formato genérico de esta directiva es:
cache_dir tipo directorio Mbytes L1 L2 [options]
tipo. Tipo de sistema de almacenamiento a utilizar (ufs es el único que
está definido por defecto en la instalación).
directorio. Ruta del directorio que se va a utilizar para guardar los datos
del caché.
Mbytes. Cantidad de espacio en disco que se va a utilizar para el caché. Si
queremos que utilice el disco entero es recomendable poner aquí un 20 %
menos del tama ño.
L1. N úmero de subdirectorios de primer nivel que serán creados bajo direc-
torio.
L2. N úmero de subdirectorios de segundo nivel que serán creados bajo cada
subdirectorio de primer nivel.
Una consideración a tener en cuenta es que el contenido de este directorio va a
cambiar con frecuencia, siendo recomendable colocarlo en una partición separada
por varias razones:
La caché podría sobrepasar al resto del sistema de archivos o de la partición
que comparte con otros procesos.
Cuanto más cambie un sistema de archivos, mayores son también las posi-
bilidades de que se encuentre da ñado. Mantener la caché en una partición
limita la parte de su sistema completo de archivos que resulta da ñado.
También es posible configurar la localización de los archivos de log así como la
información general de la caché3
access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
2El valor de 100MB es escaso para los discos duros actuales, un valor de 1GB puede ser mejor
si nuestro disco lo permite.
3Los ficheros de contabilidad que deja, pueden ser monitorizados para impedir accesos a Inter-
net no deseados. Un ejemplo real es el de un organismo que manda semanalmente a los usuarios
de Internet un fichero con los accesos en ese periodo. El usuario se siente controlado y es más
responsable con sus accesos.
Una herramienta sencilla de configurar y muy útil para obtener estadísticas sobre las páginas
visitadas es sarg.
4
5. Control de acceso
Otro aspecto importante en la configuración de Squid son las listas de control
de acceso o ACL4. Una de sus principales funciones es la de permitir o denegar
el acceso a la caché, aunque no se queda aquí. Las ACL pueden usarse también
para definir las jerarquías de caché.
El procedimiento que se sigue es definir las distintas ACL y posteriormente se
permite o deniega el acceso a una determinada función de la caché. La opción de
configuración encargada es http access, que permite o deniega al navegador
web el acceso a Squid. Es importante tener en cuenta que Squid lee las directivas
de arriba a abajo para determinar qué regla aplicar.
Veamos un primer ejemplo de uso. Supongamos que disponemos de una red
de clase C (con direcciones IP dentro de la red 172.26.0.0) y que solo queremos
permitir el acceso a Internet a través de Squid a estas máquinas.
acl hostpermitidos src 172.26.0.0/255.255.255.0
acl all src 0.0.0.0/0.0.0.0
http_access allow hostpermitidos
http_access deny all
Las dos primeras líneas de este ejemplo crean las ACL hostpermitidos y all.
Cuando utilicemos un fichero como origen de los datos de la ACL deberá con-
tener un elemento por línea. Algunos de los tipos de ACL que podemos utilizar
en esta directiva son:
Direcciones IP de los clientes. Especifica la dirección IP local, dirección de
red o rango de direcciones a buscar
acl nombreACL src dirIP/máscara
acl nombreACL src dirIP1-dirIP2/máscara
Dirección IP de la URL destino. Especifica la dirección IP de la máquina
remota, dirección de red o rango de dirección a buscar
acl nombreACL dst dirIP/máscara
acl nombreACL dst dirIP1-dirIP2/máscara
Dominio de la máquina cliente. Especifica el host.dominio.extensión
o bien el dominio.extensión a buscar
acl nom
Comentarios de: Squid, un proxy caché para GNU/Linux (0)
No hay comentarios