Squid¶
Acá hay algunas notas sobre Squid pero no mucho más.
El archivo de configuración es /etc/squid/squid.conf
. Está bueno leer los
primeros comentarios de ese archivo porque explica un poco la estructura.
El archivo es MUY largo, está dividido en secciones. Para navegarlo yo busco con
Ctrl-F el string # -----------
. Las secciones que usamos son:
NETWORK OPTIONS
.MEMORY CACHE OPTIONS
.DISK CACHE OPTIONS
.OPTIONS FOR TROUBLESHOOTING
.ACCESS CONTROLS
.
Cada opción de configuración tiene un nombre o KEY, por lo tanto para buscar
de opción en opción usar # KEY
, o para buscar una opción específica buscar
por ejemplo KEY: request_timeout
.
Para iniciar/parar el servidor:
service squid status
service squid start
service squid stop
service squid restart
service squid reload
Configuración general¶
Estas son las opciones más importantes que encontré.
Network options¶
http_port
: Puerto en donde escucha el servidor, además se puede especificar una IP determinada para que sólo escuche en una interfaz.icp_port
: Puerto que usa para comunicarse con otros cachés vecinos. Por defecto está deshabilitado.
Memory cache options¶
cache_mem
: Memoria RAM reservada para cachés.maximum_object_size_in_memory
: Limite de tamaño de objeto a almacenar en RAM.
Disk cache options¶
cache_dir
: Ubicación de los cachés y máximo tamaño permitido. Por defecto no tiene nada por lo tanto los cachés en disco están deshabilitados, aunque tiene una línea comentada con valores estándar:cache_dir ufs /var/spool/squid 100 16 256
ufs
es uno de los formatos que se pueden usar, después se especifica el directorio (debe existir previamente ya que no será creado). Luego el primer número es el espacio en disco a usar en MB, el segundo es el número de directorios de primer nivel a usar, y el tercero el número de directorios de segundo nivel a usar.
Options for troubleshooting¶
cache_log
: Archivo de log, por defecto es/var/log/squid/cache.log
.
Access controls¶
Primero se deben establecer los Access Control Lists (ACLs) que son simplemente listas de puertos, IPs, protocolos, etc. Luego se admite o niega el acceso a ciertas listas.
acl
: Establece una lista de puertos, IPs, protocolos, horarios, etc. Ver los comentarios del archivo para aprender como se usa porque es muy extenso.http_access
: Permite (allow) o impide (deny) el acceso dependiendo de las ACLs definidas, la última línea debería siempre serhttp_access deny all
. Por ejemplo:http_access deny acl1 acl2... http_access allow acl1 acl2... http_access allow !acl http_access deny all
De todas formas ya hay varias reglas por defecto, lo recomendado es agregar las que uno necesite luego de la línea:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
Casos¶
Proxy transparente o inline¶
Se coloca al proxy como gateway de la red a la cual se quiere servir. Se debe activar el forwarding IP:
sudo bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
Tengo entendido que se puede configurar a Squid en el puerto 80, o se puede dejarlo en cualquier puerto y agregar una regla iptables para redirigir el tráfico HTTP:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
En ese caso la interfaz de entrada es eth0
.