Está en la página 1de 79

Irontec: Curso avanzado de squid

Curso avanzado de Squid

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Qu es Squid?

Squid escucha las peticiones que hacen los usuarios de


los objetos de internet, se los entrega y se guarda una
copia. Es un proxy.
A esa copia se le denomina cache. Por lo tanto, Squid
es un proxy-cache.

Es software libre.

Muy configurable

Rpido y eficaz.
Miguel Angel Nieto
miguelangel@irontec.com

Irontec: Curso avanzado de squid

Porqu es Software libre?

Desde Irontec apostamos por el Software Libre por su


alta fiabilidad y flexibilidad.
Gracias a las posibilidades que nos ofrece el libre
acceso a las aplicaciones y a su cdigo,
podemos desarrollar proyectos de gran complejidad de
forma rpida y a precios competitivos.
El Software Libre proporciona a muchas de
nuestras soluciones una potencia difcilmente
alcanzable por sistemas privativos en plazos y en costes.
Representa para Irontec un modelo ms justo para con
la sociedad en la que vivimos.
Miguel Angel Nieto
miguelangel@irontec.com

Irontec: Curso avanzado de squid

Algunos datos sobre Squid

Existen dos versiones en desarollo. Stable-2.6 y Testing3.0


La pgina oficial se encuentra en
http://www.squid-cache.org/
Se integra con otras aplicaciones, como squidguard.
Tiene muchos modos de funcionamiento. Cache,
Inverso, Transparente...

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Esquema Proxy normal


Internet

Router

Proxy-cache Normal

Usuarios

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Esquema Proxy Inverso


Peticiones web

Internet

Router

Proxy-cache Inverso

Servidor web
Miguel Angel Nieto
miguelangel@irontec.com

Irontec: Curso avanzado de squid

Esquema Proxy Transparente


Internet

Router

Proxy-cache Transparente

Usuarios

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Otros modos de funcionamiento

Filtro de contenidos
Bloquear el acceso a contenido por categoras.

Firewall de seguridad
Es una aplicacin de seguridad restrictiva, permitiendo la salida a equipos o
subredes y denegandolo a otras.

Annimo
Provee acceso web annimo.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

La biblia

Squid es muy configurable. Tiene muchas opciones. Es


imposible conocer todas.
Podemos recurrir a la biblia.
http://www.visolve.com/squid/squid30/contents.php
Todas las opciones posibles con ejemplos. Divido en
categoras.
Ser necesario tenerlo a mano siempre que se tenga
duda.
Miguel Angel Nieto
miguelangel@irontec.com

Irontec: Curso avanzado de squid

Instalacin

Se puede hacer por cdigo fuente o descargando el


binario con las herramientas de la distribucin
seleccionada.
El binario pude no contener todas las opciones que
necesitamos.
Al compilar es necesario indicar que caractersticas
deseamos.
Tenemos una lista con ./configure --help
Miguel Angel Nieto
miguelangel@irontec.com

Irontec: Curso avanzado de squid

Instalacin por cdigo fuente

--prefix=PREFIX
Donde queremos que se dejen los ficheros (por defecto
/usr/local/squid)
--enable-ssl
Soporte para https.
--enable-default-err-language=es
En que idioma queremos los mensajes de error.
--enable-linux-netfilter
Habilita el uso de iptables para proxys transparente.
--enable-storeio=aufs,coss,diskd,ufs
Habilitamos los distintos tipos de formas para almacenar los ficheros.
--enable-basic-auth-helpers="LDAP"
Habilitamos la autenticacin ldap.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Datos bsicos

El fichero de configuracin se encuentra en


/etc/squid/squid.conf
Ya esta configurado para funcionar, contiene multiples
ejemplos y explicaciones.
Los logs se guardan en /var/log/squid
Los mensajes de error a la hora de arrancar o parar el
servicio se encuentran en /var/log/syslog o
/var/log/messages.
Miguel Angel Nieto
miguelangel@irontec.com

Irontec: Curso avanzado de squid

Pregunta

Cmo podemos controlar el acceso a nuestro


servidor?

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Respuesta

IP's
MAC's
login/password
Horarios
Control de categoras
Listas de acceso
Y ms...

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Configuracin bsica

Abrimos el fichero de configuracin y escribimos:


http_port 8080
access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
acl all src 0.0.0.0/0.0.0.0
acl yo src 127.0.0.1/32
http_access allow yo
http_access deny all

Reiniciamos squid para que cargue la nueva configuracin.


/etc/init.d/squid restart
Configuramos firefox para que use 127.0.0.1 como proxy.
Miguel Angel Nieto
miguelangel@irontec.com

Irontec: Curso avanzado de squid

Logs de squid

access.log
Se guardan las peticiones que se le hacen al proxy.
1183393998.896

302 127.0.0.1 TCP_MISS/200 12953 GET http://packages.debian.org/stable/web/squid - DIRECT/87.106.4.56 text/html

cache.log
Aqu se van guardando los mensajes relacionados con el sistema de
almacenamiento y cache.
2007/07/02 17:40:21| Local cache digest enabled; rebuild/rewrite every 3600/3600 sec
2007/07/02 17:40:21| Rebuilding storage in /var/cache/squid (CLEAN)
2007/07/02 17:40:21| Using Least Load store dir selection
2007/07/02 17:40:21| Set Current Directory to /var/cache/squid

store.log
Se almacena informacin sobre los objetos almacenados. Dentro de los
campos mas importantes tenemos la segunda columna, llamada TAG, que
puede tener los siguientes valores:
SWAPIN (la cache existia en el disco duro y lo ha leido en memoria),
SWAPOUT (guardado en disco duro) or RELEASE (eliminado de la cache)

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

ACL's

Las listas de control de acceso nos permite definir distintos parmetros para
conceder o denegar accesos a nuestro proxy. En el anterior ejemplo donde
montabamos un proxy bsico pudimos ver un primer ejemplo de una lista de
acceso:
acl todos src 0.0.0.0/0.0.0.0
Su estructura es la siguiente:
acl nombre regla parmetros
En el ejemplo, la acl se llama all, con la regla src (source) y como parmetro
una ip y su mscara de red.
Otros ejemplos de acl:
acl comer time M T W H F 13:00-14:00
acl dest dst 192.168.2.1/32
acl mp3 urlpath_regex -i /.mp3$
acl navegador browser Explorer
acl debian url_regex debian

Vamos a la biblia para ver todas.


Miguel Angel Nieto
miguelangel@irontec.com

Irontec: Curso avanzado de squid

ACL's

Las acl por si mismas no hacen nada, ya que no decimos si aceptamos o


negamos dichas acl. Es necesario denegar o aceptar las ACLs.
Para ello se utiliza http_access y http_deny:
http_access deny comer mp3 explorer
http_access alow todos
Es muy importante el orden en el que se establecen las reglas de permiso o
denegacin.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

ACL's
Hay que tener especial cuidado con:

Olvidarnos establecer las ordenes de denegacin. Establecer muchas


ordenes allow, sin ninguna deny no sirve de nada... da lo mismo que
permitamos una serie de ips u horarios, por ejemplo, si luego no
denegamos todo lo demas. No denegar nada, implica aceptar todo.
Las reglas se leen de arriba abajo. Si en la primera regla tenemos un
allow todos que permite todo y el deny para mp3 lo ponemos en la
siguiente linea, esta no se tendr en cuenta. Ya que primero se lee el
alow y una vez que tenemos el mp3 en nuestras manos, se lee el deny
mp3. Lo normal es primero denegar y luego permitir.
Por defecto ninguna ip tiene acceso al proxy. Debe establecerse antes
de nada una ip o rango de ips que podran hacer uso del proxy.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Ejercicios ACL

Permitir el acceso a la subred.


Nombre: subred

Dar va libre a tu ip y la de tu compaero.


Nombre: amigos

Denegar el acceso los fines de semana.


Nombre: finde

No permitir el acceso a microsoft.com.


Nombre: micro

Denegar las conexiones salientes a puerto 8080. Nombre:


puerto

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Ejercicios ACL

Permitir el acceso a un compaero.


acl subred src direccion.ip/24

Dar va libre a tu ip ya de tu compaero


acl amigos src /etc/squid/amigos

Denegar el acceso los fines de semana.


acl finde time AS

No permitir el acceso a microsoft.com.


acl micro dstdomain .microsoft.com

Denegar las conexiones salientes a puerto 8080.


acl puerto port 8080

Reglas de acceso:
http_access allow amigos
http_acess allow subred !finde !micro !port
http_access deny all
Miguel Angel Nieto
miguelangel@irontec.com

Irontec: Curso avanzado de squid

Debbuging de ACL's

debug_options ALL,1 33,2


Guarda en cache.log un log de los acl que se acceden y
por qu la conexin se acepta o se rechaza.
Es muy util cuando tenemos muchos http_access y
http_access deny, para saber en cual se detiene un
intento de acceso.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Otras formas de filtrar el acceso

Con filtrar por ip y mac es suficiente? Qu


problemas tiene? Qu soluciones podemos
encontrar?

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Control de usuarios

Squid permite el acceso mediante login/password.

Es posible conectarse a servidores AD, LDAP, Samba3,


autenticacin ncsa... La autenticacin se hace mediante
programas externos a los que llama squid.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

NCSA

Los usuarios y claves se guardan en un fichero, como el


htpasswd de apache.
Es la opcin ms sencilla si tenemos pocos usuarios.
El fichero de claves se crea con htpasswd
El programa que har la autenticacin se encuentra en:
/usr/lib/squid/ncsa_auth
A configurar! Usuario: pepe Clave: pepe

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Configuracin NCSA

debianldap:~# htpasswd -c /etc/squid/passwd pepe


debianldap:~# chmod o+r /etc/squid/passwd
Le indicamos la ruta del programa y las claves.
auth_param basic program /usr/lib/squid/ncsa_auth
/etc/squid/passwd
Indica el nmero de procesos de autenticacin a crear.
auth_param basic children 5

El texto que aparecer al pedirnos usuario y clave.


auth_param basic realm Squid proxy-caching web server

El tiempo que tardar en pedirte de nuevo la clave.


auth_param basic credentialsttl 2 hours
acl passwd proxy_auth REQUIRED
http_access allow yo passwd
Miguel Angel Nieto
miguelangel@irontec.com

Irontec: Curso avanzado de squid

Autenticacin LDAP contra AD

auth_param basic program /usr/lib/squid/ldap_auth -R


-b "dc=servidornt,dc=local" -D
"cn=administrador,cn=users,dc=servidornt,dc=local" -w
"clave" -f sAMAccountName=%s -h 192.168.0.1

-b indicamos el nombre de dominio que tiene el


servidor. servidornt.local
-D indicamos con que usuario se conectar squid para
comprobar los usuarios y claves
-w la clave del usuario con el que nos conectaremos al
AD
-f %s es el usuario que escribiremos al hacer login en
squid. Se guarda en la variable "s" y esta ser la que
se compruebe en el AD.
-h la ip del servidor controlador de dominio

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Otra forma de acceder a los logs

Miremos los logs de access. Son infumables,


busquemos otra forma de visualizar los datos.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Estadsticas con Sarg

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Caractersticas

Permite listar las pginas accedidas.


Logs tanto por IP como por usuario.
Permite saber cuales son las pginas ms visitadas, y la
cantidad de datos cacheados.
Despus de un par de das de estadsticas nos puede
ayudar a configurar mejor nuestro squid.
La instalacin es sencilla.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Pregunta

Ya sabemos hacer listas de control de acceso,


pero... Qu pasa si queremos filtrar miles de
pginas? Con que problemas nos encontramos?
Soluciones?

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Control de categorias

Existen unas bases de datos con miles de pginas web


ordenadas por categoras.
Podemos usar esas bases de datos para permitir y
denegar accesos a nuestros usuarios a miles de pginas
con una sola linea.
Con una acl de dstdomain necesitariamos dos vidas
para filtrar todo el porno de internet.
Squidguard nos ayudar en esta tarea.
Miguel Angel Nieto
miguelangel@irontec.com

Irontec: Curso avanzado de squid

Qu necesitamos?

Una lista en formato texto con millones de pginas


categorizadas.
Que se actualize constantemente.
Que tenga un precio razonable o incluso que sea
gratuito.
Que sea compatible con squidguard.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

De donde obtenemos la base de datos

http://squidguard.shalla.de/shallalist.html Dispone de
1.400.000 entradas.
Descargamos y descomprimimos el tar.gz en
/var/squid/db
Abrimos el fichero de configuracin de
/etc/squid/squidGuard.conf

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Configuracin de SquidGuard

dbhome /var/squid/db
logdir /var/log/squid/squidGuard.log
dest porn {
domainlist porn/domains
urllist porn/urls
log pornaccesses
}
acl {
default {
pass !porn all
redirect http://localhost/block.html
}
}

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Creacin de base de datos

Una vez configurado squidGuard.conf es necesario


crear las bases de datos que hemos configurado.
Si ejecutamos squidGuard -C all nos crear la base de
datos de porn.
Configuramos squid para que use squidGuard.
Aadimos:
redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf

YA EST, reiniciamos squid y listo.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Ejercicio

Crear una nueva regla para pginas relacionadas con las


drogas.
No permitir el acceso.
Guardar los logs de acceso en logdrogas.
Permitirme a mi ip el acceso a las drogas y al porno.
Para buscar ayuda:
http://www.squidguard.org/Doc/extended.html

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Solucin
dbhome /var/squid/db
logdir /var/log/squid

src yo {
ip 10.10.0.210
}
dest

porno{
domainlist
urllist
log porno

porn/domains
porn/urls

}
dest

drogas{
domainlist drugs/domains
urllist
drugs/urls
log drogas

}
acl {
yo {
pass all
}
default {
pass !porno !drogas all
redirect http://www.disney.com
}
}
Miguel Angel Nieto
miguelangel@irontec.com

Irontec: Curso avanzado de squid

Pregunta

Dnde

se encuentran los cuellos de botella en un


servidor Squid?

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Respuesta

Accesos continuos al disco duro.

Ancho de banda.

Capacidad de procesamiento.

Memoria RAM.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Sistema de ficheros

El mayor cuello de botella es la velocidad de escritura y


lectura del disco duro.
Un solo proceso de squid se tiene que encargar de
todo.
Existen diferentes algoritmos para llevar a cabo esta
tarea, cada cual con sus pros y contras.
Vamos a ver:
ufs,aufs,diskd,coss,null
Por defecto squid trabaja con ufs. No es el que mejor
Miguel Angel Nieto
rendimiento nos puede dar.

miguelangel@irontec.com

Irontec: Curso avanzado de squid

UFS

Es el sistema por defecto de squid.


Es el ms lento.
Todo el proceso de lectura, escritura, recepcin de
peticiones, envo de objetos, etc. se hace con un solo
demonio.
Muchos accesos simultaneos mediante este sistema
puede producir cuellos de botella considerables.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

AUFS

Sobre la base es exactamente lo mismo que ufs.


La diferenca es que lanza multiples demonios para la
lectura, escritura, borrado, etc.
Aufs consume una gran cantidad de procesador y
memoria cuando se ve ante una carga de trabajo alta.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

DISKD

Tambien basado en ufs y aufs.


La diferencia en este caso es que solo levanta un
demonio extra.
Es una solucin intermedia entre ufs y aufs.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

COSS

Ofrece un mayor rendimiento que el resto de opciones.


Utiliza un sistema de ficheros especial y optimizado
para squid.
Toda la informacin se guarda en un solo fichero.
Se escriben en bloques de datos.
No es del todo estable ni recomendable su uso.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

NULL

No guarda ninguna cache en el disco duro.

Aunque no lo parezca tiene utilidad.

En sistemas de proxy annimos.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Ejercicio

Configurar en nuestro proxy un cache en


/var/cache/aufs de formato... aufs
Para ello utilizaremos la biblia.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Solucin

mkdi r / var / cache/ auf s


chmod pr oxy: pr oxy / var / cache/ auf s
cache_ di r auf s / var / cache/ auf s 512 16 256
Reiniciar squid
cache_di r si st ema di r ect or i o mbyt es l evel 1 l evel 2

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Configurar coss

Coss utiliza su propio sistema de ficheros, por lo que la configuracin es algo


diferente.
cache_dir coss /var/cache/coss 512 max-size=16384
Crear un fichero llamado stripe en /var/cache/coss donde se almacenara el sistema de ficheros.
Ser de un mximo de 512 megas y los objetos que se almacenen tendrn un mximo de tamao
de 16 megas.

An con unos cuantos aos de desarrollo, se encuentra en una fase beta.


Al almacenarse todo en un solo fichero, debemos tener en cuenta las
limitaciones del propio sistema de ficheros que lo contiene. Por ejemplo, si es
fat32 estaramos limitados a 4 GB.
El tamao de la cache que squid guarda en memoria antes de escribirla al
disco es 1 MB. Se cambia con la opcin enable-coss-membuf-size.
Una vez que el fichero est completo, empezar desde el principio
sobreescribiendo los datos que encuentre.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Optimizacin de uso y memoria

Cacheo en memoria ram y algortmos para el


movimiento de objetos cacheados.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Optimizacin en el uso de la memoria y la cache

Estas polticas son las que definirn que objetos se


mantienen en cache o memoria y cuales son
eliminados dejando espacio para nuevos objetos.
Estas polticas se aplicarn a cualquier cache_dir que
configuremos despus de esta poltica.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Resumen

LRU

LFUDA

Los menos accedidos son los primeros en ser eliminados.


Los objetos mas solicitados permanecen en cache, sin
importar el tamao.
Un objeto grande impide que se cacheen muchos pequeos.

GDSF

Los objetos pequeos ms solicitados permanecen en cache.


Tiene menos eficiencia ya que descarga objetos grandes
aunque se utilicen amenudo.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Ejercicio

Configurar nuestro squid para poner el algoritmo


LFUDA, tanto en la cache de disco como en la de
memoria.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Solucin

maximum_object_size 320010 KB
cache_replacement_policy heap LFUDA
memory_replacement_policy heap LFUDA

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Parametros para el uso de la memoria RAM y disco

Maximum object size (en disco o memoria)


Con esta directiva se indica que los ficheros con un tamao mayor del indicado (en kilobytes) no
se guardaran en el disco duro. Por defecto, si no se indica nada, son 4 megas.
Ejemplo: maximum_object_size 2000 KB | maximum_object_size_in_memory 2000
KB

Minimum object size (en disco o memoria)


Los objetos de menor tamao no sern guardados en el disco duro. El valor es especficado en
kilobytes. Por defecto el valor es 0.
Ejemplo: minimum_object_size 2000 KB | minimum_object_size_in_memory 2000
KB

Cache Mem
Cantidad de memoria ram que ser utilizada como cache. En la memoria ram se cachean los
objetos descargados directamente desde el servidor origen y desde los servidores hermanos,
aumentando de una forma considerable la velocidad de respuesta si estos se piden muy
amenudo. En cambio, no cachea en memoria los objetos leidos del disco duro. Un valor entre 8 y
32 megas es los recomendable, pero depender de la cantidad de memoria que tengamos en el
sistema.
Ejemplo: cache_mem 8 MB
Miguel Angel Nieto
miguelangel@irontec.com

Irontec: Curso avanzado de squid

Refresh pattern

Tenemos un proxy casi funcional, pero no hemos


indicado que objetos y como deben cachearse.
Tenemos un proxy cojo.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Refresh pattern

Nos permite indicar, mediante expresiones regulares la


duracin de un objeto en cache.
Sirve para objetos que no se indica su caducidad (la
mayora) por parte del webmaster.
Se deben indicar todos los objetos que deseemos
cachear.
La lista puede ser muy larga, lo mejor es copy/paste y
modificar los valores a nuestro gusto.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Objetos con expire

Los objetos con expire (una fecha de caducidad) no


pasan por nuestro refresh pattern. Es el webmaster el
que debe indicarlo en su cdigo.
Si la fecha de expire no se ha superado, squid coge el
objeto de la cache.
Si la fecha de expire se ha superado, squid consulta la
fecha de ultima modificacion.
Si no hay modificacin, vuelve a coger el objeto de la
cache.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Terminologa

Objeto fresco: el objeto no ha caducado, por lo que


squid puede seguir cogiendolo de la cache.
Objeto caducado: el objeto ha caducado, squid debe
borrar el objeto de la cache y pedir una nueva versin
al servidor web.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Objetos sin expire

Aqu entra en juego nuestros refresh_pattern.


refresh_pattern \.zip$ 2880 50% 28800
\.zip hace referencia a los ficheros terminados en .zip.
2880 es el tiempo mnimo (en minutos) que puede ser
consideraro fresco (no caducado).
50% se calcula sobre el tiempo de ltima modificacin.
Si este es 6 das, su 50% sern 3.
28800 es el tiempo mximo que podr ser considerado
fresco.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Ejercicio

Buscad una lista grande de refresh pattern para


nuestro squid. Ms adelante podremos configurarlo a
nuestro gusto partiendo de esa base.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Solucin

http://www.rediris.es/si/cache/refrescos.es.html

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Control del ancho de banda

El siempre recurrente problema del ancho de banda.


Usuarios que bajan videos, imgenes de Cds, mp3,
etc. Cmo podemos controlar el uso de ancho de
banda con squid?

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Control de ancho de banda

DELAY POOLS

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Delay pool

Imaginemos (por qu no se dibujar) un pozo lleno de


agua, con dos tuberas
Una pequea por la que entra agua.
Otra grande por la que la gente coge agua.
Si la gente se pasa cogiendo agua, el pozo se vaciar y
solo podrn coger lo que entre por la tubera pequea.
En lugar de agua, tendremos ancho de banda.

Hay tres clases de delay pools.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Delay pool clase 1

Se compone de un solo pozo.


Se limita de manera global a todos los usuarios, sin
importar el uso que estos hagan ni como este montada
la lan.
Es la manera mas sencilla.

Qu problema tiene esta configuracin?

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Delay pool clase 2

Se compone de un pozo grande que alimenta 256


pozos mas pequeos de clase 1 (red de clase C).
Es posible controlar el uso que le dan 256 clientes.
Un solo cliente no puede dejar sin ancho de banda al
resto.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Delay pool de clase 3

Es un pozo grande, que alimenta 256 pozos de clase 2


y estos a su vez 256 pozos de clase 1. En total, 65,536
pozos (una red de clase B).
Se utilizan en redes muy grandes.

Qu problema tiene esta configuracin?

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Como configurar una delay pool

Primero indicamos cuantas vamos a usar:


delay_pools 2

Luego indicamos de que clase ser cada una:


delay_pool 1 1 # la numero 1 de clase 1
delay_pool 2 2 # la numero 2 de clase 2

Configuramos las delay_pools en Bytes/s.


delay_parameters 1 64000/384000
delay_parameters 2 64000/384000 10000/200000

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Otras opciones de la delay pools

Los pozos empiezan llenos al 90%


delay_initial_bucket_level 90

Hacemos que la dmz y los servidores no pasen por las


delay pools
delay_access 1 allow !servidores !dmz all
delay_access 1 deny all

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Jerarquias de caches

Un solo servidor para miles de clientes?


Problemas de rendimiento?
Hay que pedir ayuda a la familia.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Hermanos y padres

Un proxy puede tener hermanos (sibling) y padres


(parent).
Se utiliza el protocolo ICP de comunicacin entre
proxys.
Si un proxy no tiene un objeto lo pide al hermano. Si el
hermano lo tiene se lo entrega, si no le devuelve error.
Si recibe un error, se lo pide al padre y este lo pedir a
internet en caso de que tampoco lo tenga.
http://www.rfc-es.org/rfc/rfc2187-es.txt

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Configuracin de jerarquias

Vamos a configurar dos proxy hermanos y un


padre.

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Hermano 1

icp_port 3130 // puerto icp

cache_peer 172.16.112.131 parent 3128 3130


default // definimos cache padre. Puerto
proxy 3128 y puerto icp 3130

cache_peer 172.16.112.136 sibling 8081 3130


proxy-only // definimos cache hermano. Puerto
proxy 8081 y puerto icp 3130

icp_access allow all // permitimos acceso icp


a todos

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Hermano 2

icp_port 3130 // puerto icp

cache_peer 172.16.112.131 parent 3128 3130


default // definimos cache padre. Puerto
proxy 3128 y puerto icp 3130

cache_peer 172.16.112.135 sibling 8080 3130


proxy-only // definimos cache hermano. Puerto
proxy 8081 y puerto icp 3130

icp_access allow all // permitimos acceso icp


a todos

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Padre

icp_port 3130 // puerto icp


icp_access allow all // permitimos acceso icp
a todos

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Esquema de jerarquias
172.16.112.135
Cache: 3128
ICP: 3130

172.16.112.135
Cache: 8080
ICP: 3130

172.16.112.136
Cache: 8081
ICP: 3130

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Pregunta

Qu problemas nos podemos encontrar al


establecer las jerarquas de caches?

Miguel Angel Nieto


miguelangel@irontec.com

Irontec: Curso avanzado de squid

Fin

Dudas, preguntas, insultos?

Miguel Angel Nieto


miguelangel@irontec.com

También podría gustarte