Capítulo 29. O Servidor Proxy Squid

Sumário

29.1. Alguns fatos sobre caches proxy
29.2. Requisitos do sistema
29.3. Iniciando o Squid
29.4. O arquivo de configuração /etc/squid/squid.conf
29.5. Configurando um proxy transparente
29.6. cachemgr.cgi
29.7. squidGuard
29.8. Geração de relatório de cache com o Calamaris
29.9. Mais informações

Resumo

O Squid é um proxy de cache amplamente utilizado em plataformas Linux e UNIX. Isso significa que armazena objetos da Internet solicitados, como dados em um servidor da Web ou FTP, em uma máquina mais próxima da estação de trabalho solicitante do que o servidor. Este capítulo discute sua configuração, as configurações necessárias para executá-lo, como configurar o sistema para realizar um proxy transparente, como reunir estatísticas sobre o uso do cache com a ajuda dos programas, como o Calamaris e o cachemgr, e como filtrar conteúdos da Web com o squidGuard.

O Squid atua como um proxy de cache. Redireciona pedidos de objeto dos clientes (neste caso, de browsers da Web) para o servidor. Quando os objetos solicitados chegam do servidor, ele fornece os objetos ao cliente e mantém uma cópia deles no cache do disco rígido. Uma das vantagens do cache é que vários clientes que solicitem o mesmo objeto podem ser atendidos a partir do cache do disco rígido. Este procedimento permite que os clientes recebam os dados muito mais rapidamente em relação à Internet. Além disso, reduz o tráfego da rede.

Junto com o cache real, o Squid oferece uma ampla gama de recursos. Entre eles, distribuir a carga entre hierarquias de intercomunicação dos servidores proxy, definir listas de controle de acesso restrito para todos os clientes que acessam o proxy, permitir ou negar o acesso a páginas da Web específicas com a ajuda de outros aplicativos e gerar estatísticas sobre páginas da Web visitadas com freqüência para avaliação dos hábitos de navegação dos usuários. O Squid não é um proxy genérico. Normalmente, ele funciona como proxy apenas para conexões HTTP. Ele também tem suporte para protocolos FTP, Gopher, SSL e WAIS, mas não para outros protocolos da Internet, como Real Audio, notícias ou videoconferência. Como o Squid tem suporte apenas para o protocolo UDP a fim de fornecer comunicação entre caches diferentes, não há suporte para vários outros programas multimídia.


29.1. Alguns fatos sobre caches proxy

Como cache proxy, o Squid pode ser usado de várias maneiras. Quando combinado com um firewall, pode ajudar na segurança. Vários proxies podem ser usados juntos. Também pode determinar os tipos de objetos que devem ser armazenados no cache e durante quanto tempo.

29.1.1. Squid e segurança

É possível usar o Squid junto com um firewall para proteger as redes internas de acesso externo usando um cache proxy. O firewall nega acesso de todos os clientes a serviços externos, exceto o Squid. Todas as conexões da Web devem ser estabelecidas pelo proxy. Com esta configuração, o Squid controla totalmente o acesso à Web.

Se a configuração do firewall incluir um DMZ, o proxy deve operar dentro desta zona. A Seção 29.5, “Configurando um proxy transparente” descreve como implementar um proxytransparente. Isto simplifica a configuração dos clientes, porque neste caso eles não necessitam de informações sobre o proxy.

29.1.2. Vários caches

Várias instâncias do Squid podem ser configuradas para trocar objetos entre eles. Isto reduz a carga total do sistema e aumenta as chances de encontrar um objeto já existente na rede local. Também é possível configurar hierarquias de cache, de maneira que um cache seja capaz de encaminhar solicitações de objeto para caches irmãos ou para um cache pai, fazendo com que obtenha objetos de outro cache na rede local ou diretamente da origem.

Escolher a topologia adequada para a hierarquia de cache é muito importante, porque não é desejável aumentar o tráfego geral na rede. Para uma rede muito grande, faz sentido configurar um servidor proxy para toda subrede e conectá-los a um proxy pai, que por sua vez é conectado ao cache do proxy ISP.

Todas estas comunicações são tratadas pelo ICP (Internet cache protocol) que é executado no protocolo UDP. As transferências de dados entre caches são tratadas com HTTP (hypertext transmission protocol) baseado no TCP.

Para encontrar o servidor mais adequado do qual obter os objetos, um cache envia uma solicitação ICP a todos os proxies irmãos. Estes respondem às solicitações via repostas ICP com um código HIT se o objeto foi detectado ou, em caso contrário, com um MISS. Se forem encontradas várias respostas HIT, o servidor proxy decide de qual servidor fazer download, dependendo de fatores como que cache enviou a resposta mais rápida ou qual está mais próximo. Se não for recebida nenhuma resposta satisfatória, a solicitação é enviada ao cache pai.

[Tip]Dica

Para evitar duplicação de objetos em vários caches na rede, são usados outros protocolos ICP, como CARP (cache array routing protocol) ou HTCP (hypertext cache protocol). Quanto maior o número de objetos mantidos na rede, maior a possibilidade de localizar o desejado.

29.1.3. Armazenando objetos da Internet em cache

Nem todos os objetos disponíveis na rede são estáticos. Há muitas páginas CGI, contadores de visitantes e documentos com conteúdo SSL criptografado que são gerados dinamicamente. Objetos como estes não são armazenados no cache porque mudam toda vez que são acessados.

A questão é com relação a quanto tempo todos os outros objetos armazenados no cache devem permanecer ali. Para determiná-lo, todos os objetos no cache recebem a atribuição de um ou vários estados possíveis. Os servidores da Web e proxy descobrem o status de um objeto adicionando cabeçalhos aos objetos, como “Última modificação” ou “Vencimento” e a data correspondente. Também são usados outros cabeçalhos especificando que objetos não devem ser armazenados no cache.

Os objetos no cache normalmente são substituídos, devido à falta de espaço livro no disco rígido, usando algoritmos como LRU (last recently used). Basicamente, significa que o proxy elimina os objetos que não foram solicitados pelo tempo mais longo.