Professional Documents
Culture Documents
Estamos republicando o artigos sobre Proxy e Cache HTTP desenvolvido por <Heini Thomas Geib>.
Heini Thomas é um dos membros ativos da comunidade FreeBSD no Brasil, e produz vários materiais de qualidade
sobre o sistema.
FreeBSDProxy e Cache HTTPSquid
O Squid é um software largamente utilizado como servidor proxy e cache HTTP em diversos tipos de redes, como
corporativas, de provedores, universidades etc. Possui alta performance e suporta os protocolos HTTP, FTP e Gopher.
A sua página é www.squid-cache.org. De um modo simplificado, o Squid recebe os pedidos de usuários que desejam
visualizar páginas externas e verifica se tem a página em cache. Se tiver a página em cache, verifica se ela ainda é
válida e envia para o cliente. Se não tiver a página em cache, busca a página no servidor externo, armazena no
cache e manda para o cliente. Assim, na próxima vez que alguém solicitar esta página a mesma será carregada muito
mais rapidamente, pois estará em um cache local. Entre as principais vantagens de utilizar o Squid estão:
· Aumento na segurança, pois todas as requisições para páginas externas irão passar através do proxy;
· Aumento da velocidade de navegação e/ou diminuição da utilização do link Internet, já que muitas páginas acessadas
pelos usuários estarão em cache local;
· Possibilidade de definir uma política de acesso, bloqueando páginas fora do escopo a que se destina a Internet na
instituição, como chat, pornografia etc.
O Squid necessita de um diretório no disco onde irá armazenar o seu cache. Geralmente, em máquinas com esse
propósito criamos um filesystem especial para o Squid, que pode ser /squid, onde serão guardados o cache e os logs. O
tamanho do cache pode ser determinado pela configuração do Squid, e quanto maior o cache mais páginas serão
armazenadas e mais rápida será a navegação.
Efetue o download da última versão estável do Squid, a partir do seu site. A versão atual é 2.5 STABLE4, e o arquivo
se encontra em http://www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE14.tar.gz. Extraia este arquivo no /tmp, e
vá até o diretório que será criado.
# rmdir /var/logs
Crie o diretório /var/log/squid, para armazenar os logs do Squid. Atribua a este diretório o dono squid e aplique a permissão
750.
Vá até o diretório /usr/local/etc. Visualize o arquivo squid.conf.default e veja todas as opções. Segue abaixo um exemplo
sintetizado do arquivo squid.conf. Copie-o no diretório mencionado. Mantenha o squid.conf.default como referência.
# Log de requisicoes.
cache_access_log /var/log/squid/access.log
# Log do cache.
cache_log /var/log/squid/cache.log
# ACLs gerais.
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563 10000
acl Safe_ports port 80 21 443 563 70 210 1025-65535 280 488 591 777
acl CONNECT method CONNECT
# Hostname completo.
visible_hostname squid.exemplo.org
coredump_dir none
-------------------- Fim do arquivo squid.conf --------------------
O diretório no qual o Squid irá guardar o cache deverá ter o dono squid e permissão 750.
Como estaremos utilizando o diskd, é interessante fazer um certo tuning, adicionando algumas opções no kernel.
Adicione as opções abaixo, e após isso recompile e instale o novo kernel, e reinicie a máquina.
Após ter configurado, execute o Squid pela primeira vez com a opção "-z":
# /usr/local/sbin/squid -z
Para efetuar o serviço de proxy transparente, este servidor deverá encaminhar para a porta do Squid as requisições HTTP
vindas dos clientes, da rede interna por exemplo. Para isso, você deverá ter um firewall configurado e funcionando,
veja a seção IPFW2. Coloque a seguinte regra no ipfw2:
A rede 10.10.0.0/16 no exemplo é a rede interna, cujas requisições nas portas 80 e 21 serão direcionadas para a porta
3128 em localhost. Também será permitido que máquinas da rede local contatem o Squid, caso o proxy seja
configurado manualmente. O ip 10.10.0.5 no exemplo é o da interface do servidor conectada a rede interna. A terceira
regra irá bloquear qualquer outro tráfego tendo como destino a porta 3128. Estas regras devem ficar antes da(s)
regra(s) do NAT, caso esteja utilizando-o.
Vá até o diretório /usr/local/etc/squid. Poderão ser criados os arquivos proibido-url, proibido-urlpath e proibido-dominios,
todos com o dono squid. Estes arquivos deverão possuir a relação de páginas cujo acesso não será permitido. Deverão
http://www.fug.com.br _PDF_POWERED _PDF_GENERATED 29 November, 2010, 13:28
FUG-BR / Grupo Brasileiro de Usuarios de FreeBSD
ter uma entrada por linha, e descritas em expressões regulares - na maioria das vezes não são necessárias espressões
muito elaboradas, bastando inserir as strings, uma por linha. O arquivo proibido-url deve conter as strings que serão
verificadas contra toda a URL. O proibido-urlpath, as strings que serão verificadas contra a URL completa menos o nome
do servidor e domínio, por exemplo no endereço www.exemplo.org/testes/pagina, o urlpath é apenas "testes/pagina". Já
o proibido-dominios é o contrário, contém as strings que serão verificadas apenas contra o nome e domínio do site, no
exemplo anterior seria "www.exemplo.org". Um excelente guia sobre expressões regulares se encontra no endereço
http://aurelio.net/er/.
Para que os logs do Squid sejam rotacionados na freqüência desejada, insira uma linha no arquivo /etc/crontab que
execute o comando "squid -k rotate". O exemplo abaixo faz com que a rotação seja feita todo sábado às 23h58min:
/usr/local/sbin/squid
/usr/local/sbin/squid -k shutdown
FONTE: http://www2.unijui.tche.br/~heini/freebsd/squid.html