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:
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í.
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.
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
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.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