Guía de Squid



Squid es un servidor proxy que permite utilizar una sola conexión a Internet para todas las estaciones de los centros de acceso para la navegación por Internet.

El servidor proxy además almacena en el disco duro del servidor las páginas más visitadas desde la estaciones de tal manera que se realiza un ahorro significativo del ancho de banda del enlace del centro de acceso cuando se solicita la página nuevamente desde la misma u otra estación. Squid verifica si la página ha cambiado, y de ser así, vuelve a almacenarla localmente. Es posible configurar Squid para definir cuanto tiempo pueden estar almacenadas las páginas en el servidor.

A continuación se muestra un instructivo para su instalación y configuración:

1-. Obteniendo el programa .

Squid se puede obtener en el CD 2 (Binary CD) de la distribución de RedHat 7 en RPM o copiar la versión que utilizamos en nuestra instalación aquí.

También se puede obtener desde la distribución de los programas fuentes. Las fuentes pueden obtenerse de http://www.squid-cache.org/ o puede la versión utilizada en nuestra instalación aquí.

2-. Instalación .

2.1-. Desde RPM.

Despues de copiar el programa en RPM ejecute:

# rpm -iv squid-2.3.STABLE4-1.i386.rpm

Con esto quedará instalado squid en el sistema. Proceda con la configuración en el apartado 3.

2.2-. Desde las fuentes.

Desde la fuentes, después de obtener el paquete se debe ejecutar:

# tar zxvf squid-2-3-STABLE3-src.tgz

# cd squid-2.3.STABLE3

# ./configure

# make

# make install

En este caso el programa squid quedará instalado en /usr/local/squid

3-. Configuración de squid.

Para configurar squid es necesario modificar el archivo: /etc/squid/squid.conf para la distribución de RPM o /usr/local/squid/etc/squid.conf para las fuentes.

Si realizó la instalación desde RPM teclee:

# cd /etc/squid/

de lo contrario:

# cd /usr/local/squid/etc

# pico squid.conf

El archivo original de configuración trae algunos parámetros con el signo # al comienzo de la línea por lo que es importante quitar el simbolo para activar el parámetro correspondiente.

Configurar desde cero squid es una labor dispendiosa . Le sugerimos comenzar con nuestro archivo de configuración squid.conf que puede obtenerse aquí.

A continuación se describe cada uno de los parámetros utilizados en nuestra instalación. Algunos de ellos son de caracter obligatorio para que el Sistema de Registro funcione correctamente. Si Usted decide utilizar nuestro archivo de configuración al menos debe cambiar los siguientes parámetros, especialmente cache_effective_user y cache_effective_group:

A continuación se describen cada uno de los parámetros utilizados en nuestra instalación:

http_port. Este parámetro define en que puerto responderá a las solicitudes squid. Para nuestra instalación utilizamos el puerto 3128:

http_port 3128

icp_port. Este parámetro define el puerto en que el servidor squid recibe solicitudes ICP (Inter-Cache Protocol). Desactivelo asignando el valor de cero al parámetro:

icp_port 0

hierarchy_stoplist . Este parámetro es útil para indicar a squid qué páginas que contengan ciertos caracteres no deben almacenarse en el cache. Es importante incluir aquí sitios como Hotmail ya que experimentamos problemas para realizar la autenticación a través de squid con este sistema. Si Usted piensa colocar páginas de Internet locales en su servidor del centro de acceso es recomendable colocar aquí el nombre de su servidor ya que no sería necesario almacenar en el cache las páginas locales, por ejemplo, si su servidor se llama cabinas:

hierarchy_stoplist cgi-bin ? hotmail cabinas

cache_mem. Memoria utilizada por squid para ciertos procesos. En nuestra instalación para un computador de 64MB de memoria utilizamos 8 MB y para un computador con 16MB utilizamos 4 MB y tuvimos buenos resultados:

cache_mem 8 MB

cache_swap_low. Indica el nivel en porcentaje de capacidad mínima aceptada por squid, es decir, los objetos se mantendrán en el cache hasta que se cope el límite mínimo:

cache_swap_low 90

cache_swap_high. Parámetro que especifica en porcentaje el límite máximo que utiliza squid para mantener objetos en el cache. Si el valor asignado es del 95%, squid comenzara a eliminar los objetos del cache cuando se tope el 95% de la capacidad asignada a squid:

cache_swap_high 95

maximum_object_size. Este parámetro, especificado en KB, indica el tamaño máximo que se almacena en el cache. Por defecto se utiliza 4MB:

maximum_object_size 4096 KB

cache_dir. Directorio de ubicación del cache, por defecto /usr/local/squid/cache. Este parámetro incluye tres parámetros numéricos adicionales. El primero incluye el número de MB que se utilizarán en este directorio para el cache, por defecto 100MB, el segundo el número de directorios a utilizar en el primer nivel (16 por defecto) y el tercero el número de subdirectorios en el segundo nivel (256 por defecto):

cache_dir ufs /usr/local/squid/cache 100 16 256

cache_access_log. Especifica en que directorio se realizará el registro de accesos al squid. Este parámetro es importante para definir posteriormente en el sistema de análisis de estadísticas, webalizer, la ubicación del registro de accesos:

cache_access_log /usr/local/squid/logs/access.log

cache_log. Define en donde se almacenan los mensajes del sistema:

cache_log /usr/local/squid/logs/cache.log

cache_store_log. Este parámetro especifica la ubicación del archivo de registro de objetos sacados del cache. No es necesario activarlo. Es mejor desactivarlo para ahorrar espacio en disco:

cache_store_log none

emulate_httpd_log. Este parámetro define si se desea utilizar emulación de logs del servidor web (httpd). Es importante activarlo con el fin de poder utilizar el sistema de análisis de estadísticas webalizer:

emulate_httpd_log on

mime_table. Define la ubicación del archivo mime.conf, se utiliza el valor por defecto:

mime_table /usr/local/squid/etc/mime.conf

pid_filename. Define la ubiación del archivo squid.pid, se utiliza el valor por defecto:

pid_filename /usr/local/squid/logs/squid.pid

debug_options. Opciones de depuración, se utiliza el valor por defecto:

debug_options ALL,1

ALL,1

reference_age. Este parámetro determina cuanto tiempo permanece el objeto en el cache. Recomendamos un mes:

reference_age 1 month

quick_abort. Este parámetro define si un objeto debe almacenarse en el cache cuando el usuario ha interrumpido una solicitud: si el objeto tiene el valor especificado en min o falta más del valor expecificado en max se abortará la transferencia. Si se ha realizado una transferencia mayor del valor en porcentaje especificado en pct, no se abortará el almacenamiento del objeto. Se recomienda utilizar los valores por defecto:

quick_abort_min 16 KB
quick_abort_max 16 KB
quick_abort_pct 95

negative_ttl. Este parámetro se utiliza para definir cuanto tiempo debe esperar squid para procesar nuevamente una página que no ha sido encontrada. Se recomiendan 5 minutos:

negative_ttl 5 minutes

positive_dns_ttl. Este parámetro especifica el tiempo que squid mantendrá la dirección de un sitio visitado exitosamente. El valor por defecto es de 6 horas:

positive_dns_ttl 6 hours

negative_dns_ttl. Especifica el tiempo que espera squid antes de intentar nuevamente determinar la dirección de un sitio solicitado y que no ha sido encontrado. Por defecto 5 minutos:

negative_dns_ttl 5 minutes

http_access e icp_access. Define una serie de permisos para acceso al servidor squid. Recomendamos utilizar la siguiente configuración:

http_access allow manager localhost
http_access deny manager
http_access allow CONNECT !SSL_ports
http_access allow all
icp_access allow all
miss_access allow all

cache_mgr. Definición del administrador del sistema. En este ejemplo el usuario webmaster recibirá notificación por correo si squid deja de funcionar:

cache_mgr webmaster

cache_effective_user y cache_effective_group . Estos dos parámetros definen que usuario (user) y grupo (group) ejecuta squid. La versión de RPM utiliza el usuario squid y grupo squid. La versión de las fuentes utiliza el usuario nobody y grupo nogroup

RPM:

cache_effective_user squid
cache_effective_group squid

Fuentes:

cache_effective_user nobody
cache_effective_group nogroup

Es importante verificar que el grupo nogroup exista en su sistema mirando el archivo group ubicado en el directorio /etc. Este archivo debe tener una entrada como se muestra a continuación:

nogroup:x:500:

El número que aparece al final de la línea debe ser único y corresponder al siguiente número disponible en su servidor. Por ejemplo, si la última línea del archivo /etc/group es:

slocate:x:21:

Utilice un número para este grupo superior a 21 y cerciorese que no se encuentre ya utilizado por otro grupo en este archivo. Como en el ejemplo anterior recomendamos que utilice el número 500.

El usuario nobody existe en las distribuciones de Linux.

visible_hostname . Este parámetro define el nombre del servidor. Coloque aquí el nombre de su servidor:

visible_hostname cabina

httpd_accel_uses_host_header . Este parámetro se utiliza para activar el proxy transparente, necesario para controlar el acceso a Internet desde las estaciones.

httpd_accel_uses_host_header on

httpd_accel_host y httpd_accel_port . Este parámetro también es necesario para activar el proxy transparente. Al configurar squid de esta manera no es necesario realizar configuración de los navegadores del centro de acceso con servidor proxy lo que se constituye en una ventaja:

httpd_accel_host virtual
httpd_accel_port 80

httpd_accel_with_proxy . Este parámetro es necesario activarlo para el proxy transparente:

httpd_accel_with_proxy on

dns_testnames. Este parámetro define que hosts se utilizan para chequear el servidor de nombres:

dns_testnames netscape.com internic.net nlanr.net microsoft.com

append_domain . Este parámetro indica a squid que dominio debe añadirse a solicitudes que vengan sin dominio completo. Es recomendable colocar el dominio de su Telecentro (nótese que debe comenzar con un punto):

append_domain .cabina.dominio

cachemgr_passwd. Squid es posible ser administrado desde una página web una vez instalado (no documentado aquí). Este parametro define la clave de acceso para tener acceso a esta función:

cachemgr_passwd clave all

4-.Creación del cache.

Antes de utilizar squid por primera vez es necesario crear el directorio cache ejecutando para la versión de RPM:

# /usr/sbin/squid -z

y para la versión de fuentes:

# /usr/local/squid/bin/squid -z

En la versión de fuentes es importante asignar los permisos del directorio de registro (logs) al usuario nobody y grupo nogroup:

# cd /usr/local/squid/

# chmod nobody.nogroup logs

5-. Ejecución del squid.

5.1-. Inicio del servidor para la instalación de RPM.

Una vez instalado squid para que se inicie cada vez que se prenda el servidor se puede colocar al final del archivo /etc/rc.d/rc.local la línea de comando /etc/init.d/squid start:

# cd /etc/rc.d

# pico rc.local

ir al final del archivo y añadir:

/etc/init.d/squid start

o Usted puede ejecutar este comando manualmente.

5.2-. Inicio del servidor squid para la instalación de las fuentes:

Una vez instalado squid para que se inicie cada vez que se prenda el servidor se puede colocar al final del archivo /etc/rc.d/rc.local la línea de comando /usr/local/squid/bin/squid:

# cd /etc/rc.d

# pico rc.local

ir al final del archivo y añadir:

/usr/local/squid/bin/squid

o Usted puede ejecutar este comando manualmente.


Volver al Manual de Computación