La configuración de Squid se almacena en el archivo de configuración /etc/squid/squid.conf. Para poder iniciar
Squid por primera vez, no es necesario hacer
cambios en este archivo, aunque los clientes externos tendrán inicialmente
el acceso denegado. El proxy necesita ejecutarse en
localhost y normalmente utilizará el puerto
3128. Las opciones son muy extensas y están documentadas
con muchos ejemplos en el archivo /etc/squid/squid.conf
preinstalado. Casi todas las líneas comienzan por el símbolo
# (significa que la línea está comentada y su contenido
no se evaluará); las opciones relevantes se encuentran al final de la línea.
Los valores por defecto corresponden casi siempre a los valores que
necesitaremos, así que para muchas opciones sólo será necesario quitar el
símbolo de comentario al principio de la líneas. De cualquier modo, es
recomendable dejar el ejemplo comentado y reescribir la línea con los nuevos
parámetros una línea más abajo. De esta manera se puede ver fácilmente
cuales son los valores por defecto y cuales son los cambios introducidos.
![]() | Adaptar el archivo de configuración tras una actualización |
|---|---|
Si está actualizando desde una versión anterior de
Squid, se recomienda editar el nuevo
| |
Este es el puerto en el que Squid atenderá
las peticiones de los clientes. El puerto por defecto es
3128, aunque también suele emplearse
8080. Es posible especificar varios puertos
separándolos por espacios en blanco.
hostname
type proxy-port
icp-port
Esta opción permite especificar otro servidor proxy como
“padre” (parent), por
ejemplo si quiere usar el de su proveedor. En la opción
hostname se especifica el nombre y la
dirección IP del proxy al que nos vayamos a conectar, en la opción
type, especificamos parent.
Para proxy-port, se debe escribir el número
de puerto especificado por el operador del “padre” para los
navegadores (normalmente se utiliza el 8080). Como
icp-port puede introducirse
7 o bien 0 si no se conoce el puerto
ICP del proxy padre y su uso carece de interés para el proveedor.
Asimismo, default y no-query se deben
especificar después de los números de puerto para no permitir el uso del
protocolo ICP. Squid se comportará en ese
caso como un navegador normal en lo que respecta al proxy del proveedor.
Esta entrada define la cantidad máxima de memoria RAM que utilizará
Squid para los cachés. El valor por defecto
es 8 MB.
La entrada correspondiente a cache_dir fija el
directorio donde se almacenarán los datos. Los números al final indican
el tamaño máximo en “MB” que se va a utilizar, seguido del
número de directorios de primer y segundo nivel. El parámetro
ufs debe dejarse tal y como está. El valor por defecto
es “100 MB” de espacio en disco ocupado en el directorio
/var/cache/squid, para luego crear 16
subdirectorios más, y en cada uno de ellos se crearán 256 directorios
más. Al especificar el espacio de disco a utilizar, siempre se debe
dejar espacio suficiente de reserva. Se recomienda manejar valores de
tamaño para el caché entre el 50 a un 80 por ciento del espacio total
disponible. Los últimos dos números sólo deben ser incrementados con
precaución ya que demasiados directorios pueden provocar problemas de
funcionamiento. En caso de disponer de más discos para repartir entre
ellos el caché, se pueden especificar varias líneas de
cache_dir.
ruta para archivos de registro.
Ruta para archivos de registro.
Estas tres entradas especifican la ruta donde Squid guardará sus archivos de registro. Normalmente no hace falta cambiar nada. Si Squid soporta una carga relativamente elevada, puede ser necesario distribuir el caché y estos archivos de registro en discos diferentes.
Si se le asigna a la entrada el valor on, será posible obtener archivos de registro en formato legible. Sin embargo, algunos programas de evaluación no pueden interpretarlos.
Esta entrada permite enmascarar las direcciones IP en los archivos de
registro para ocultar la identidad de los clientes. Especificando en
esta opción el valor 255.255.255.0, la última cifra de la
dirección IP se interpretará como cero.
Esta opción se utiliza para definir la contraseña usada por Squid para realizar el registro (login) para FTP anónimo. Es importante especificar una dirección de correo electrónico válida, ya que algunos servidores FTP pueden comprobar si es válida o no.
Dirección de correo electrónico a la que Squid enviará un mensaje en caso que termine inesperadamente. Por defecto se enviarán al webmaster.
Squid puede rotar archivos de registro al
ejecutar el comando squid -k rotate. Los archivos
serán enumerados durante este proceso y, una vez alcanzado el valor
especificado, el archivo más antiguo será sobreescrito. El valor que se
utiliza normalmente es 0, ya que para archivar y borrar
archivos de registro en SUSE LINUX se usa un cronjob que se encuentra
en el archivo de configuración
/etc/logrotate/squid.
Con la opción append_domain, se puede especificar qué dominio se añadirá automáticamente en caso de que no se facilite ninguno. Normalmente se especifica el propio dominio, de forma que basta con introducir www en el navegador para acceder al servidor web propio.
Al desactivar esta opción con el valor off, Squid eliminará las direcciones IP y el nombre de la máquina de los clientes en las peticiones HTTP.
Normalmente no es necesario cambiar estos valores. No obstante, si se dispone de una conexión telefónica, a veces puede ocurrir que no sea posible acceder a Internet. Si esto sucede, Squid tomará nota de las peticiones fallidas y se negará a realizarlas otra vez, incluso aunque la conexión ya se haya restablecido. En ese caso puede cambiar el valor minutes a seconds. Después de esto, al pulsar en el botón de Recargar en el navegador la conexión se reiniciará al cabo de unos segundos.
acl_name
Si desea impedir que Squid conteste a
peticiones que vengan directamente de Internet, puede utilizar el
siguiente comando para forzar la conexión a otro proxy. Este debe estar
ya introducido en la opción cache_peer. Si como
acl_name se especifica el valor
all, todas las peticiones serán redirigidas al caché
padre. Esto puede ser necesario, por ejemplo, en
caso de disponer de un proveedor que estipule estrictamente el uso de
sus proxys o que no permita acceso directo a Internet a través de su
cortafuegos.
Squid dispone de un elaborado sistema para controlar el acceso al proxy que, gracias al uso de ACLs, puede ser configurado de forma fácil y flexible. Se trata de listas de normas procesadas secuencialmente. Las ACLs deben ser definidas antes de poder utilizarse. Algunas ACLs como all y localhost ya están predefinidas. La mera definición de una ACL no tiene ningún efecto. Es necesario que se aplique por ejemplo en combinación con http_access para que puedan procesarse las reglas definidas anteriormente.
Una ACL necesita por lo menos tres especificaciones para definirla. El
nombre <acl_nombre> se puede elegir
arbitrariamente. El <tipo> se puede elegir de
entre diferentes opciones disponibles en la sección ACCESS
CONTROLS del archivo
/etc/squid/squid.conf. La parte de datos depende
del tipo de ACL y también puede ser leída desde un archivo que contenga,
por ejemplo, nombres de máquinas, direcciones IP o bien URLs. A
continuación algunos ejemplos:
acl usuarios srcdomain .mi-dominio.com acl profesores src 192.168.1.0/255.255.255.0 acl alumnos src 192.168.7.0-192.168.9.0/255.255.255.0 acl mediodía time MTWHF 12:00-15:00
http_access determina a quién le está permitido usar el proxy y quién puede acceder a Internet. Para ello deben definirse ACLs que permitan o denieguen el acceso mediante allow o deny (localhost y all ya han sido definidas con anterioridad). Se puede crear una lista completa de entradas http_access que será procesada de arriba a abajo y, dependiendo de qué regla pueda aplicarse en primer lugar, se permitirá o no el acceso a Internet para cada URL. Por eso la última entrada de todas debe ser http_access deny all. En el ejemplo siguiente localhost (el ordenador local) dispone de acceso libre mientras que todos los otros hosts tienen el acceso denegado.
http_access allow localhost http_access deny all
Otro ejemplo donde se utilizan las reglas definidas anteriormente: el
grupo profesores siempre
tendrá acceso a Internet, mientras que el grupo alumnos solamente tiene acceso de lunes a
viernes durante el mediodía.
http_access deny localhost http_access allow profesores http_access allow alumnos mediodía time http_access deny all
Para mantener el orden se recomienda insertar la lista con las entradas
http_access propias en el archivo
/etc/squid/squid.conf entre las líneas
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR # CLIENTS
y
http_access deny all
Con esta opción se puede especificar un programa de redirección como squidGuard capaz de bloquear el acceso a URLs no deseadas. El acceso a Internet puede ser controlado individualmente para varios grupos de usuarios con la ayuda de la autentificación por proxy y listas de control de acceso apropiadas. squidGuard es un paquete independiente que se debe instalar y configurar separadamente.
Si los usuarios deben ser autentificados en el proxy, se puede especificar un programa como pam_auth que realice esta función. Cuando se accede a pam_auth por primera vez, el usuario verá una pantalla de login donde deberá introducir el nombre de usuario y la contraseña. Además será necesario especificar una ACL para que sólo los usuarios registrados puedan acceder a Internet:
acl password proxy_auth REQUIRED http_access allow password http_access deny all
El texto REQUIRED después de proxy_auth puede también sustituirse por una lista de usuarios permitidos o por la ruta a esa lista.
Con esta opción se consigue que para todos los clientes que pertenezcan
a la ACL especificada se ejecute un programa que determine la identidad
del cliente. Al especificar el valor all como
<acl_nombre>, la regla será válida para todos
los clientes. Para ello deberá ejecutar un daemon denominado ident en
todos los clientes. En Linux, se puede utilizar para este propósito el
paquete pidentd; en el caso de
Windows, hay software libre disponible que se
puede descargar de Internet. Para asegurar que sólo se permita el acceso
a clientes correctamente identificados, se deberá igualmente especificar
otra ACL tal y como se define a continuación:
acl identhosts ident REQUIRED http_access allow identhosts http_access deny all
Aquí también se puede cambiar el valor REQUIRED por una lista de usuarios autorizados. El uso de ident puede reducir la velocidad del sistema debido a que el proceso de autentificación se repite para cada petición.