Controlar la velocidad de internet: Squid con colas

Por Paco Aldarias Raya

Impreso: 30 de enero 2004

Email: pacolinux arroba inicia punto es
Web: http://aldarias.es/pacodebian
Con Linux Debian. En Valencia (España)
Este documento es de libre reproducción siempre que se cite su fuente.
Realizado con:
LATEX

Índice General


1 Introducción

Existe un problema en una red local, donde varios usuarios se conectan a internet y es que cuando algien se quiere bajar un archivo, consume todo el ancho de banda, dejando al resto de usuarios sin casi velocidad de conexión.

Vamos a controlar el ancho de banda del proxy squid usando colas de prioridad o delay pools.

Esto está probado con linux debian woody.

2 Instalación

Instalaremos las utilidades de compilación, desde consola como root:
apt-get install gcc libc-dev make

3 Bajar la última versión de squid

http://www.squid-cache.org

Yo me baje el fichero:
squid-2.5.STABLE4.tar.gz

Descomprimirlo en /var/tmp:
tar xzpf squid-2.5.STABLE4.tar.gz

4 Compilar squid para colas

  1. Como usuario normal. Todo es la misma linea:
    ./configure -prefix=/opt/squid -exec-prefix=/opt/squid -enable-delay-pools -enable-cache-digests -enable-poll -disable-ident-lookups -enable-truncate -enable-removal-policies
  2. Como usuario normal.
    make all
  3. Como usuario root:
    make install

5 Configurar Squid para poder usar la prestación de las delay pools

/opt/squid/etc/squid.conf

#squid.conf
#Todas las opciones de este archivo se encuentran muy bien documentadas en el
#propio squid.conf así
#como en http://www.visolve.com/squidman/Configuration%20Guide.html

#
#Los puertos por los que escuchará nuestro Squid.
http_port 8080
icp_port 3130
#los cgi-bin no se cachearán.
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
#La memoria que usará Squid. Bueno, Squid usará mucha más que ésa.
cache_mem 16 MB
#250 significa que Squid usará 250 megabytes de espacio en disco.
cache_dir ufs /cache 250 16 256

#Lugares en los que irán los archivos de bitácora de Squid.
cache_log /var/log/squid/cache.log
cache_access_log /var/log/squid/access.log
cache_store_log /var/log/squid/store.log
cache_swap_log /var/log/squid/swap.log
#Cuántas veces rotar los archivos de bitácora antes de borrarlos.
#Acuda a la FAQ para más información.
logfile_rotate 10

redirect_rewrites_host_header off
cache_replacement_policy GDSF
acl localnet src 192.168.1.0/255.255.255.0
acl localhost src 127.0.0.1/255.255.255.255
acl Safe_ports port 80 443 210 119 70 20 21 1025-65535
acl CONNECT method CONNECT
acl all src 0.0.0.0/0.0.0.0
http_access allow localnet
http_access allow localhost
http_access deny !Safe_ports
http_access deny CONNECT
http_access deny all
maximum_object_size 3000 KB
store_avg_object_size 50 KB

#Configure esto si quiere que su proxy funcione de manera transparente.
#Eso significa que por lo general no tendrá que configurar todos los 
#navegadores de sus clientes, aunque tiene algunos inconvenientes.
#Si deja esto sin comentar no pasará nada peligroso.
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
 
#Todos los usuarios de nuestra LAN serán vistos por los servidores web
#externos como si usasen Mozilla en Linux. :)
anonymize_headers deny User-Agent
fake_user_agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.6+) Gecko/20011122
 
#Para acelerar aún más nuestra conexión ponemos dos líneas similares a las
#de más abajo. Apuntarán a un servidor proxy [parent] que usará nuestro propio
#Squid. No olvide cambiar el servidor por uno más rápido para usted.
#Puede utilizar ping, traceroute y demás herramientas para comprobar la
#velocidad. Asegúrese de que los puerto http e icp son los correctos.

#Descomente las líneas que comienzan por "cache_peer" de ser necesario.
#Éste es el proxy que va a usar para todas las conexiones...
#cache_peer w3cache.icm.edu.pl parent 8080 3130 no-digest default

#...excepto para las direcciones e IPs que comiencen por "!".
#No es buena idea usar un mayor
#cache_peer_domain w3cache.icm.edu.pl !.pl !7thguard.net !192.168.1.1

#Esto resulta útil cuando queremos usar el Cache Manager.
#Copie cachemgr.cgi al cgi-bin de su servidor web.
#Podrá acceder a él una vez lo haya hecho introduciendo en un navegador
#la dirección http://su-servidor-web/cgi-bin/cachemgr.cgi
cache_mgr your@email
cachemgr_passwd secret_password all
 
#Éste es el nombre de usuario con el que trabajará nuestro Squid.
cache_effective_user squid
cache_effective_group squid
 
log_icp_queries off
buffered_logs on
 
 
#####DELAY POOLS
#Ésta es la parte más importante para configurar el tráfico entrante con
#Squid. Para una descripción detallada acuda al archivo squid.conf o a la
#documentación de http://www.squid-cache.org
 
#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
#Ponga todo esto en una única línea
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
#No bloqueamos .html, .gif, .jpg y archivos similares porque por lo general
#no consumen demasiado ancho de banda.


#Queremos limitar el ancho de banda durante el día permitiendo
#el ancho de banda completo durante la noche.
#¡Cuidado! con el acl de abajo sus descargas se interrumpirán 
#a las 23:59. Lea la FAQ si quiere envitarlo.
acl day time 09:00-23:59
 
#Tenemos dos delay_pools diferentes
#Acuda a la documentación de Squid para familiarizarse 
#con delay_pools y delay_class.
delay_pools 2
 
#Primer delay pool
#No queremos retrasar nuestro tráfico local
#Hay tres cases de pools; aquí sólo hablaremos de la segunda.
#Primera clase de retraso (1) de segundo tipo (2).
delay_class 1 2
 
#-1/-1 significa que no hay límites.
delay_parameters 1 -1/-1 -1/-1
 
#magic_words1: 192.168 que ya hemos puesto antes
delay_access 1 allow magic_words1
 

#Segundo delay pool.
#Queremos retrasar la descarga de los archivos mencionados en magic_words2.
#Segunda clase de retraso (2) de segundo tipo (2).
delay_class 2 2
 
#Los números siguientes son valores en bytes;
#Debemos recordar que Squid no tiene en cuenta los bits de inicio/parada
#5000/150000 son valores para la red al completo
#5000/120000 son valores para la IP independiente
#una vez los archivos descargados exceden los 150000 bytes,
#(o el doble o el triple)
#las descargas proseguirán a 5000 bytes/s
 
delay_parameters 2 5000/150000 5000/120000
#Ya hemos configurado antes el día de 09:00 a 23:59.
delay_access 2 allow day
delay_access 2 deny !day
delay_access 2 allow magic_words2

6 Usuario squid

  1. Creamos la carpeta y el usuario squid.

    mkdir /cache

    addgroup squid

    useradd -d /cache/ -g squid -s /dev/null squid

  2. Las carpetas /opt/squid y /cache perteneceran al usuario squid.

    mkdir /var/log/squid/

    chown squid:squid /var/log/squid/

    chmod 770 /var/log/squid/

    chown -R squid:squid /opt/squid/

    chown -R squid:squid /cache/

  3. Cuando lo hagamos por primera vez tendremos que crear sus directorios de caché:
    /opt/squid/sbin/squid -z
  4. Arrancamos el squid.
    /opt/squid/sbin/squid

7 Bibliografía

  1. Limitar el ancho de banda COMO.
    http://mural.uv.es/~joferna/doc/Limitar-ancho-de-banda-COMO/html/index.html

Índice de Materias

squid con colas
1

Sobre este documento...

Controlar la velocidad de internet: Squid con colas

This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.70)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html squidcolas -no_subdir -split 0 -local_icons 1 -show_section_numbers -no_auto_link -no_navigation

The translation was initiated by Paco Aldarias on 2004-01-30


Paco Aldarias 2004-01-30