Volver a Proxy Internet

Cache web: Squid3

Objetivo

El paquete squid3 es un proxy Internet con una cache integrada. La ventaja de una cache internet es que se guardan localmente los datos pedidos previamente para que, en una utilización futura, sean servidos localmente, evitando accesos repetidos a servidores distantes.

Instalación

root@server:~# apt-get install squid3

Configuración

La configuración de squid3 se almacena en el archivo /etc/squid3/squid.conf.

squid3 acepta, por omisión, conexiones en el puerto 3128. Sin embargo, esto puede modificarse (el puerto 8080 también es muy común como puerto para el servicio de caché Internet):

/etc/squid3/squid.conf
#[...]

# Squid normally listens to port 3128
http_port 3128

#[...]

Por seguridad, squid3 sólo responderá a pedidos originados en la red local o en el propio servidor. Esta restricción es conseguida definiendo una lista de control de acceso oACL (Access Control List) (acl home.lan src 192.168.1.0/24) y autorizando el acceso sólo a los sistemas incluidos en esa lista (http_access allow home.lan):

Definición de la lista de direcciones de la red interna en la sección acl:

/etc/squid3/squid.conf
# [...]

#  TAG: acl
#       Defining an Access List

# [...]

#Default:
# acl all src all
#
#
# Recommended minimum configuration:
#
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
#acl localnet src 10.0.0.0/8    # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
#acl localnet src 192.168.0.0/16        # RFC1918 possible internal network
#acl localnet src fc00::/7       # RFC 4193 local private network range
#acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines

acl home.lan src 192.168.1.0/24

# [...]

Definición de permisos de acceso a la sección http_access:

/etc/squid3/squid.conf
# [...]

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#

# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
#http_access allow localnet
http_access allow localhost

http_access allow home.lan

# And finally deny all other access to this proxy
http_access deny all

# [...]

El tamaño total de la cache de squid3 puede ser afinado hasta un valor adecuado, como por ejemplo, 2048Mb:

/etc/squid3/squid.conf
# [...]

# Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /var/spool/squid3 100 16 256
cache_dir ufs /var/spool/squid3 2048 16 256

# [...]

La identificación del servidor proxy también puede ser definida:

/etc/squid3/squid.conf
# [...]

#  TAG: visible_hostname
#       If you want to present a special hostname in error messages, etc,
#       define this.  Otherwise, the return value of gethostname()
#       will be used. If you have multiple caches in a cluster and
#       get errors about IP-forwarding you must set them to have individual
#       names with this setting.
#Default:
# visible_hostname localhost
visible_hostname proxy.home.lan

# [...]

De manera opcional, también se puede configurar el límite máximo de los objetos que se guarden en el cache, al definir el parámetro maximum_object_size con un valor en Kbytes:

/etc/squid3/squid.conf
# [...]

#  TAG: maximum_object_size     (bytes)
#       Objects larger than this size will NOT be saved on disk.  The
#       value is specified in kilobytes, and the default is 4MB.  If
#       you wish to get a high BYTES hit ratio, you should probably
#       increase this (one 32 MB object hit counts for 3200 10KB
#       hits).  If you wish to increase speed more than your want to
#       save bandwidth you should leave this low.
#
#       NOTE: if using the LFUDA replacement policy you should increase
#       this value to maximize the byte hit rate improvement of LFUDA!
#       See replacement_policy below for a discussion of this policy.
#Default:
# maximum_object_size 4096 KB
maximum_object_size 20480 KB

# [...]

Reiniciar el servicio squid3:

root@server:~# service squid3 restart

Configuración de clientes

Es posible configurar el navegador Firefox para utilizar un proxy, accediendo al menú de Herramientas –> Opciones… –> Avanzadas –> Red –> Definiciones…. Aquí se puede activar la opción Configuração manual do proxy e incluir la dirección del servidor proxy (192.168.1.100) y el puerto (3128). Es posible definir excepciones para el propio (127.0.0.1) y para la red local (192.168.1.0/24):

firefox-proxy

 

 

En el caso de los sistemas Linux, es posible declarar la variable “http_proxy” con la URL del proxy a utilizar:

fribeiro@server:~$ export http_proxy="http://192.168.1.100:3128/"

Pero, en la próxima sesión, la variable tendrá que se declarada nuevamente.

Un método más duradero es declarar la variable automáticamente en cada login. Esto se obtiene al incluir la declaración en el archivo ~/.profile do utilizador:

fribeiro@server:~$ echo 'export http_proxy="http://192.168.1.100:3128/"' >> ~/.profile

La declaración puede incluso efectuarse de modo automático para todos los usuarios, si se incluye en el archivo de sistema /etc/profiles:

root@server:~# echo 'export http_proxy="http://192.168.1.100:3128/"' >> /etc/profile

El mismo principio es aplicable para la variable ftp_proxy que define el proxy que se utilizará en las conexiones FTP.

Referencias