Squid Avanzado

79
Irontec: Curso avanzado de squid Miguel Angel Nieto [email protected] Curso avanzado de Squid

Transcript of Squid Avanzado

Page 1: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Curso avanzado de Squid

Page 2: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

¿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

● Rápido y eficaz.

Page 3: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

¿Porqué es Software libre?

● Desde Irontec apostamos por el Software Libre por su alta fiabilidad y flexibil idad.

● Gracias a las posibilidades que nos ofrece el l ibre acceso a las aplicaciones y a su código, podemos desarrollar proyectos de gran complejidad de forma rápida y a precios competitivos.

● El Software Libre proporciona a muchas de nuestras soluciones una potencia difícilmente alcanzable por sistemas privativos en plazos y en costes.

● Representa para Irontec un modelo más justo para con la sociedad en la que vivimos.

Page 4: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Algunos datos sobre Squid

● Existen dos versiones en desarollo. Stable-2.6 y Testing-3.0

● La página oficial se encuentra en http://www.squid-cache.org/

● Se integra con otras aplicaciones, como squidguard.

● Tiene muchos modos de funcionamiento. Cache, Inverso, Transparente...

Page 5: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Esquema Proxy normal

Internet

Router

Proxy-cache Normal

Usuarios

Page 6: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Esquema Proxy Inverso

Internet

Router

Proxy-cache Inverso

Servidor web

Peticiones web

Page 7: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Esquema Proxy Transparente

Internet

Router

Proxy-cache Transparente

Usuarios

Page 8: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Otros modos de funcionamiento

● Filtro de contenidosBloquear el acceso a contenido por categorías.

● Firewall de seguridadEs una aplicación de seguridad restrictiva, permitiendo la salida a equipos o subredes y denegandolo a otras.

● AnónimoProvee acceso web anónimo.

Page 9: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

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 categorías.

● Será necesario tenerlo a mano siempre que se tenga duda.

Page 10: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Instalación

● Se puede hacer por código fuente o descargando el binario con las herramientas de la distribución seleccionada.

● El binario pude no contener todas las opciones que necesitamos.

● Al compilar es necesario indicar que características deseamos.

● Tenemos una lista con ./configure --help

Page 11: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Instalación por código 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-netfi l ter Habilita el uso de iptables para proxys transparente.

● --enable-storeio=aufs,coss,diskd,ufsHabilitamos los distintos tipos de formas para almacenar los ficheros.

● --enable-basic-auth-helpers="LDAP"Habilitamos la autenticación ldap.

Page 12: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Datos básicos

● El fichero de configuración 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.

Page 13: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Pregunta

¿Cómo podemos controlar el acceso a nuestro servidor?

Page 14: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Respuesta

● IP's● MAC's● login/password● Horarios● Control de categorías● Listas de acceso● Y más...

Page 15: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Configuración básica

● Abrimos el fichero de configuración y escribimos:

http_port 8080access_log /var/log/squid/access.logcache_log /var/log/squid/cache.logcache_store_log /var/log/squid/store.logacl all src 0.0.0.0/0.0.0.0acl yo src 127.0.0.1/32http_access allow yohttp_access deny all

● Reiniciamos squid para que cargue la nueva configuración. /etc/init.d/squid restart

● Configuramos firefox para que use 127.0.0.1 como proxy.

Page 16: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Logs de squid

● access. logSe 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.logAquí 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 sec2007/07/02 17:40:21| Rebuilding storage in /var/cache/squid (CLEAN)2007/07/02 17:40:21| Using Least Load store dir selection2007/07/02 17:40:21| Set Current Directory to /var/cache/squid

● store.logSe almacena información 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)

Page 17: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

ACL's

● Las listas de control de acceso nos permite definir distintos parámetros para conceder o denegar accesos a nuestro proxy. En el anterior ejemplo donde montabamos un proxy básico 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 parámetros

● En el ejemplo, la acl se llama “all”, con la regla src (source) y como parámetro una ip y su máscara de red.

● Otros ejemplos de acl:acl comer time M T W H F 13:00-14:00acl dest dst 192.168.2.1/32acl mp3 urlpath_regex -i /.mp3$acl navegador browser Exploreracl debian url_regex debian

● Vamos a la biblia para ver todas.

Page 18: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

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 explorerhttp_access alow todos

● Es muy importante el orden en el que se establecen las reglas de permiso o denegación.

Page 19: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

ACL's

Hay que tener especial cuidado con:● Olvidarnos establecer las ordenes de denegación. 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.

Page 20: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Ejercicios ACL

● Permitir el acceso a la subred. Nombre: subred

● Dar vía libre a tu ip y la de tu compañero.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

Page 21: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Ejercicios ACL

● Permitir el acceso a un compañero.acl subred src direccion.ip/24

● Dar vía libre a tu ip ya de tu compañeroacl 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 amigoshttp_acess allow subred !finde !micro !porthttp_access deny all

Page 22: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

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 conexión 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.

Page 23: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Otras formas de filtrar el acceso

¿Con filtrar por ip y mac es suficiente? ¿Qué problemas tiene? ¿Qué soluciones podemos

encontrar?

Page 24: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Control de usuarios

Squid permite el acceso mediante login/password.

Es posible conectarse a servidores AD, LDAP, Samba3, autenticación ncsa... La autenticación se hace mediante programas externos a los que llama squid.

Page 25: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

NCSA

● Los usuarios y claves se guardan en un fichero, como el htpasswd de apache.

● Es la opción más sencilla si tenemos pocos usuarios.● El fichero de claves se crea con htpasswd● El programa que hará la autenticación se encuentra en:

/usr/lib/squid/ncsa_auth

● ¡A configurar! Usuario: pepe Clave: pepe

Page 26: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Configuración 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 número de procesos de autenticación 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 REQUIREDhttp_access allow yo passwd

Page 27: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Autenticación 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

Page 28: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Otra forma de acceder a los logs

Miremos los logs de access. Son infumables, busquemos otra forma de visualizar los datos.

Page 29: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Estadísticas con Sarg

Page 30: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Características

● Permite listar las páginas accedidas.● Logs tanto por IP como por usuario.● Permite saber cuales son las páginas más visitadas, y la

cantidad de datos cacheados.● Después de un par de días de estadísticas nos puede

ayudar a configurar mejor nuestro squid.● La instalación es sencilla.

Page 31: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Pregunta

Ya sabemos hacer listas de control de acceso, pero... ¿Qué pasa si queremos filtrar miles de

páginas? ¿Con que problemas nos encontramos? ¿Soluciones?

Page 32: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Control de categorias

● Existen unas bases de datos con miles de páginas web ordenadas por categorías.

● Podemos usar esas bases de datos para permitir y denegar accesos a nuestros usuarios a miles de páginas 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.

Page 33: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

¿Qué necesitamos?

● Una lista en formato texto con millones de páginas categorizadas.

● Que se actualize constantemente.

● Que tenga un precio razonable o incluso que sea gratuito.

● Que sea compatible con squidguard.

Page 34: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

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 configuración de /etc/squid/squidGuard.conf

Page 35: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Configuración de SquidGuard

dbhome /var/squid/dblogdir /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 } }

Page 36: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Creación 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. Añadimos:redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf

● YA ESTÁ, reiniciamos squid y l isto.

Page 37: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Ejercicio

● Crear una nueva regla para páginas 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

Page 38: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Solución

dbhome /var/squid/dblogdir /var/log/squid

src yo { ip 10.10.0.210}

dest porno{ domainlist porn/domains urllist porn/urls log porno}

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

acl {

yo { pass all } default { pass !porno !drogas all redirect http://www.disney.com }}

Page 39: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Pregunta

–¿Dónde se encuentran los cuellos de botella en un servidor Squid?

Page 40: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Respuesta

● Accesos continuos al disco duro.

● Ancho de banda.

● Capacidad de procesamiento.

● Memoria RAM.

Page 41: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

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 rendimiento nos puede dar.

Page 42: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

UFS

● Es el sistema por defecto de squid.● Es el más lento.● Todo el proceso de lectura, escritura, recepción de

peticiones, envío de objetos, etc. se hace con un solo demonio.

● Muchos accesos simultaneos mediante este sistema puede producir cuellos de botella considerables.

Page 43: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

AUFS

● Sobre la base es exactamente lo mismo que ufs.● La diferencía 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.

Page 44: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

DISKD

● Tambien basado en ufs y aufs.● La diferencia en este caso es que solo levanta un

demonio extra.● Es una solución intermedia entre ufs y aufs.

Page 45: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

COSS

● Ofrece un mayor rendimiento que el resto de opciones.● Utiliza un sistema de ficheros especial y optimizado

para squid.● Toda la información se guarda en un solo fichero.● Se escriben en bloques de datos.● No es del todo estable ni recomendable su uso.

Page 46: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

NULL

● No guarda ninguna cache en el disco duro.

● Aunque no lo parezca tiene utilidad.

● En sistemas de proxy anónimos.

Page 47: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Ejercicio

Configurar en nuestro proxy un cache en /var/cache/aufs de formato... aufs

Para ello utilizaremos la “biblia”.

Page 48: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Solución

mkdi r / var / cache/ auf schmod pr oxy: pr oxy / var / cache/ auf scache_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

Page 49: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Configurar coss

● Coss utiliza su propio sistema de ficheros, por lo que la configuración 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 máximo de 512 megas y los objetos que se almacenen tendrán un máximo de tamaño de 16 megas.

● Aún con unos cuantos años 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 estaríamos limitados a 4 GB.

● El tamaño de la cache que squid guarda en memoria antes de escribirla al disco es 1 MB. Se cambia con la opción enable-coss-membuf-size.

● Una vez que el fichero está completo, empezará desde el principio sobreescribiendo los datos que encuentre.

Page 50: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Optimización de uso y memoria

Cacheo en memoria ram y algorítmos para el movimiento de objetos cacheados.

Page 51: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Optimización en el uso de la memoria y la cache

● Estas políticas son las que definirán que objetos se mantienen en cache o memoria y cuales son eliminados dejando espacio para nuevos objetos.

● Estas políticas se aplicarán a cualquier cache_dir que configuremos después de esta política.

Page 52: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Resumen

● LRU– Los menos accedidos son los primeros en ser eliminados.

● LFUDA– Los objetos mas solicitados permanecen en cache, sin

importar el tamaño.– Un objeto grande impide que se cacheen muchos pequeños.

● GDSF– Los objetos pequeños más solicitados permanecen en cache.– Tiene menos eficiencia ya que descarga objetos grandes

aunque se utilicen amenudo.

Page 53: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Ejercicio

Configurar nuestro squid para poner el algoritmo LFUDA, tanto en la cache de disco como en la de

memoria.

Page 54: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Solución

maximum_object_size 320010 KBcache_replacement_policy heap LFUDA

memory_replacement_policy heap LFUDA

Page 55: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

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 tamaño 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 tamaño no serán guardados en el disco duro. El valor es específicado en kilobytes. Por defecto el valor es 0.

Ejemplo: minimum_object_size 2000 KB | minimum_object_size_in_memory 2000 KB

● Cache MemCantidad 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

Page 56: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Refresh pattern

Tenemos un proxy casi funcional, pero no hemos indicado que objetos y como deben cachearse.

Tenemos un proxy cojo.

Page 57: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Refresh pattern

● Nos permite indicar, mediante expresiones regulares la duración de un objeto en cache.

● Sirve para objetos que no se indica su caducidad (la mayoría) 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.

Page 58: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

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 código.

● 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 modificación, vuelve a coger el objeto de la cache.

Page 59: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Terminología

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 versión

al servidor web.

Page 60: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

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 mínimo (en minutos) que puede ser

consideraro fresco (no caducado).● 50% se calcula sobre el tiempo de última modificación.

Si este es 6 días, su 50% serán 3.● 28800 es el tiempo máximo que podrá ser considerado

fresco.

Page 61: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Ejercicio

Buscad una lista grande de refresh pattern para nuestro squid. Más adelante podremos configurarlo a

nuestro gusto partiendo de esa base.

Page 62: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Solución

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

Page 63: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Control del ancho de banda

El siempre recurrente problema del ancho de banda. Usuarios que bajan videos, imágenes de Cds, mp3, etc. ¿Cómo podemos controlar el uso de ancho de

banda con squid?

Page 64: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Control de ancho de banda

DELAY POOLS

Page 65: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Delay pool

● Imaginemos (por qué no se dibujar) un pozo lleno de agua, con dos tuberías

● Una pequeña 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 podrán coger lo que entre por la tubería pequeña.● En lugar de agua, tendremos ancho de banda.

● Hay tres clases de delay pools.

Page 66: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

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 configuración?

Page 67: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Delay pool clase 2

● Se compone de un pozo grande que alimenta 256 pozos mas pequeños 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.

Page 68: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

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 configuración?

Page 69: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

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 1delay_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

Page 70: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

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 poolsdelay_access 1 allow !servidores !dmz alldelay_access 1 deny all

Page 71: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Jerarquias de caches

¿Un solo servidor para miles de clientes? ¿Problemas de rendimiento?

Hay que pedir ayuda a la familia.

Page 72: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Hermanos y padres

● Un proxy puede tener hermanos (sibling) y padres (parent).

● Se utiliza el protocolo ICP de comunicación 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

Page 73: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Configuración de jerarquias

Vamos a configurar dos proxy hermanos y un padre.

Page 74: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

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

Page 75: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

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

Page 76: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Padre

● icp_port 3130 // puerto icp● icp_access allow all // permitimos acceso icp a todos

Page 77: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Esquema de jerarquias

172.16.112.135

Cache: 8081ICP: 3130

172.16.112.136Cache: 8080

ICP: 3130

172.16.112.135

ICP: 3130Cache: 3128

Page 78: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Pregunta

¿Qué problemas nos podemos encontrar al establecer las jerarquías de caches?

Page 79: Squid Avanzado

Irontec: Curso avanzado de squid

Miguel Angel [email protected]

Fin

¿Dudas, preguntas, insultos?