Objectivo
O pacote squid3 é um proxy Internet com uma cache integrada. A vantagem de uma cache internet é a de guardar localmente dados pedidos anteriormente para, numa utilização futura, serem servidos localmente, evitando acessos repetidos a servidores distantes.
Instalação
root@server:~# aptitude install squid3
Configuração
A configuração do squid3 é guardada no ficheiro /etc/squid3/squid.conf.
O squid3 aceita ligações na porta 3128, por omissão. No entanto esta pode ser alterada (a porta 8080 também é muito utilizada com porta para o serviço de cache Internet):
#[...]
# Squid normally listens to port 3128
http_port 3128
#[...]
Por segurança o squid3 só responderá a pedidos originados na rede local ou no próprio servidor. Esta restrição é conseguida definindo uma lista de controle de acesso ou ACL (Access Control List) (acl home.lan src 192.168.1.0/24) e autorizando o acesso apenas aos sistemas incluídos nessa lista (http_access allow home.lan):
Definição da lista de endereços da rede interna na secção acl:
# [...]
# 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
# [...]
Definição das permissões de acesso na secção http_access:
# [...]
#
# 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 home.lan
http_access allow localhost
# And finally deny all other access to this proxy
http_access deny all
# [...]
O tamanho total da cache do squid3 pode ser afinado para um valor conveniente, como por exemplo, 2048Mb:
# [...]
# Uncomment and adjust the following to add a disk cache directory.
cache_dir ufs /var/spool/squid3 2048 16 256
# [...]
A identificação do servidor proxy pode também ser definida:
# [...]
# 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
# [...]
Opcionalmente, pode-se também configurar o tamanho máximo de um objecto a guardar em cache definindo o parâmetro maximum_object_size com um valor em Kbytes:
# [...]
# 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 o serviço squid3:
root@server:~# /etc/init.d/squid3 restart
Configuração de clientes
É possível configurar o browser Firefox para utilizar um proxy, acedendo ao menu Ferramentas —> Opções… —> Avançadas —> Rede —> Definições…, activar a opção Configuração manual do proxy e inserir o endereço do servidor proxy (192.168.1.100) e a porta (3128). Podem-se definir excepções para o próprio posto (127.0.0.1) e para a rede local (192.168.1.0/24):
No caso de sistemas Linux, é possível declarar a variável "http_proxy" com a URL do proxy a utilizar:
fribeiro@server:~$ export http_proxy="http://192.168.1.100:3128/"
No entanto, na próxima sessão terá que ser declarada novamente.
Um método mais duradouro é declarar a variável automaticamente a cada login, incluindo a declaração no ficheiro ~/.profile do utilizador:
fribeiro@server:~$ echo 'export http_proxy="http://192.168.1.100:3128/"' >> ~/.profile
A declaração pode ainda ser feita de modo automático e para todos os utilizadores, se incluída no ficheiro de sistema /etc/profiles:
root@server:~# echo 'export http_proxy="http://192.168.1.100:3128/"' >> /etc/profile
O mesmo princípio é aplicável para a variável ftp_proxy que define o proxy a utilizar nas ligações FTP.
Referências
- Wikipedia: Proxy (http://pt.wikipedia.org/wiki/Proxy)
- Wikipedia: Cache (http://pt.wikipedia.org/wiki/Cache)
- Squid Web Proxy Cache (http://www.squid-cache.org/)


