You are on page 1of 87

Configurando um Squid "Ninja"

Configurando um Squid "Ninja"

Table of Contents
Configurando um Squid "Ninja"......................................................................................................................1 Introduo...........................................................................................................................................................2 Sobre o autor............................................................................................................................................2 Sobre esse documento..............................................................................................................................2 Changelog...................................................................................................................................2 ToDo...........................................................................................................................................3 O que esperar de um proxy/cache?..........................................................................................................3 E o Squid? Satisfaz todos esses pontos?.....................................................................................4 O que o Squid?......................................................................................................................................4 Porque utilizar um Proxy/Cache?............................................................................................................5 Controle de acesso...................................................................................................................................5 Performance................................................................................................................................5 Porque utilizar o SQUID?........................................................................................................................6 Protocolos utilizados Rede e Aplicao...............................................................................................6 Requisitos .................................................................................................................................................7 Referncias ...............................................................................................................................................7 Instalando o Squid..............................................................................................................................................8 Instalando via binrio ou com facilidades do sistema.............................................................................8 Instalando em um sistema baseado em Red Hat Linux..............................................................8 Instalando em um sistema baseado em Debian..........................................................................8 Instalando em um FreeBSD........................................................................................................8 Instalando em um OpenBSD......................................................................................................9 Instalando em um Windows 2000..............................................................................................9 Baixando o cdigofonte.........................................................................................................................9 Limpando o squid.conf............................................................................................................................9 Configuraes bsicas ACLs..............................................................................................................10 Referncias .............................................................................................................................................10 Transparent Proxy............................................................................................................................................11 Configurando o Squid............................................................................................................................11 Configurando o iptables.........................................................................................................................12 Configurando o PF (OpenBSD).............................................................................................................12 Configurando o IPFilter (FreeBSD)......................................................................................................12 . Referncias .............................................................................................................................................12 Bloqueando Sites indesejados..........................................................................................................................13 Criando os arquivos necessrios............................................................................................................13 Editando o squid.conf............................................................................................................................13 Referncias .............................................................................................................................................14 Bloqueio de Banners.........................................................................................................................................15 Baixando e instalando o Banner Filter...................................................................................................15 Editando o squid.conf............................................................................................................................15 Referncias .............................................................................................................................................16

Configurando um Squid "Ninja"

Table of Contents
Protegendo usurios com antivrus.................................................................................................................17 Prrequisitos........................................................................................................................................17 Viralator.................................................................................................................................................18 Referncias .............................................................................................................................................18 ncsa_auth..................................................................................................................................20 Editando o squid.conf...............................................................................................................20 Criando um arquivo de senhas..................................................................................................20 smb_auth...................................................................................................................................20 Instalando o smb_auth..............................................................................................................21 Configurando o PDC................................................................................................................21 Configurando squid.conf..........................................................................................................21 Referncias .............................................................................................................................................21 Autenticando usurios......................................................................................................................................21 Controle de Banda............................................................................................................................................22 Editando o squid.conf............................................................................................................................22 Referncias .............................................................................................................................................22 Brincando com ACLs.......................................................................................................................................23 Utilizando IPs e redes............................................................................................................................23 Usando ACLs externas..........................................................................................................................23 Trabalhando com domnios ....................................................................................................................23 Restringindo por horrio........................................................................................................................24 Expresso regular na URL.....................................................................................................................24 MAC Address........................................................................................................................................24 Limitando o nmero de conexes por usurio.......................................................................................24 Impedindo ou Limitando o tamanho de uploads ....................................................................................25 Referncias .............................................................................................................................................25 Criando um arquivo de configurao automtica.........................................................................................26 Referncias .............................................................................................................................................26 Gerando relatrios............................................................................................................................................27 SARG.....................................................................................................................................................27 Instalao..................................................................................................................................27 Configurao .............................................................................................................................27 Gerando os relatrios................................................................................................................28 Dica...........................................................................................................................................28 Calamaris...............................................................................................................................................28 Baixando e rodando..................................................................................................................29 Squid Graph...........................................................................................................................................29 Instalao..................................................................................................................................29 Criando os grficos...................................................................................................................30 Referncias .............................................................................................................................................31

ii

Configurando um Squid "Ninja"

Table of Contents
Trabalhando com Hierarquias........................................................................................................................32 Entendendo o ICP..................................................................................................................................32 Fazendo roteamento por domnios.........................................................................................................32 Roteando por protocolo ..........................................................................................................................33 Pai e filho...............................................................................................................................................33 Pais e filho.............................................................................................................................................33 Referncias .............................................................................................................................................33 Utilizando o Squid como proxy reverso..........................................................................................................34 Configurao de proxy reverso..............................................................................................................34 Referncias .............................................................................................................................................34 Otimizando o Squid..........................................................................................................................................35 Especificando o Hardware.....................................................................................................................35 Sistemas de arquivo...............................................................................................................................35 DNS.......................................................................................................................................................35 Mltiplas rotas.......................................................................................................................................35 Editando o squid.conf............................................................................................................................36 Referncias .............................................................................................................................................37 Utilidades Pblicas............................................................................................................................................38 Resetando o cache do squid...................................................................................................................38 Reiniciando as configuraes do squid..................................................................................................38 Entrando em modo Debug.....................................................................................................................38 Squid saindo com erro (Squid Parent: child process exited due to signal)............................................38 Estudo de casos ..................................................................................................................................................39 Simples, eficiente e muito til...............................................................................................................39 As pequenas dominam...........................................................................................................................40 Precoces.................................................................................................................................................40 Arroz com feijo....................................................................................................................................41 Matriz e filial.........................................................................................................................................43 . Cache areo............................................................................................................................................43 ISP..........................................................................................................................................................45 Examinando o Squid.conf................................................................................................................................46 Tags da seo Network..........................................................................................................................46 http_port....................................................................................................................................46 icp_port.....................................................................................................................................46 htcp_port...................................................................................................................................46 mcast_groups............................................................................................................................47 tcp_outgoing_address...............................................................................................................47 udp_incoming_address.............................................................................................................47 udp_outgoing_address..............................................................................................................47 Tags da seo Peer cache servers e Squid hierarchy.............................................................................47 cache_peer................................................................................................................................47 neighbor_type_domain.............................................................................................................49 icp_query_timeout....................................................................................................................49 iii

Configurando um Squid "Ninja"

Table of Contents
Examinando o Squid.conf maximum_icp_query_timeout..................................................................................................49 mcast_icp_query_timeout.........................................................................................................49 dead_peer_timeout....................................................................................................................49 hierarchy_stoplist......................................................................................................................49 no_cache...................................................................................................................................50 Tags da seo Cache size.......................................................................................................................50 cache_mem...............................................................................................................................50 cache_swap_low.......................................................................................................................50 cache_swap_high......................................................................................................................50 maximum_object_size..............................................................................................................50 minimum_object_size...............................................................................................................51 maximum_object_size_in_memory..........................................................................................51 ipcache_size..............................................................................................................................51 ipcache_low..............................................................................................................................51 ipcache_high.............................................................................................................................51 fqdncache_size..........................................................................................................................51 cache_replacement_policy........................................................................................................51 memory_replacement_policy ....................................................................................................52 Tags da seo Log file path names and cache directories.....................................................................52 cache_dir...................................................................................................................................52 cache_access_log......................................................................................................................53 cache_log..................................................................................................................................53 cache_store_log........................................................................................................................53 cache_swap_log........................................................................................................................53 emulate_httpd_log on|off..........................................................................................................53 log_ip_on_direct.......................................................................................................................54 mime_table ................................................................................................................................54 log_mime_hdrs on|off...............................................................................................................54 user agent_log...........................................................................................................................54 referer_log .................................................................................................................................54 pid_filename.............................................................................................................................54 debug_options...........................................................................................................................54 log_fqdn....................................................................................................................................55 client_netmask..........................................................................................................................55 Tags da seo Support for External functions.......................................................................................55 ftp_user.....................................................................................................................................55 ftp_list_width............................................................................................................................55 ftp_passive................................................................................................................................55 cache_dns_program..................................................................................................................55 dns_children..............................................................................................................................56 dns_retransmit_interval............................................................................................................56 dns_timeout ..............................................................................................................................56 . dns_defnames ............................................................................................................................56 dns_nameservers.......................................................................................................................56 unlinkd_program .......................................................................................................................56 diskd_program..........................................................................................................................57 pinger_program .........................................................................................................................57 iv

Configurando um Squid "Ninja"

Table of Contents
Examinando o Squid.conf redirect_program .......................................................................................................................57 redirect_children.......................................................................................................................57 redirect_rewrites_host_header..................................................................................................57 redirector_access .......................................................................................................................57 authenticate_program ................................................................................................................57 authenticate_children................................................................................................................57 authenticate_ttl..........................................................................................................................58 authenticate_ip_ttl ....................................................................................................................58 . authenticate_ip_ttl_is_strict......................................................................................................58 Tags da seo para tunning do Squid .....................................................................................................58 wais_relay_host / wais_relay_port...........................................................................................58 . request_header_max_size.........................................................................................................58 request_body_max_size............................................................................................................59 reply_body_max_size...............................................................................................................59 refresh_pattern..........................................................................................................................59 reference_age............................................................................................................................59 quick_abort_min / quick_abort_max / quick_abort_pct...........................................................60 negative_ttl...............................................................................................................................60 . positive_dns_ttl.........................................................................................................................60 negative_dns_ttl........................................................................................................................60 range_offset_limit.....................................................................................................................60 Tags da seo Timeouts.........................................................................................................................61 connect_timeout........................................................................................................................61 peer_connect_timeout...............................................................................................................61 site select_timeout....................................................................................................................61 . read_timeout.............................................................................................................................61 request_timeout ........................................................................................................................61 . client_lifetime...........................................................................................................................61 half_closed_clients ....................................................................................................................62 pconn_timeout..........................................................................................................................62 ident_timeout............................................................................................................................62 shutdown_lifetime....................................................................................................................62 Tags da seo Access Control Lists.......................................................................................................62 acl..............................................................................................................................................62 http_access................................................................................................................................64 icp_access.................................................................................................................................65 miss_access...............................................................................................................................65 cache_peer_access....................................................................................................................65 ident_lookup_access.................................................................................................................65 Tags da seo auth_param.....................................................................................................................65 program.....................................................................................................................................65 children.....................................................................................................................................65 realm.........................................................................................................................................66 credentialsttl..............................................................................................................................66 Tags da seo parmetros administrativos .............................................................................................66 cache_mgr.................................................................................................................................66 cache_effective_user / cache_effective_group.........................................................................66 v

Configurando um Squid "Ninja"

Table of Contents
Examinando o Squid.conf visible_hostname......................................................................................................................66 hostname_aliases......................................................................................................................66 Tags da seo httpdaccelerator............................................................................................................67 httpd_accel_host.......................................................................................................................67 httpd_accel_port.......................................................................................................................67 . httpd_accel_with_proxy ............................................................................................................67 httpd_accel_uses_host_header..................................................................................................67 append_domain.........................................................................................................................68 tcp_recv_bufsize.......................................................................................................................68 err_html_text ............................................................................................................................68 . deny_info..................................................................................................................................68 memory_pools..........................................................................................................................69 memory_pools_limit.................................................................................................................69 forwarded_for...........................................................................................................................69 log_icp_queries.........................................................................................................................69 icp_hit_stale..............................................................................................................................69 minimum_direct_hops..............................................................................................................69 minimum_direct_rtt..................................................................................................................69 cachemgr_passwd.....................................................................................................................70 client_db ....................................................................................................................................70 netdb_low / netdb_high............................................................................................................70 netdb_ping_period....................................................................................................................71 query_icmp...............................................................................................................................71 test_reachability........................................................................................................................71 reload_into_ims........................................................................................................................71 always_direct............................................................................................................................71 never_direct..............................................................................................................................71 anonymize_headers ...................................................................................................................71 fake_user_agent........................................................................................................................72 icon_directory...........................................................................................................................72 error_directory..........................................................................................................................72 minimum_retry_timeout...........................................................................................................72 maximum_single_addr_tries .....................................................................................................73 snmp_port.................................................................................................................................73 snmp_access ..............................................................................................................................73 Tags da seo Miscellaneous.................................................................................................................73 Tags da seo delaypool........................................................................................................................73 delay_pools...............................................................................................................................73 delay_class................................................................................................................................73 delay_access ..............................................................................................................................74 delay_parameters......................................................................................................................74 incoming_icp_average / incoming_http_average / incoming_dns_average / min_icp_poll_cnt / min_dns_poll_cnt / min_http_poll_cnt....................................................74 . max_open_disk_fds..................................................................................................................74 offline_mode.............................................................................................................................75 uri_whitespace..........................................................................................................................75 broken_posts.............................................................................................................................75 vi

Configurando um Squid "Ninja"

Table of Contents
Examinando o Squid.conf nonhierarchical_direct..............................................................................................................75 prefer_direct..............................................................................................................................75 strip_query_terms.....................................................................................................................76 coredump_dir............................................................................................................................76 redirector_bypass......................................................................................................................76 ignore_unknown_nameservers.................................................................................................76 digest_generation......................................................................................................................76 digest_bits_per_entry................................................................................................................76 digest_rebuild_period...............................................................................................................77 digest_rewrite_period...............................................................................................................77 digest_swapout_chunk_size ......................................................................................................77 digesvt_rebuild_chunk_percentage..........................................................................................77 chroot........................................................................................................................................77 client_persistent_connections / server_persistent_connections................................................77 pipeline_prefetch......................................................................................................................77 extension_methods ....................................................................................................................78 high_response_time_warning...................................................................................................78 high_page_fault_warning.........................................................................................................78 high_memory_warning.............................................................................................................78 store_dir_select_algorithm ........................................................................................................78 ie_refresh..................................................................................................................................78 Outras referncias e leituras complementares...............................................................................................79

vii

Configurando um Squid "Ninja"

Configurando um Squid "Ninja"

Introduo
A World Wide Web (WWW) , sem a menor dvida, a forma mais conhecida da internet. Tanto isso verdade, que os leigos tem uma certa dificuldade em entender que a internet no se resume ao www. Sua popularidade e crescimento so explicados pela grande variedade de assuntos encontrados nela, pela facilidade de busca, simples entendimento, baixo custo e, via de regra, privacidade. Em decorrncia dessa grande procura alguns efeitos colaterais ocorrem. No incomum ouvir as pessoas dizerem que "a internet est lenta", ou os administradores de rede observarem seus backbones atingirem seus limites em horrios de pico. Do lado dos servidores e ISPs (Internet Service Providers) tambm existe um lado que poucas pessoas pensam. Somente quem j passou pelo "Efeito Slashdot1" sabe do que estou falando. Em um momento de sobrecarga dos servidores, como ocorreu na ltima copa do mundo ou no tenebroso 11 de setembro, um sistema de caches bem planejado e distribudo seria muito bem visto pelos grandes portais. A utilizao de sistemas de cache, como o Squid, tm se mostrado excelentes para aliviar esses sintomas, reduzindo o trfego na rede e, conseqentemente, a latncia da mesma. Toda a idia por trs de um sistema de caching criar um grande banco de dados onde os sites mais populares ou acessados recentemente so armazenados para futuras consultas. Isso significa que se 10 usurios da sua rede tentarem acessar um mesmo site ao mesmo tempo, somente uma das conexes realmente ir ser feita a esse site. Todas as outras 9 vo se aproveitar do primeiro acesso e utilizar a pgina j em memria. Isso um enorme ganho de desempenho para seu backbone local, para o backbone do ISP onde o site est armazenado e para o servidor que hospeda o mesmo. Alm disso, sua banda fica livre para que sites menos acessados, ou que no estejam no cache sejam baixados com maior velocidade. Com um sistema de caching bem planejado e mantido, todos tem a ganhar.

Sobre o autor
Eri Ramos Bastos trabalha com Linux desde 1998, passando por diversas distribuies e fases diferentes do pinguim. Atualmente trabalha como consultor em solues Linux / Unix e est disponvel para ajudar a sua empresa a implantar Linux em todos os setores. Consultoria

Sobre esse documento


Esse documento GPL, tendo sido baseado em diversas documentaes disponveis na web. Todas as marcas citadas aqui pertencem aos seus respectivos donos. A Pgina oficial desse documento http://www.linuxman.pro.br/squid/ . Tambm est disponvel em verso PDF. Esse documento foi totalmente escrito em texto puro, utilizando VIM como Editor e posteriormente convertido em HTML por txt2tags e em PDF por htmldoc.

Changelog
11/11/2003 Adicionada seo changelog Introduo 2

Configurando um Squid "Ninja" Adicionada seo ToDo Modificacoes no Layout da pagina para tornar mais legvel Corrigidos erros de formatao, adaptando melhor o documento ao txt2tags Criada verso PDF desse documento PDF 13/11/2003 Acrescentado comando para entrar em modo Debug na seo utilidades pblicas Incluso de cdigos de erro e sada do Squid na seo utilidades pblicas Mais ajustes estticos 05/02/2004 Sintaxe mais limpa do grep para limpar o squid.conf 23/03/2004 Acrescentada dica sobre rotate dos relatrios do Sarg 18/06/2004 Impedindo ou Limitando o tamanho de uploads Atualizao da URL do Sarg

ToDo
Adaptar "Examinando o Squid.conf" para novos padres txt2tags Corrigir problemas Adicionar autenticao com proxy transparente

O que esperar de um proxy/cache?


Podemos sumarizar os benefcios esperados em: Velocidade de acesso A melhor forma de verificar se o seu cache est sendo eficiente pela velocidade. Um sistema de cache que no agrega velocidade no est cumprindo o seu papel. Disponibilidade De nada adianta um sistema veloz disponvel apenas 2 horas por dia, ou mesmo que precise de um reboot a cada 2 semanas. Se o seu sistema de caching ou seu sistema operacional no tem uma alta disponibilidade, esse howto chegou em boa hora. Em casos de grandes instalaes, ainda preciso ir mais a fundo, buscando a altssima disponibilidade. Redundncia de servidores, backup, eliminao de ponto nico de falha e disaster recover so uma exigncia. Transparncia ou Ostensividade

ToDo

Configurando um Squid "Ninja" So conceitos especficos e que se adaptam a cada caso. Grandes instalaes, ISPs e empresas no preocupadas com que seus usurios vem ou fazem na internet devem preferir a transparncia, onde o usurio desconhece ou no se sente afetado (exceto pelo ganho de velocidade) pela presena de um cache. Por outro lado, empresas com uma poltica de segurana mais rgida, rgos com informaes crticas, ou mesmo pais querendo controlar o acesso de seus filhos a alguns sites, vo preferir a ostensividade. Capacidade de trabalhar com redes heterogneas. Alguns sistemas de proxy/cache funcionam baseados com sistemas de autenticao especiais, feitos para rodar somente em uma plataforma, fazem integrao com o servio de diretrios daquele ou desse sistema ou exigem que o usurio esteja rodando a verso XYZ do fabricante ABC e deixam todos os outros a ver navios. Em uma instalao sria, preciso que usurios de todas as plataformas que saibam como trabalhar com HTTP sejam bem atendidos. Isso especialmente verdade quando no sabemos que tipo de plataforma ir utilizar nossa instalao. Simplicidade Deixando um pouco de lado o usurio e focando no administrador, preciso ter conscincia de que um sistema bom um sistema fcil de administrar. O mais rpido, mais disponvel e mais abrangente sistema de caching totalmente intil se somente uma pessoa no mundo souber lidar com ele.

E o Squid? Satisfaz todos esses pontos?


Em uma resposta rpida: Sim. Veremos mais abaixo que todos os requisitos listados so atendidos com primazia pelo Squid.

O que o Squid?
Squid um proxycache de alta performance para clientes web, suportando protocolos FTP, gopher e HTTP. O Squid mantm meta dados e especialmente objetos armazenados na RAM, cacheia buscas de DNS e implementa cache negativo de requests falhos. Ele suporta SSL, listas de acesso complexas e logging completo. Por utilizar o Internet Cache Protocol, o Squid pode ser configurado para trabalhar de forma hierrquica ou mista para melhor aproveitamento da banda. Podemos dizer que o Squid consiste em um programa principal squid , um sistema de busca e resoluo de nomes dnsserver e alguns programas adicionais para reescrever requests, fazer autenticao e gerenciar ferramentas de clientes. Podemos executar o Squid nas principais plataformas do mercado, como Linux, Unixes e Windows.

E o Squid? Satisfaz todos esses pontos?

Configurando um Squid "Ninja"

Porque utilizar um Proxy/Cache?


Podemos dizer que existem dois grandes motivos pelo qual se deve utilizar um PROXY/CACHE:

Controle de acesso
Com a internet cada vez mais acessvel a pequenas e mdias empresas, um nmero imenso de pessoas est se interligando a internet. Alm de todos os benefcios trazidos por ela, como informao em tempo real, comunicao mundial a baixo custo, contato com possveis clientes e fornecedores por todo o mundo, a mesma trouxe alguns problemas. As pessoas tendem a passar cada vez mais tempo navegando por sites no relativos ao seu trabalho primrio, acessam sites que no condizem com a poltica da empresa, utilizam a banda de internet destinada a servios como WEB ou VPN e podem, em muitos casos, acabar infectando toda a rede da empresa com vrus e worms que so adquiridos em sites imprprios. Isso sem contar na ameaa sempre presente de propagao de downloads de softwares piratas e msicas, fatores que podem complicar a vida de uma empresa durante fiscalizaes. De acordo com a Rede Nacional de Ensino e Pesquisa (RNP) , 65% da largura de banda das empresas utilizada em navegao WEB. E esse nmero tende a crescer.

Performance
Como dissemos anteriormente, a internet est mais acessvel para todos, fator causado pela ampla utilizao das conexes de banda larga, como xDSL, Cable Modem, ISDN, etc. Essas tecnologias so excelentes para pequenas e mdias empresas, mas devido a suas caractersticas de velocidades diferentes de upstream e downstream (xDSL), compartilhamento de banda total (Cable Modem) ou baixo desempenho (ISDN), alm da notvel falta de qualidade das operadoras, tornamse quase inteis para grandes empresas e provedores de internet (ISPs). Essas empresas so ento levadas a utilizar sistemas de maior qualidade, como links por fibra tica, satlites e rdio. Mas como se pode esperar, qualidade tem preo, e, nesse caso, bem salgado. Visando aproveitar ao mximo essa banda de qualidade, a utilizao de PROXY/CACHE tornase quase que obrigatria. Ainda de acordo com a Rede Nacional de Ensino e Pesquisa (RNP) 2, a utilizao de PROXY/CACHE pode gerar uma economia entre trinta e cinqenta por cento nos horrios de pico. Isso significa que para um link de 2 Mbps que est operando a plena carga e considerando uma reduo de 30 %, o mesmo produziria um ganho na banda agregada de aproximadamente 600 Kbps. Ou seja, a simples implementao de um PROXY/CACHE bem ajustado gera uma economia da ordem de milhares de Reais por ms para a empresa.

Porque utilizar um Proxy/Cache?

Configurando um Squid "Ninja"

Conexes so feitas no Proxy, evitando sada internet

Porque utilizar o SQUID?


O Squid est continuamente melhorando sua performance, alm de adicionar novas features e ter uma excelente estabilidade em condies extremas. Sua compatibilidade com vrias plataformas e a imensa gama de software para analisar logs, gerar relatrios, melhorar o desempenho e adicionar segurana providos pela comunidade open source, combinados com ferramentas de administrao simplificada e baseadas em web agregam grande valor ao produto. Podemos ainda citar a capacidade de clustering, transparent proxy, cache de FTP e, claro, seu baixo custo. Para os mais corajosos, ou para os melhores programadores, no podemos deixar de dizer que o sistema totalmente aberto, possibilitando a sua otimizao no nvel de cdigo, alm da otimizao via configurao.

Protocolos utilizados Rede e Aplicao.


O Squid busca por comunicao TCP (Transmission Control Protocol) e ICP (Internet Cache Protocol) em portas especficas. O TCP usado para comunicao entre webservers e clientes, e o ICP para conversa entre servidores de cache. Para cada servidor (ou cliente), a configurao do Squid precisa fornecer uma nica porta sobre a qual o Squid ir enviar as requisies (TCP ou ICP) e ouvir as respostas. Como j dissemos anteriormente, o Squid trabalha apenas com FTP, gopher e http. Existe uma confuso muito comum entre pessoas que esto comeando a trabalhar com o Squid em achar que podero, atravs do Squid, configurar acesso a emails, ICQ, IRC, etc. Isso totalmente equivocado, visto que no s funo do firewall trabalhar com o NAT (Network Address Translation), como tambm no faz sentido criar caches de Porque utilizar o SQUID? 6

Configurando um Squid "Ninja" emails pessoais, mensagens do ICQ, etc. Para configurar seu firewall apropriadamente para NAT, verifique a documentao de seu sistema operacional ou firewall.

Requisitos
A maior parte das configuraes depende apenas do Squid. O proxy transparente tambm depende do sistema operacional e do firewall A instalao padro do squid, disponvel na maior parte das distribuies, no consegue lidar com o controle de banda, sendo necessrio recompilar o Squid.

Referncias
Rede Nacional de Pesquisa (1) http://www.rnp.br/newsgen/0103/wccp.shtml Rede Nacional de Pesquisa (2) http://www.rnp.br/arquivos/docgeral.html Duane Wessels Home Page http://www.lifegonehazy.com/indextwo.html Firewall Linuxman (IPTABLES) http://www.linuxman.pro.br/cgibin/firewall/ Survey of Web Caching Schemes for the Internet http://www.acm.org/sigcomm/ccr/archive/1999/oct99/Jia_Wang2.pdf

Requisitos

Instalando o Squid
O Squid pode ser instalado em uma imensa variedades de sistemas operacionais. Praticamente todos os Unixes com um bom compilador C/C++ pode gerar binrios do Squid. Sua popularidade, no entanto, nos poupa esse passo em muitas plataformas. Segue abaixo a forma de instalao nas mais populares plataformas do mercado.

Instalando via binrio ou com facilidades do sistema


Se voc no precisa de nenhuma feature muito sofisticada no seu squid (90% dos casos no precisa), no h porque instalar via cdigofonte baixado do site do squid. Vamos direto ao assunto:

Instalando em um sistema baseado em Red Hat Linux


Alm de estar disponvel nos CDs da distribuio, ainda possvel baixar as mais novas verses j empacotadas no sistema RPM (Red Hat Package Manager). Para isso acesse o link http://www.rpmfind.net/linux/rpm2html/search.php?query=squid.ch= E depois:
# rpm ivh squid.x.y.z.rpm

Instalando em um sistema baseado em Debian


O Debian sempre prezou pela facilidade de instalao a atualizao de pacotes, com seu sistema apt, que facilita muito a vida dos administradores. Para instalar o squid basta executar o comando:
# aptget install squid

Instalando em um FreeBSD
Se voc instalou o diretrio de ports no FreeBSD, a instalao ser simples, bastando utilizar os comandos abaixo:
# cd /usr/ports/www/squid25/ # make # make all install

Ou por meio de um pacote prcompilado:


# # # # mount /cdrom #CD de instalao do FreeBSD mkdir /usr/ports/distfiles cp /cdrom/packages/All/squidx.y.z.tgz /usr/ports/distfiles/ # onde pkg_add v /usr/ports/distfiles/squidx.y.z.tgz

x.y.z a verso.

Instalando o Squid

Configurando um Squid "Ninja"

Instalando em um OpenBSD
Baixe o squid j compilado em http://www.openbsd.org/3.2_packages/i386/squid2.5.PRE13.tgzlong.html E depois:
# pkg_add squid.x.y.z.tgz

Instalando em um Windows 2000


Baixe o arquivo setup.exe do site do Cygwin (http://www.cygwin.com/setup.exe) e selecione o pacote do squid durante a instalao. Proceda como faria qualquer instalao em plataforma Microsoft.

Baixando o cdigofonte
Caso queira o controle de banda, tpico avanado abordado aqui, instale o squid pelo fonte, de acordo com as instrues. Na data de criao desse documento, a verso mais recente (estvel) do squid era a 2.5STABLE1. Verifique a verso mais recente em http://www.squidcache.org/Versions/v2/.
# # # # # # groupadd squid useradd g squid s /dev/null squid >/dev/null 2>&1 wget http://www.squidcache.org/Versions/v2/2.5/squid2.5.STABLE1src.tar.gz tar zxvf squid2.5.STABLE1src.tar.gz cd squid2.5.STABLE1 ./configure enabledelaypools enablecachedigests\ enablepoll disableidentlookups enabletruncate \ enableremovalpolicies enablearpacl # make all # make install # cd auth_modules/NCSA # make # make install

Limpando o squid.conf
O arquivo de configurao do squid o squid.conf, normalmente ele se encontra em /etc/squid.conf ou em /usr/local/squid/etc/squid.conf. Caso no encontre o seu em nenhum desses lugares, procureo com:
# locate squid.conf ou # find squid.conf

Pode parecer ftil, mas uma limpeza inicial no arquivo squid.conf pode ser bem til. O arquivo de configurao original tem, em mdia, 2000 linhas.
# cp squid.conf squid.conf.original # egrep v "^#|^$" squid.conf.original > squid.conf

Instalando em um OpenBSD

Configurando um Squid "Ninja"

Configuraes bsicas ACLs


Como comentado mais tarde, toda a estrutura do Squid baseada em listas de acessos. Vamos entrar em detalhes mais para frente. Por hora vamos criar uma lista de acesso bsica para nossos usurios. Vamos supor que nossa rede interna seja 192.168.5.0/24. Crie a seguinte linha no squid.conf, na seo de ACLs (TAG: acl):
acl rede_interna src 192.168.5.0/24

E a seguinte linha na seo de acesso (TAG: http_access)


http_access allow rede_interna

Referncias
http://www.squidcache.org/Doc/ http://www.serassio.it/SquidNT.htm

Configuraes bsicas ACLs

10

Transparent Proxy
Esse recurso muito til para evitar que seus usurios "burlem" o proxy removendo as configuraes do browser. Eles sero obrigados a passar pelo proxy, mesmo que as mquinas no estejam configuradas para tal. Extremamente recomendado, principalmente em casos de bloqueio de sites ou limitao de banda. Experincias pessoais comprovam que usurios com um pouco mais de conhecimentos iro remover a configurao de proxy assim que o administrador sair da sala, seja por ignorncia das funcionalidades, seja por medo de ser auditado ou simplesmente por m conduta. Para ser possvel o uso de proxy transparente com o Squid, o firewall deve ser configurado adequadamente. Se o seu firewall no est listado abaixo, procure na documentao do mesmo qual a sintaxe equivalente. Algumas pessoas desejam trabalhar ao mesmo tempo com autenticao e proxy transparente. Isso possvel de ser feito com uma interao entre o firewall e um cgi, ou algo do gnero. Apesar de no ser do escopo do howto abranger regras de firewall especficas e programao, uma boa olhada no google e um pouco de pesquisa deve resolver o problema.

Como funciona o proxy transparente

Configurando o Squid
Vamos inserir as seguintes linhas:
httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on

Transparent Proxy

11

Configurando um Squid "Ninja"

Configurando o iptables
Provavelmente voc j tenha seu script de inicializao do firewall, sendo assim a nica coisa necessria inserir essa linha nele:
# iptables t nat A PREROUTING i eth0 p tcp dport 80 j REDIRECT toport 3128

Configurando o PF (OpenBSD)
Adicione a seguinte linha ao seu /etc/nat.conf (levando em considerao que sua interface interna seja fxp1)
rdr on fxp1 from any to any port 80 > 127.0.0.1 port 3128

Configurando o IPFilter (FreeBSD)


Adicione as seguintes linhas ao seu /etc/rc.conf
ipfilter_enable="YES" ipnat_enable="YES" ipmon_enable="YES" ipfs_enable="YES"

Adicione as seguintes linhas ao seu /etc/ipnat.rules (levando em considerao que o rl0 sua interface interna)
rdr rl0 0/0 port 80 > 127.0.0.1 port 3128 tcp

Referncias
http://ldp.conectiva.com.br/HOWTO/mini/TransparentProxy.html

Configurando o iptables

12

Bloqueando Sites indesejados


A partir de agora vamos comear a trabalhar com ACLs (Access Control Lists). O conceito de ACL muito til, por nos permitir trabalhar com nveis de acesso baseados em diversas informaes. No incomum que em uma instalao de Squid, a diretoria possa acessar qualquer site, a gerncia no possa acessar determinados sites e os "pees" tenham acesso apenas ao site da empresa e de parceiros. Graas ao uso de ACLs e um pouco de imaginao e suor, podemos fazer todas essas restries. Todas as configuraes de usurios, grupos, horrios e SITES so configuradas em ACLs, Vamos comear criando 2 ACLs que iro fazer o bloqueio dos sites indesejados. A ordem em que as ACLs aparecem muito importante, por isso a ACL que bloqueia os sites deve ser a primeira a aparecer. Procure no seu squid.conf onde comeam a ser descritas as ACLs. Geralmente a primeira ACL a aparecer :
acl all src 0.0.0.0/0.0.0.0

Criando os arquivos necessrios


Vamos fazer o seguinte:
# mkdir /etc/squid/bloqueados

ou
# mkdir /usr/local/squid/etc/bloqueados # touch /etc/squid/bloqueados/block.txt

ou
# touch /usr/local/squid/etc/bloqueados/block.txt # touch /etc/squid/bloqueados/unblock.txt

ou
# touch /usr/local/squid/etc/bloqueados/unblock.txt

O arquivo block.txt ir conter todos os sites e palavras que voc deseja bloquear e o unblock.txt todas as excees. "Como assim?", voc pergunta. Vamos supor que voc tenha bloqueado a palavra sexo. Ento voc no poder entrar em www.sexo.com.br, mas tambm no poder entrar em www.sexoesaude.com.br. Ora, mas esse segundo site inofensivo, portanto no deveria ser bloqueado. Basta coloclo no unblock.txt.

Editando o squid.conf
Vamos ao squid.conf Insira as linhas abaixo logo antes de acl all src 0.0.0.0/0.0.0.0: Bloqueando Sites indesejados 13

Configurando um Squid "Ninja"


acl blockedsites url_regex i "/etc/squid/bloqueados/block.txt" acl unblockedsites url_regex i "/etc/squid/bloqueados/unblock.txt"

ou
acl blockedsites url_regex i "/usr/local/squid/etc/bloqueados/block.txt" acl unblockedsites url_regex i "/usr/local/squid/etc/bloqueados/unblock.txt"

Agora procure no seu squid.conf a linha http_access deny all e coloque antes dela:
http_access deny blockedsites !unblockedsites

DICA: O "!" Significa sempre negao de alguma coisa.

Referncias
http://members.lycos.co.uk/njadmin/ http://web.onda.com.br/orso/

Referncias

14

Bloqueio de Banners
Banner uma coisa chata! Que me perdoem os anunciantes, mas eu no suporto banner nem popup. Mas o pior de tudo que elas consomem banda e quase nunca ajudam o Squid, pois esto em constante mudana, impedindo o caching. Com a soluo mostrada aqui, todos os banners sero substitudos por uma imagem prdefinida, podendo inclusive ser personalizada. Muito legal em empresas ou provedores de acesso em conjunto com o proxy transparente.

Baixando e instalando o Banner Filter


Baixe o Banner Filter do seu site oficial (http://phroggy.com/files/unix/bannerfilter1.21.tar.gz).
# tar zxvf bannerfilter1.21.tar.gz # cd bannerfilter1.21

Mova o contedo do diretrio www para algum lugar acessvel em seu web server. Esses arquivos PRECISAM estar acessveis ao squid via HTTP. importante ressaltar que o sistema perde o sentido se o servidor http no for a mesma mquina que o Squid est. Mova todo o resto para /etc/squid/bannerfilter ou /usr/local/squid/etc/bannerfilter Edite o redirector.pl. Se voc no tem o perl no local padro (/usr/bin/perl), mude a primeira linha (ou crie um symlink). Mova o bannerfilter.conf para o /etc Mude as variveis $DATA e $WWW como indicado nos comentrios. Opcionalmente, mude tambm $LOG e $BANNERGIF como indicado. Teste o redirector.pl digitando alguma coisa e veja se recebe essa coisa de volta.. Pressione CrtlC para parar. No pule esse passo, pois nele voc poder descobrir erros. Rode o script update.sh para atualizar as listas de banners. interessante fazer isso constantemente.

Editando o squid.conf
Procure pela seo que fala sobre redirect (TAG: redirect_program) e insira a linha:
redirect_program /etc/squid/bannerfilter/redirector.pl

ou
redirect_program /usr/local/etc/bannerfilter/redirector.pl

DICA: possvel tambm editar as imagens, de forma a tornalas personalizadas para sua empresa.

Bloqueio de Banners

15

Configurando um Squid "Ninja"

Os banners iro aparecer dessa forma aps tudo instalado

Referncias
http://phroggy.com/bannerfilter/

Referncias

16

Protegendo usurios com antivrus


Essa soluo deve ser usada apenas em pequenas instalaes, como um adicional de segurana. Se a sua rede local tem antivrus nas estaes e no servidor de domnio, arquivos, etc, eu no recomendo essa feature. Alm de exigir muito da mquina, ainda no est totalmente estvel. A soluo proposta aqui utilizar o Viralator.

Prrequisitos
Ser necessrio que o Squid redirecione determinados downloads e URLs para o Viralator, de forma que precisamos do Squirm Instalado na mquina. Baixeo em http://squirm.foote.com.au/squirm1.0betaB.tar.gz
# # # # # # # tar zxvf squirm1.0betaB.tar.gz cd squirm1.0betaB cd regex ./configure make clean make cp p regex.o regex.h

Anote o resultado desse comando:


# id `grep cache_effective_user /etc/squid.conf |cut d " " f3` # cd ..

Edite o arquivo Makefile e substitua as aparies adequadas de "root" pelo usurio e grupo anotados acima.
# make # make install

Alm do Squirm, necessrio que o Apache e o apachesuexec estejam instalados. Procure uma documentao sobre o Apache para maiores detalhes. E, como no poderia deixar de ser, um antivrus fazse necessrio. Atualmente o Viralator tem suporte : AntiVir AVP RAV Inoculate Sophos Sweep McAfee Trend

Protegendo usurios com antivrus

17

Configurando um Squid "Ninja"

Viralator
Aps ter o squirm instalado, adicione as seguintes linhas no seu arquivo squirm.paterns:
abortregexi (^http://[192.168.0.1].*) abortregexi (^http://[cache1.empresa.com.br].*) regexi (^.*\.zip$) http://[192.168.0.1]/cgibin/viralator.cgi?url=|\1 regexi (^.*\.doc$) http://[192.168.0.1]/cgibin/viralator.cgi?url=|\1 regexi (^.*\.exe$) http://[192.168.0.1]/cgibin/viralator.cgi?url=|\1

Onde: 192.168.0.1 o IP do seu proxy e cache1.empresa.com.br o FQDN2 do mesmo. Repita a linha que faz referncia a extenso para todos os tipos de arquivos que quiser escanear por vrus. Edite agora o arquivo squid.conf adicionando um redirecionamento:
redirect_program /usr/squid/bin/squirm redirect_children 10

Crie um usurio e grupo para uso do suexec e adicioneos ao seu arquivo de configurao do apache (normalmente httpd.conf)
< VirtualHost 192.168.0.1> ServerAdmin webmaster@empresa.com.br DocumentRoot /var/www/ ServerName cache1.empresa.com.br ErrorLog logs/error_log TransferLog logs/access_log ScriptAlias /cgibin/ /usr/local/viralator/cgibin/ User viralator Group viralator </VirtualHost>

Onde: /usr/local/viralator/cgibin/ deve ser o seu diretrio de cgis e viralator o nome do usurio e grupo que voc criou. Crie um diretrio chamado downloads acessvel ao apache Algo como /var/www/downloads no Debian mude suas permisses para 755. Baixe o Viralator em http://viralator.loddington.com/downloads/viralator09pre2.zip e execute os comandos:
# # # # unzip viralator09pre2.zip cp viralator09pre2.cgi /usr/local/viralator/cgibin/viralator.cgi chown viralator.viralator R /usr/local/viralator/cgibin/ chmod 755 /usr/local/viralator/cgibin/viralator.cgi

Edite o arquivo /usr/local/viralator/cgibin/viralator.cgi e verifique se todos os caminhos de programas esto corretos.

Referncias
http://viralator.loddington.com/

Viralator

18

Configurando um Squid "Ninja" http://squirm.foote.com.au/

Viralator

19

Autenticando usurios
um recurso bem interessante para controle pessoal de usurios. Isso permite que voc crie ACLs individuais e gere LOGs de qualidade bem superior. Existem diversos mtodos de autenticao, sendo interessante averiguar exatamente o que voc ir precisar. Na maioria dos casos, o ncsa_auth resolve o problema.

ncsa_auth
O ncsa_auth a alternativa mais simples. Ele est disponvel junto com o squid e pode ser implementado rapidamente. a soluo ideal para pequenas e mdia instalaes e redes com arquitetura de grupo de trabalho.

Editando o squid.conf
Procure pela seo que fala sobre autenticao (TAG: authenticate_program) e insira as linhas:
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/ auth_param basic children 5 auth_param basic realm Digite seu Login

Criando um arquivo de senhas


O arquivo /etc/squid/passwd no existe por padro. Para crialo vamos fazer:
# touch /etc/squid/passwd

Adicionando usurios Para adicionar novos usurios basta fazer:


# htpasswd /etc/squid/passwd USUARIO

e confirmar a senha duas vezes. Nota: Dependendo da sua distribuio, o ncsa_auth pode estar em vrios lugares, como /usr/bin, /usr/sbin e assim por diante! Verifique onde est a sua e coloque as linhas acima de acordo! Quanto ao authenticate_children 5, o suficiente se sua rede no muito grande. Mude o valor de acordo com suas necessidades. Agora vamos editar novamente a ACL de nossa rede interna (aquela da seo 2.3)
acl rede_interna src 192.168.5.0/24 acl rede_interna proxy_auth REQUIRED

Autenticando usurios

20

Configurando um Squid "Ninja"

smb_auth
O smb_auth uma tima opo para quem tem uma rede um pouco maior ou trabalha com ambientes Windows Client/Server. Devido a sua integrao com o PDC, facilita muito a vida do administrador. Nota: necessrio que o samba esteja instalado na mquina do Squid para utilizar essa opo. Ele no precisa estar configurado ou ativado.

Instalando o smb_auth
Baixe o smb_auth em http://www.hacom.nl/~richard/software/smb_auth0.05.tar.gz
# tar zxvf smb_auth0.05.tar.gz # cd smb_auth0.05

Edite o arquivo Makefile e tenha certeza de que os parmetros SAMBAPREFIX e INSTALLBIN esto corretos.
# make # make install

Configurando o PDC
Para controlar o acesso por usurios e grupos, o smb_auth l o arquivo \netlogon\proxyauth em um dos controladores de domnio previamente informado. Se a leitura desse arquivo retorna um "allow", ento o acesso liberado. Caso contrrio, negado. Crie um arquivo chamado proxyauth no compartilhamento NETLOGON de seu PDC (d preferncia ao primrio). Esse arquivo deve conter unicamente a palavra "allow" (sem as aspas) e d permisso de leitura para os grupos e usurios que deseja permitir acesso.

Configurando squid.conf
Adicione as seguintes linhas:
auth_param basic program /usr/local/bin/smb_auth W DOMINIO U 192.168.5.24 auth_param basic children 5 auth_param basic realm Digite seu Login

Onde: DOMINIO o domnio do PDC e 192.168.5.24 o IP do mesmo.

Referncias
http://squid.visolve.com/squid24s1/externals.htm#authenticate_program http://web.onda.com.br/orso/ncsaplus.html http://www.hacom.nl/%7Erichard/software/smb_auth.html http://www.linux.trix.net/dicas_squid_nt.htm smb_auth 21

Controle de Banda
Esse um feature muito til para quem tem uma banda estreita, ou simplesmente tem prioridades para sua banda. O recurso do squid que usamos aqui chamado de delay pools. necessrio que o squid tenha sido compilado com essa opo ativa, conforme instrues da seo 2.

Editando o squid.conf
Vamos adicionar algumas linhas. A primeira vai evitar que haja restrio de banda internamente, por isso no deixe de colocla.

acl controle1 url_regex i 192.168.5 acl controle2 url_regex i ftp .exe .mp3 .tar.gz .gz .zip .rar .avi .mpeg .mpg .qt .ram .rm .is delay_pools 2 delay_class 1 2 delay_parameters 1 1/1 1/1 delay_access 1 allow controle1 delay_class 2 2 delay_access 2 allow rede_interna delay_access 2 allow controle2

Referncias
http://www.tldp.org/HOWTO/BandwidthLimitingHOWTO/index.html http://www.linuxit.com.br/modules.php?name=Sectionsrtid=232

Controle de Banda

22

Brincando com ACLs


Vamos tentar agora explorar mais a fundo as possibilidades que as ACLs nos fornecem. bom lembrar que vrias ACLs podem ser combinadas, sendo isso um grande gerador de problemas. Faa suas regras com muita ateno.

Utilizando IPs e redes


Isso o arrozcomfeijo das ACLs. Limitar por IP e/ou rede. Vamos por exemplos para simplificar:
acl acl acl acl ip_do_diretor src 192.168.5.5 ips_da_diretoria src 192.168.5.5 192.168.5.6 192.168.5.7 168.5.8 rede_do_rh src 192.168.6.0/24 rede_do_cpd src 192.168.7.0/255.255.255.0

Usando ACLs externas


O recurso de ACL externa muito til para um tratamento melhorado de algum recurso que no compreendido por ACLs normais. Uma ACL externa pode ser escrita em qualquer linguagem. Ela deve sempre retornar OK para o stdout caso a condio seja satisfeita, ou ERR tambm para o stdout caso ela no seja satisfeita. Vou mostrar aqui um exemplo onde a diretoria deve acessar qualquer coisa, mas os usuarios normais sao submetidos a certas restries. Levo em considerao que o usurio j est autenticado.
external_acl_type checa_diretoria %LOGIN /etc/squid/modulos/diretoria.sh acl diretoria external checa_diretoria

Arquivo /etc/squid/modulos/diretoria.sh (deve ser executvel)


#!/bin/bash while read linha do if [ `grep i $linha /etc/squid/users/diretoria` ] then echo OK else echo ERR fi done

Esse script verifica se o usurio autenticado pertence diretoria. Para que um usurio seja reconhecido como diretoria, seu username deve estar dentro do arquivo /etc/squid/users/diretoria .

Trabalhando com domnios


Esse tipo de ACL tem que ser utilizada com cuidado. Tentar bloquear o acesso a chat em portais com essa opo tambm pode acarretar em acesso negado a sites de notcias ou de interesse geral. Todos os subdomnios e hosts abaixo do domnio principal so afetados pela ACL.

Brincando com ACLs

23

Configurando um Squid "Ninja"


acl GEOCITIES dstdomain geocities.com

Restringindo por horrio


acl expediente time MTWHF 9:0018:00 acl final_de_semana time SA 8:0013:00

Onde: Sigla S M T W H F A Dia Domingo segundafeira terafeira quartafeira quintafeira sextafeira sbado

Expresso regular na URL


Aqui podemos fazer milhares de coisas, desde que conheamos muito bem expresses regulares. Para saber mais sobre elas, procure o livro "Expresses Regulares Guia de Consulta Rpida" ou pesquise na internet.
acl jogos url_regex jogos

MAC Address
Para utilizar essa opo, o Squid deve ser compilado com os parmetros "enablearpacl", como feito em nossa instalao via source.
acl administrador arp XX:XX:XX:XX:XX:XX

Onde: XX:XX:XX:XX:XX:XX o MAC Address da placa de rede do administrador.

Limitando o nmero de conexes por usurio


Se quiser limitar o nmero de sesses que cada usurio abre de uma nica vez, podemos utilizar o recursos de mximo de conexes.
acl CONEXOES maxconn 10 http_access deny CONEXOES rede_interna

Restringindo por horrio

24

Configurando um Squid "Ninja"

Impedindo ou Limitando o tamanho de uploads


Diversas empresas tem a necessidade de impedir que seus usurios dem upload de arquivos para webmails, discos virtuais ou algum outro tipo de repositrio na internet. O grande problema que o mtodo utilizado para fazer estes uploads o POST, tambm utilizado para preenchimento de formulrios, pesquisas, logins e senhas, etc. Isso impede o bloqueio total do mtodo. Como fazer ento? A opo mais lgica seria limitar o tamanho de um POST para um nmero suficientemente grande para permitir seu funcionamento normal e suficientemente pequeno para impedir o upload de arquivos. Para isso usamos a tag request_body_max_size, abordada um pouco mais abaixo. No entanto essa tag tem uma falha, por no ser compatvel com ACLs, ela limitar todos os usurios no que for determinado, situao normalmente incmoda. Segue um script que encontrei na internet (referncia abaixo), que nos permite criar ACLs baseadas nesse parmetro. Vamos chamlo de /etc/squid/modulos/size.sh
#!/bin/sh while read line; do set $line length="$1" limit="$2" if [ "$length" le "$2" ]; then echo OK else echo ERR fi done

Depois basta criar uma ACL assim:


external_acl_type request_body %{ContentLength} /etc/squid/modulos/size.sh acl request_max_10KB request_body 10240

Com isso limitamos o tamanho do upload para 10KB, o que deve ser suficiente para preenchimento de um formulrio, mas pouco para um upload.

Referncias
http://squid.visolve.com/squid24s1/access_controls.htm http://www.secforum.com.br/article.php?sid=1259 http://www.mailarchive.com/squidusers@squidcache.org/msg16568.html

Impedindo ou Limitando o tamanho de uploads

25

Criando um arquivo de configurao automtica


Para facilitar a vida dos usurios (e do administrator), podemos criar um arquivo de configurao automtica que ser colocado nos browsers dos clientes. Dessa forma todos tero seu proxy reconfigurado dinamicamente em caso de mudanas, sem a necessidade de interveno em cada mquina. Esse arquivo deve ser acessvel via web e, via de regra, chamase proxy.pac . Vamo supor que seu proxy esteja rodando no servidor 192.168.5.1 na porta 3128 e voc no deseje que ele seja utilizado nas pginas do seu domnio (empresa.com.br):
function FindProxyForURL(url, host) { if (isPlainHostName(host) || dnsDomainIs(host, ".empresa.com.br")) return "DIRECT"; else return "PROXY 192.168.5.1:3128; DIRECT"; }

Referncias
http://wp.netscape.com/eng/mozilla/2.0/relnotes/demo/proxylive.html

Criando um arquivo de configurao automtica

26

Gerando relatrios
Muitas empresas e instituies exigem dos administradores relatrios do uso da internet. Isso pode ser facilmente conseguido com algumas ferramentas.

SARG
Desenvolvido pelo brasileiro Pedro Orso, ele transforma o log do squid em um relatrio html legvel e completo.

Instalao
# # # # # # wget http://web.onda.com.br/orso/sarg1.4.tar.gz tar zxvf sarg1.4.tar.gz cd sarg1.4/ ./configure make make install

Configurao
Por padro o sarg instalado em /usr/local/sarg. Nesse diretrio encontramos o arquivo sarg.conf entre as muitas opes, recomendo as seguintes: language Portuguese access_log /var/log/squid/access.log title "Relatrio de uso da internet" temporary_dir /tmp output_dir /var/www/squidreports resolve_ip no user_ip yes topuser_sort_field BYTES reverse topsites_num 100 max_elapsed 28800000 Sendo importante destacar: Comandos access_log output_dir resolve_ip user_ip Indica o arquivo de log do squid Indica onde ser gerado o html. recomendvel que seja em um local acessvel pelo seu http server Evita que o sarg tente fazer resoluo de DNS Se voc no estiver utilizando autenticao por usurio, coloque "no" . Se estiver, coloque "yes" Descrio

topsites_num Quantidade de sites que voc quer ver como os TOP de acessos

Gerando relatrios

27

Configurando um Squid "Ninja"

Gerando os relatrios
Depois de configurar o sarg.conf, basta gerar os relatrios com o comando
# sarg

Exemplo de relatrio do SARG

Dica
Os relatrios do Sarg ocupam um imenso espao em disco, principalmente pelo falto de no ter um rotate nem comprimir os HTMLS. Podemos contornar isso colocando em nossa crontable:
find /var/www/squidreports/ name "*.html" type f mtime +30 exec bzip2 {} \; find /var/www/squidreports/ name "*.bzip2" type f mtime +180 exec rm rf {} \;

Calamaris
O Calamaris um tradicional programa de anlise de log e gerao de reports para o squid. Seu funcionamento simples e no exige instalao. Apenas necessrio ter o perl instalado na mquina.

Gerando os relatrios

28

Configurando um Squid "Ninja"

Baixando e rodando
Direto e reto:
# # # # wget http://cord.de/tools/squid/calamaris/calamaris2.57.tar.gz tar zxvf calamaris2.57.tar.gz cp calamaris /usr/bin cat /var/log/squid/access.log | calamaris F html

Exemplo de relatrio do Calamaris

Squid Graph
Ao estilo MRTG, esse analisador ideal para uso em grandes caches, onde o importante no saber quais usurios acessaram que site, quem teve acesso negado e etc. O objetivo aqui analisar volume de trfego e eficincia em grande escala.

Instalao
Esse programa exige a presena do mdulo perl GD (http://stein.cshl.org/WWW/software/GD/). Instaleo antes de comear os passos abaixo.

Baixando e rodando

29

Configurando um Squid "Ninja" Satisfeitas as dependncias, baixe o Squid Graph de http://squidgraph.securlogic.com/files/stable/squidgraph3.1.tar.gz e faa a "operao padro":
# wget http://squidgraph.securlogic.com/files/stable/squidgraph3.1.tar.gz # tar zxvf squidgraph3.1.tar.gz

e depois:
# mv squidgraph3.1 /usr/local/squidgraph # chmod +x /usr/local/squidgraph/bin/*

Como um sistema feito em perl, no necessrio compilar.

Criando os grficos
Para gerar um grfico padro:
# /usr/local/squidgraph/bin/squidgraph outputdir=/destino/ \ < /var/log/squid/access.log

Para gerar um grfico acumulativo:


# /usr/local/squidgraph/bin/squidgraph cumulative \ outputdir=/destino/ < /var/log/squid/access.log

Para gerar um grfico somente de TCP:


# /usr/local/squidgraph/bin/squidgraph tcponly \ outputdir=/destino/ < /var/log/squid/access.log

Para gerar um grfico somente de UDP:


# /usr/local/squidgraph/bin/squidgraph udponly \ outputdir=/destino/ /var/log/squid/access.log

Criando os grficos

30

Configurando um Squid "Ninja"

Exemplo de relatrio do SquidGraph

Referncias
Sarg's Home Page

Referncias

31

Trabalhando com Hierarquias


Cache hierrquico a extenso lgica do conceito de caching. Um grupo de caches podem se beneficiar do compartilhamento de seus dados entre si sobremaneira. Isso facilmente explicvel quando pensamos em termos regionais. Exemplo: Sua empresa est estabelecida em um prdio junto com diversas outras. Esse prdio atendido pelas empresas de telecom A, B e C. Nesse caso, quando um usurio da empresa 1 deseja acessar um site, ele vai at seu proxy, que busca o site e o armazena, agilizando a consulta de todos os outros usurios dessa mesma empresa. Isso acontece tambm na empresa 2, 3 e etc. Fica fcil de visualizar que se todas as empresas interligassem localmente seus proxies, todas teriam ganho. Na realidade, essa sinergia entre pequenas empresas no existe. Mas quando falamos de grandes empresas e grandes backbones, cada 1 MB economizado com caching 1 MB ganho em outros servios. Alm de trabalhar com o conceito de rvore, onde existe um cache principal e outros ligados a ele, o Squid trabalha tambm com um conceito parecido com grupo de trabalho, onde todos os servidores se consultam mutuamente. Toda a comunicao entre os caches feita via ICP

Entendendo o ICP
O ICP foi desenvolvido como parte fundamental do projeto Harvest (Pai do Squid). Seu objetivo prover um mtodo rpido e eficiente de obterse comunicao entre servidores cache. O ICP permite que um cache pergunte a outro se ele tem uma cpia vlida de um determinado objeto, aumentando a possibilidade de encontrar aquele objeto j cacheado. Adicionalmente, o ICP permite que requisies trafeguem entre servidores filhos em uma estrutura de rvore. Alm do controle de cache, o ICP tambm gera indicaes do estado da rede. O no recebimento de uma resposta ICP normalmente indica que a rota est congestionada ou que o outro host est morto. Alm disso, a ordem de chegada de uma resposta ICP pode indicar quais hosts esto com uma distncia lgica menor ou com menos carga. As mensagens ICP so geralmente bem pequenas, com cerca de 66 bytes. Em uma estrutura hierrquica, normalmente temse mais trocas de mensagens ICP do que HTTP.

Fazendo roteamento por domnios


Essa feature, apesar de simples, pode melhorar muito o desempenho de grandes instalaes. Vamos imaginar um caso em que existam 1 cache principal ligado a 3 outros caches. Vamos dizer tambm que temos uma imensa massa de usurios fazendo requisies a 3 grandes portais e ao mundo em geral. A configurao seria algo assim: Trabalhando com Hierarquias 32

Configurando um Squid "Ninja"


cache_host_domain cache_host_domain cache_host_domain cache_host_domain cache1 cache2 cache3 cache4 portalxpto.com portalxing.com portalling.com !portalxing.com ! portalxpto.com !portalling.com

Sendo que o cache4 ser o responsvel por todos os domnios que no sejam os 3 anteriores.

Roteando por protocolo


Podemos tambm definir qual ser a rota tomada baseandose em protocolo.
acl FTP proto FTP acl HTTP proto http cache_host_acl cache1 FTP cache_host_acl cache2 HTTP

Pai e filho
O Caso exista um nico servidor pai e diversos filhos, a configurao ser:
cache_host cache1 parent 3128 3130 default

Pais e filho
Em uma situao ideal, existem diversos servidores. A escolha sobre qual utilizar ser baseada no mtodo round robin.
cache_host cache1 parent 3128 3130 roundrobin noquery cache_host cache2 parent 3128 3130 roundrobin noquery cache_host cache3 parent 3128 3130 roundrobin noquery

Referncias
http://www.squidcache.org/Doc/HierarchyTutorial/tutorial.html

Roteando por protocolo

33

Utilizando o Squid como proxy reverso


Uma feature muito til, mas por vezes pouco explorada do Squid sua capacidade de trabalhar com proxy reverso. Isso signifca que, alm de armazenar objetos remotos, criando toda uma srie de vantagens j discutidas aqui, ele tambm pode armazenar objetos de um servidor web interno, aliviando seu uso e provendo maior segurana. Aqui o Squid literalmente trabalha como se fosse um servidor web. Essa feature se mostra muito til quando temos um web server com load alto, exigindo a ampliao da mquina ou criao de um cluster. Tambm til quando o servidor web utilizado pela empresa conhecidamente inseguro e se mostra como um ponto fraco na empresa. O mesmo ser "protegido" em alguns aspectos pelos Squid. No momento de desenvolvimento da pgina j devese planejar uma futura implementao de Squid, cuidando para nunca desenvolver contedo unfriendly para o web caching. Tanto contedo esttico quando dinmico pode ser utilizado. O contedo dinmico no ser armazenado, enquanto o esttico e coisas como imagens ficaro no Squid, aliviando o trfego no web server para o contedo dinmico ter maior fluidez.

Configurao de proxy reverso


A configurao simples. Siga os passos abaixo:
http_port 80 httpd_accel_host 192.168.0.51 httpd_accel_port 80 httpd_accel_single_host on httpd_accel_uses_host_header off

Onde: Parametro http_port 80 httpd_accel_host 192.168.0.51 httpd_accel_port 80 httpd_accel_single_host on Objetivo Nmero da porta onde o Squid ir escutar IP do servidor Web interno Porta onde o web server est escutando Ativa o squid para somente um web server atrs

httpd_accel_uses_host_header off importante manter essa opo OFF, visto que ela altera os headers

Referncias
http://squid.visolve.com/white_papers/reverseproxy.htm

Utilizando o Squid como proxy reverso

34

Otimizando o Squid
Vamos listar algumas dicas para tornar o desempenho de seu Squid. Algumas delas so genricas, como aumentar a memria alocada pelo Squid, outras so especficas, como utilizar um determinado sistema de arquivos no Linux.

Especificando o Hardware
Essa etapa importante no incio do projeto. O ideal traar um perfil de como e como ser em 1 ano o volume de uso desse hardware. Procure sempre utilizar hardware que permita crescimento, especialmente em memria e armazenamento. Evite instalar servidores j com todos os bancos de memria usados ou no mximo. Pequenas instalaes dispensam HD (disco) SCSI, uma opo que j fica invivel em instalaes maiores. Ao utilizar RAID, prefira o nvel 0 do que outros, visto que o mesmo feito para desempenho. Mais abaixo vamos estudar alguns casos de empresas de tamanhos e necessidades diferentes, com todo o perfil de hardware utilizado. interessante tambm possuir um HD separado para os dados e para os logs do Squid. Se isso no for possvel, ao menos uma partio separada extremamente recomendado. Como normalmente tanto os dados quanto os logs fica abaixo do diretrio /var, esse o ponto de montagem para essa partio.

Sistemas de arquivo
Alguns sistemas operacionais so capazes de trabalhar com diversos sistemas de arquivos, tendo cada um suas caractersticas prprias, ora prezando por estabilidade, ora por desempenho. Linux reiserfs ou xfs Windows 2000 NTFS

DNS
O desempenho das resolues DNS tambm um ponto crtico. Em uma situao ideal, deveria existir um cache de DNS na mesma mquina ou em uma mquina muito prxima, para diminuir ao mximo o tempo de resoluo dos nomes.

Mltiplas rotas
Em instalaes como ISPs pode ser vantagem definir suas rotas manualmente. J em empresas mdias ou grandes que utilizam links de baixo custo, como ADSL, o balanceamento de carga nos links uma tima opo. Procure junto documentao de seu sistema operacional como fazer isso.

Otimizando o Squid

35

Configurando um Squid "Ninja"

Editando o squid.conf
Podemos tambm definir alguns parmetros na configurao, de forma a obter o mximo do sistema.
cache_mem bytes

Nessa opo dizemos ao Squid quanta memria ele pode consumir. Em uma mquina exclusiva para o cache, 80% a 90% da memria total da mquina deve ser definida aqui. Por exemplo, em uma mquina com 512MB de RAM:
cache_mem 410 MB

cache_swap_low percentage Aqui se especifica o limite mnimo para substituio de um objeto. A substituio comea quando o swap em disco est acima do limite mnimo. Defina algo como:
cache_swap_low 95

cache_swap_high porcentagem Justamente o oposto da opo anterior. Aqui se define o limite mximo.
cache_swap_high 98

maximum_object_size bytes A definio dessa propriedade deve ser analisada com critrio, visto que limitamos aqui o tamanho mximo de um objeto em cache. Objetos maiores do que esse limite no so salvos em disco. Para definir como configurar o tamanho mximo nessa opo, devese levar em considerao que um nmero grande implica em maior economia de banda e perda de performance no cache local, enquanto um nmero menor no ajuda muito em ganho de banda, mas melhora a velocidade em tempo de resposta. Recomendase a utilizao de uma valor entre 4 e 16 MB.
maximum_object_size 16384 KB

maximum_object_size_in_memorybytes Objetos maiores do que o tamanho definido aqui no so mantidos em memria. O tamanho deve ser grande o suficiente para armazenar objetos muito populares, mas pequeno demais para armazenar informaes desnecessrias.
maximum_object_size_in_memory 20 KB

cache_dir Type Maxobjsize DirectoryName Mbytes Level1 Level2 Configuramos nessa opo o tamanho mximo dos objetos dentro do diretrio, o nome do diretrio, quantos Editando o squid.conf 36

Configurando um Squid "Ninja" MB armazenar e os nveis e subnveis. possvel ter diversos diretrios de cach, mas isso s vai fazer sentido se estiverem em HDs separadas. Caso a partio onde o seui Squid faz cache venha a encher, possvel criar um diretrio de cache em outra partio, sem com isso obter ganhos de performance significativos.
cache_dir ufs /scsi2/cache 5000 16 256

Referncias
http://www.poppb.rnp.br/proxy/tsld033.htm

Referncias

37

Utilidades Pblicas
Aqui esto alguns comandos que podem ser teis.

Resetando o cache do squid


Pode ocorrer do squid travar alguma vez. Para tentar resolver isso, pare o squid e execute:
# squid z

Reiniciando as configuraes do squid


Se voc mudou alguma ACL, atualizou a lista de sites ou qualquer coisa que exija refazer as regras do squid que est rodando, utilize:
# squid k reconfigure

Entrando em modo Debug


Voc pode modificar o Squid para modo Debug on the fly utilizando o seguinte comando:
# squid k debug

O resultado do modo debug estar no arquivo cache.log, dentro do diretrio de logs. ATENO: A quantidade de logs gerada por esse modo muito grande e ir causar lentido no sistema. No deixe essa opo habilitada por default.

Squid saindo com erro (Squid Parent: child process exited due to signal)
Quando ocorre um erro que impede a execuo ou provoca a morte do squid, um aviso enviado ao seu log assinalando o cdigo do erro. Compilei aqui uma pequena tabela com alguns erros que encontrei e as solues propostas. Nmero 6 9 11 25 Verifique Quantidade de memria disponvel, espao em disco, Bad Blocks no HD, problemas de DNS O filesystem readonly Segmentation fault. Ou voc econtrou um bug no Squid ou seu sistema (libs) est com problema Veja se algum log tem mais de 2GB access.log, cache.log ou store.log

Utilidades Pblicas

38

Estudo de casos
Sempre mais fcil aprender baseado em experincias prticas do que apenas em teoria. Vamos utilizar alguns exemplos reais aqui para vislumbrar o cenrio em que nossas instalaes iro se encaixar.

Simples, eficiente e muito til


Em algumas localidades ainda no temse acesso a banda larga com facilidade. Ainda mais: Existem empresas que no querem ou no podem bancar o custo de uma conexo permanente. O cenrio desse caso o seguinte: Empresa XYZ, do ramo de prestao de servios, encontrase localizada em uma regio afastada, onde no pode ser atendida por meios convencionais de internet rpida. Os custos de uma conexo via satlite esto muito alm do que a empresa est disposta a pagar. Seus 5 funcionrios navegam na internet e usam email somente via webmail. Sua misso conectar essa empresa com baixo custo e eficincia.

Diagrama da rede Soluo: Adquirir um 486 DX4 100 ou maior (Qualquer hardware maior do que um Pentium 166 desperdcio) com 16 ou mais MB de RAM, com modem e placa de rede, alm de uma HD em bom estado.

Estudo de casos

39

Configurando um Squid "Ninja" Instalar uma distribuio reduzida do Linux, com suporte a discagem sob demanda e configurar o Squid para restrio de acesso por horrio, liberando o acesso a internet somente 1 ou 2 vezes por dia. Justificativa: Com um gasto em hardware bem pequeno, podemos conectar toda a empresa com um desempenho bom levandose em conta se uma conexo discada. Alm disso, a empresa garante que ningum ir ficar conectado o dia inteiro atravs das restries de horrio de acesso impostas pelo Squid.

As pequenas dominam
Esse o caso mais tpico. Uma pequena empresa, normalmente de prestao de servios ou comrcio varejista, deseja ligar seu escritrio ao resto do mundo pela internet. So cerca de 30 usurios ligados a uma rede cliente/servidor na plataforma Microsoft. No existe uma verba muito grande para o projeto, logo importante economizar o mximo em hardware e software para ganhar mais em servio. Uma conexo ADSL j foi solicitada a empresa de telefonia e esse custo no levado em conta no projeto. Soluo: 1 Adicionar uma segunda placa de rede ao servidor Microsoft. 2 Adquirir um appliance gateway/firewall (baixo custo) de uma das diversas marcas disponveis no mercado e ligar sua interface WAN na conexo ADSL. Ligar sua interface LAN diretamente na nova placa de rede do servidor. Instale o Squid no servidor Microsoft de acordo com as instrues dadas anteriormente e configureo adequadamente. Justificativa: Apesar de muitas pessoas imediatamente ligarem o Squid ao Linux, no faz sentido no ter um projeto aprovado por causa dos custos da aquisio de uma nova mquina. Nem tampouco justificase a aquisio de sistemas caros e ineficientes para fazer de forma inadequada o que o Squid faz com perfeio. O appliance de firewall eu considero necessrio porque conhecemos bem a sucessitibilidade da plataforma Microsoft a ataques. Mesmo que fosse uma plataforma 100% segura, ainda no deveramos expor o servidor da rede local de forma to aberta internet.

Precoces
Por outro lado, existem empresas pequenas, talvez at micro, que tm uma viso de tecnologia mais frente no mercado. Advocacias, contabilidades e empresas que trabalham com informaes sigilosas em geral, tm conscincia da necessidade de proteger os dados de seus clientes com firewalls seguros, sistemas de deteco de intrusos e etc. Nosso cliente agora uma advocacia com 8 usurios extremamente preocupada com o sigilo de seus dados e segurana de sua conexo com a internet. O desempenho da conexo no to importante quanto a auditoria dos sites acessados ou o bloqueio de eventuais vrus. Soluo:

As pequenas dominam

40

Configurando um Squid "Ninja" 1 Adquirir um servidor novo para instalao do firewall Proceder instalando o Linux da forma mais segura possvel, de preferncia aplicando patches no kernel e instalando sistemas de auditoria interna. Um sistema de deteco de intrusos tambm essencial. Feito isso, instalar o Squid com mtodo de autenticao, viralator e restrio de contedo. Lembrese de que nesse caso, talvez seja interessante bloquear acesso tambm a webmails. Instalar tambm o sarg e gerar relatrios dirios de utilizao. Utilizarse da facilidade de logrotate e faze backup dirio dos logs. Justificativa: A preocupao da empresa com o sigilo de seus dados e de seus clientes vale o investimento em uma nova mquina, que poder fornecelhes todas as informaes necessrias para auditoria e soluo de possveis falhas.

Arroz com feijo


Esse o caso mais comum de todos. Creio que 80% das instalaes que j fiz seguem esse padro. No cenrio temos uma ou vrias empresas, de porte de pequeno a grande em uma mesma localidade fsica e com apenas um link ligandoas internet. J pudemos participar de implantaes onde o link variou de um framerelay de 64Kbps segurando uma nica empresa at conexes de fibra ptica de 2Mbits onde vrias empresas e usurios de um condomnio ou prdio faziam uso dessa para acesso a internet em geral. O proxy deve ser transparente e o nico objetivo do Squid dar ganho de velocidade e economia do link. Soluo: 1 Adquirir um servidor de qualidade, analisando a necessidade de hardware da instalao Configurar o firewall utilizado e o Squid para trabalhar de forma transparente. Recomendo uso do Linux ou do FreeBSD, de acordo com sua familiaridade com esses sistemas. Procure alterar parmetros de memria e espao em disco utilizado. Talvez seja bom reavaliar a instalao aps 1 ou 2 meses, procurando uma sintonia fina de parmetros. Justificativa: Em uma relao de custo e benefcio de mdio e longo prazo, podemos perceber que mais barato instalar um servidor de cache do que aumentar um link. Isso especialmente verdade quando falamos de conexo de qualidade. Como sempre, tanto o Linux como o FreeBSD no s fazem o servio por um valor quase irrisrio, como tambm o fazem com perfeio. 15.5 Uma empresa sadia Com certeza voc um dia ir se deparar com um projeto de maior profundidade, com complicadores e detalhes chatos. O caso apresentado aqui de uma empresa da rea da sade, que desejava ao mesmo tempo ter estabilidade, desempenho, auditoria e monitoramento de usurios, alm de nveis de acesso e uma exigncia do presidente que podemos dizer ser, no mnimo, pitoresca: Um link s para ele, sem log , sem auditoria e sem perguntas.

Arroz com feijo

41

Configurando um Squid "Ninja" Para no dizer que s temos problemas, a verba era bem gorda para a implantao e razovel para a manuteno.

Diagrama da rede Soluo: 1 Adquirir 3 links ADSL de velocidades 512Kbps (x2) e 2Mbits (1x) 2 Adquirir 2 servidores (um deles com 5 placas de rede) Instalar Linux em ambos os servidores. 1 deles ser o Cache e o outro o firewall. No firewall deve ser configurado balanceamento de carga entre os 2 ADSLs de 512Kbps (WAN1 e WAN2), enquanto o de 2Mbits deve ficar isolado (WAN3). Esse servidor deve ter regras rgidas de firewall e de roteamento interno, de forma que apenas o servidor de cache tenha acesso a sua interface de rede LAN1 e apenas a mquina do presidente tenha acesso LAN2. A melhor soluo seria restrio por MAC Address no firewall. No cache, devese instalar um sistema de autenticao, restrio de horrio, restrio de sites e gerao de Arroz com feijo 42

Configurando um Squid "Ninja" logs. Justificativa: Com o firewall bem configurado e com roteamento e balanceamento de carga definidos, impedimos que algum usurio mais esperto tente burlar o cache. Da mesma fora permitimos que o presidente acesse a web por seu link exclusivo sem cache e sem log. Todos os usurios, por sua vez so muito bem controlados em tudo o que fazem. Garantese assim todos os requisitos exigidos pelo cliente.

Matriz e filial
No so raros os casos de empresas que dispe de link com a internet apenas em sua matriz e todas as suas filiais interligadas a ela por framerelay. Administradores que no conhecem (ou no conheciam) o conceito de caching, perdem uma imensa quantidade de banda com navegao de suas filiais na internet. Alguns administradores tentam evitar esse problema colocando um cache na matriz. O resultado muito bom, economizando a largura de banda necessria para outros servios. No entanto a comunicao entre as filiais e matriz continua prejudicada devido navegao. Como resolver isso? Soluo: 1 Adquirir um servidor para cada filial Em cada filial ser instalado um servidor cache utilizando o modo transparente e com configuraes de hierarquia, onde todas as filiais sero filhas da Matriz. Justificativa: Com essa soluo, comeamos diminuindo o trfego at a matriz com o cache local. Mesmo que um determinado objeto no esteja na memria do servidor da filial, o mesmo ser verificado no servidor da matriz, economizando a sada at a internet. Como todas as filiais esto passando pelo mesmo servidor final, provavelmente a economia ser muito grande em termos de banda IP.

Cache areo
Em diversas cidades esto surgindo os provedores wireless. Impulsionados por uma tecnologia barata, de simples implementao e manuteno, vrios condomnios residenciais e comerciais esto recebendo seus links desse tipo de provedor. Como todo ISP sabe, o grande custo o link com a internet. Alguns milhares de reais so gastos mensalmente para manter um link apenas rpido o suficiente para a demanda. Sendo assim, todo e qualquer esforo vlido para evitar o upgrade de link.

Matriz e filial

43

Configurando um Squid "Ninja"

Diagrama da rede Nosso cenrio aqui exatamente esse. Um ISP wireless com um backbone central e diversos pontos de presena. Soluo: 1 Adquirir um servidor para cada POP3 Todos os caches sero configurados no modo transparente e o mais otimizados possvel. Uma hierarquia ser montada, de preferncia no modo horizontal, ou grupo. O modelo rvore pode gerar trfego desnecessrio at a central. Todos os servidores de uma determinada nuvem devem se consultar mutuamente, de forma a manter o mximo de trfego em uma nica regio geogrfica. Dentro do ISP, um outro proxy transparente, muito bem configurado ir fazer ainda uma ltima verificao na memria antes de finalmente buscar uma pgina na web. Justificativa: Haver uma significativa economia de banda IP, alm de conseqente diminuio de trfego nos APs4 e uma economia muito grande para o provedor. Alm de fornecer aos clientes um servio de excepcional qualidade Matriz e filial 44

Configurando um Squid "Ninja" por um valor bem vivel.

ISP
Simplesmente no existem ISPs que no queiram dar uma melhor qualidade de servio para seus clientes e diminuir seus custos com link. Nossa proposta de resolver essas duas questes de uma nica vez utilizando o squid. Devese estudar com cautela o seu caso para que ele se enquadrar a melhor soluo. Nesse caso no pretendo dar uma soluo como nos anteriores. A nica exigncia utilizar proxy transparente. Dependendo do porte do seu provedor, a soluo pode ser colocada em um nico servidor com uma HD IDE ou ento em um cluster de alta disponibilidade com discos SCSI e controladora RAID. Pense sempre no custo x benefcio. Um pequeno provedor no pode comprar um servidor de milhares de reais, da mesma forma que um grande provedor que coloca uma mquina de baixa qualidade corre o risco de ter degradao de desempenho em relao ao uso sem cache. Mantenha em sua mente que a parte mais cara do provedor em termos de infraestrutura a banda IP. Talvez um servidor de dezenas de milhares de reais seja extremamente barato para um grande provedor, levandose em conta a economia de banda gerada. Em grandes instalaes, procure entrar em contato com seu fornecedor de banda IP e veja a possibilidade de interligar seu Squid com um dos proxies internos da telecom. Isso no ir gerar economia de banda local, mas dar um ganho de velocidade e qualidade. Tente tambm conversar com administradores de outras grandes instalaes, analisando a possibilidade de interligar os ISPs por um link dedicado. Isso ser mais barato que uma banda IP e, alm das rotas, voc ainda pode configurar seus proxies para utilizar ACL por domnio, com a criao de um cache exclusivo para o outro ISP.

ISP

45

Examinando o Squid.conf
A partir de agora, vamos explicar passo a passo as tags de configurao do squid.conf. Lembrese de que alteraes bem feitas e pensadas podem trazer um grande ganho para a performance de seu cache, enquanto um erro de configurao pode impedir seu Squid de trabalhar ou remover muitas de suas funcionalidades. Altere as opes com cautela e certifiquese de que realmente necessita fazer a mudana que planeja.

Tags da seo Network


Essa seo explica todos os parmetros de endereos de redes relevantes para uma instalao do Squid.

http_port
O nmero da porta onde o Squid ir ouvir as requisies dos clientes. O padro 3128. Essa opo ser ignorada quando o squid iniciado com a opo "a" na linha de comando Voc pode espeficicar mltiplas portas, em qualquer uma das trs formas: somente a porta, por hostname e porta ou IP e porta. Se voc espeficiar um hostname ou endereo IP, ento o Squid ir ouvir naquele endereo especificado. http_port porta http_port ip:porta hostname: porta 1.2.3.4 : porta

icp_port
Especifica o nmero da porta na qual o squid ir enviar e receber solicitaes ICP de outros Cache Servers. Para desabilitar, basta colocar um 0. Padro: 3130 Como j dito anteriormente, o ICP usando para comunicao entre caches, provendo as funcionalidades necessrias para troca de informaes sobre objetos armazenados. icp_port porta

htcp_port
Especifica o nmero da porta atravs do qual o Squid ir receber e enviar requisies HTCP de e para caches vizinhos. Para desabilitar, colocar 0. O padro 4827. Specify the port number through which Squid sends and receives HTCP queries to and from neighbor caches. To disable "0" is used (default = 4827).

Examinando o Squid.conf

46

Configurando um Squid "Ninja" htcp_port porta

mcast_groups
Especifica uma lista de grupos multicast, no qual seu servidor pode juntarse para receber requisies ICP. Padro = none mcast_groups Endereo_IP

tcp_outgoing_address
usado para conexes feitas em servidores remotos. Tambm usado para comunicarse com outros caches durante o uso de HTCP ou CARP. Normalmente no devese especificar tcp_outgoing_address. A melhor opo deixar o sistema operacional escolher um endereo. Padro: 255.255.255.255 tcp_outgoing_address Endereo_IP

udp_incoming_address
usado pelo socket ICP para receber pacotes de outros caches. Padro: 0.0.0.0 udp_incoming_address Endereo_IP

udp_outgoing_address
usado pelo socket ICP para enviar pacotes a outros caches. Padro: 255.255.255.255 udp_outgoing_address Endereo_IP

Tags da seo Peer cache servers e Squid hierarchy


As tags dessa seo so relevantes quando rodando o Squid em uma rede com hierarquia.

cache_peer
Especifica outros caches na hierarquia. A opo cache_peer dividida em 5 campos. O primeiro campo o IP ou nome do servidor do cache que ser pesquisado. O segundo indica o tipo de relacionamento. No terceiro configurase a porta HTTP do servidor destino. No quarto campo configurase a porta de requisio ICP e, finalmente, o quinto campo pode conter zero ou algumas palavraschave. cache_peer hostname tipo porta_http porta_icp [opes] Parmetros Descrio Hostname Hostname (FQDN) ou endereo IP do cache a ser pesquisado. tipo Aqui especificase a hierarquia de cache definida. Opo importante para escolha de regras de vizinhana.

mcast_groups

47

Configurando um Squid "Ninja" Opes: parent sibling multicast porta_http O nmero da porta onde o cache ouve as requisies http. porta_icp O nmero da porta onde o cache ouve as requisies http. Opes proxyonly Weight=n ttl=n noquery Descrio Especifica que os objetos desse servidor no devem ser salvos localmente Especifica o peso de um "pai". Deve ser um valor inteiro, sendo que o padro 1. Servidores com um peso maior tem preferncia Especifica o tempo de vida de um multicast Essa opo ser utilizando quando fazendo requisies a caches que no aceitam ou no suportam ICP. Caso utilize essa opo, configure o quarto campo como 0 Se esse cache ser usado como uma ltima opo e ele no est configurado para trabalhar com ICP, entp utilize essa opo. Ele no ser o padro, mas sim a ltima opo, apesar do que indica o nome da tag Define uma srie de "pais" que podem ser usados baseados em algortimo roundrobin.

default

roundrobin

multicastresponder Indica que o servidor indicado membro de um grupo de multicast. closestonly nodigest Indica que, para uma resposta ICP_OP_MISS, ns somente iremos passar CLOSEST_PARENT_MISS e nunca FIRST_PARENT_MISS. No faz requisies tipo digest para esse vizinho.

nonetdbexchange Desabilita requisies ICMP RTT desse vizinho nodelay Evita que esse vizinho seja influenciado por uma delay pool.

login=usurio:senha Caso esse servidor exija autenticao. connecttimeout=nn Especifica o time out para essa conexo. digesturl=url cache_peer_domain Diz ao Squid para buscar o resumo do cache utilizando essa URL. Limita o domnio para qual cada vizinho ser requisitado. usado para enviar requisies para caches diferentes dependendo do domnio.

Colocar um '!' antes do domno significa que o cache ir armazenar o que no for para tal. Podese colocar tantos domnios quanto necessrio por cache, tanto na mesma linha como em linhas separadas. Quando mltiplos domnios so dados para um nico cache, o primeiro domnio aplicado. mcast_groups 48

Configurando um Squid "Ninja" Cache hosts sem domnio iro aceitar todos os pedidos cache_peer_domain cache_host domnio [domnio]

neighbor_type_domain
Modifica o tipo do servidor vizinho dependendo do domnio. Voc pode tratar domnios de forma diferente quando um servidor padro usado na tah cache_peer. neighbor_type_domain parent|sibling domnio [domnio]

icp_query_timeout
Aqui podese definir manualmente o timeout de uma requisio ICP. Visto que o Squid ir automaticamente determinar um valor ideal baseado em requisies recentes, bom no alterar essa opo. icp_query_timeout milisegundos

maximum_icp_query_timeout
Tempo mximo de expirao de uma requisio ICP. A resposta no ser mais esperada depois desse tempo. maximum_icp_query_timeout milisegundos

mcast_icp_query_timeout
Normalmente o Squid envia pacotes de teste para os endereos multicast para determinar quais servidores esto na escuta. Essa opo determina quanto tempo o Squid ir esperar por uma resposta. Como o Squid fica aguardando resposta, no coloque um valor muito alto. O padro est OK. 2000 ms. mcast_icp_query_timeout milisegundos

dead_peer_timeout
Controla quanto tempo o Squid leva para declarar um servidor como morto. Se nenhuma requisio ICP for respondida nesse tempo, o Squid continuar mandando requisies ICP, mas no esperar por resposta. O servidor ser novamente marcado como vivo depois que uma determinada seqncia de respostas for enviada. Padro de 10 segundos. dead_peer_timeout segundos

hierarchy_stoplist
Uma lista de palavras que, encontradas na URL, faro com que o objeto seja manipulado automaticamente por esse cache. hierarchy_stoplist palavras

neighbor_type_domain

49

Configurando um Squid "Ninja"

no_cache
Uma lista de elementos de uma ACL, onde, se encontrados, impedem o objeto de ser cacheado. no_cache deny|allownomeacl

Tags da seo Cache size


Descreve os parmetros relacionados ao tamanho da memria utilizada pelo cache, assim como a poltica de rotatividade na memria. O Squid suporte mais que uma poltica de rotatividade de memria.

cache_mem
Especifica o nmero ideal de memria usado para: Objetos em transito Objetos "quentes" Objetos com negativa de cache Os tamanho dos dados para esses objetos so definidos em blocos de 4 KB. Esse parmetro especifica o limite ideal para os blocos alocados. Objetos em transito tem prioridade sobre os outros. Quando espao adicional necessrio para novos dados, objetos "quentes" e com negativa de cache so liberados. Padro de 8MB. cache_mem total MB

cache_swap_low
Aqui se especifica o limite mnimo para substituio de um objeto. A substituio comea quando o swap em disco est acima do limite mnimo. Padro de 90. cache_swap_low porcentagem

cache_swap_high
Justamente o oposto da opo anterior. Aqui se define o limite mximo. Padro de 95. cache_swap_high porcentagem

maximum_object_size
A definio dessa propriedade deve ser analisada com critrio, visto que limitamos aqui o tamanho mximo de um objeto em cache. Objetos maiores do que esse limite no so salvos em disco. Para definir como configurar o tamanho mximo nessa opo, devese levar em considerao que um nmero grande implica em maior economia de banda e perda de performance no cache local, enquanto um nmero menor no ajuda muito em ganho de banda, mas melhora a velocidade em tempo de resposta. Recomendase a utilizao de uma valor entre 4 e 16 MB. No padro ser utilizado 4096 kB. maximum_object_size bytes no_cache 50

Configurando um Squid "Ninja"

minimum_object_size
Objetos menores do que esse valor no sero armazenado em cache. O valor padro 0, o que significa que todos os objetos sero armazenados. minimum_object_size bytes

maximum_object_size_in_memory
A definio dessa propriedade deve ser analisada com critrio, visto que limitamos aqui o tamanho mximo de um objeto em cache. Objetos maiores do que esse limite no so salvos em disco. Para definir como configurar o tamanho mximo nessa opo, devese levar em considerao que um nmero grande implica em maior economia de banda e perda de performance no cache local, enquanto um nmero menor no ajuda muito em ganho de banda, mas melhora a velocidade em tempo de resposta. Recomendase a utilizao de uma valor entre 4 e 16 MB. maximum_object_size_in_memory bytes

ipcache_size
Especifica o tamanho do cache de ip.Padro de 1024. ipcache_size nmero_entradas

ipcache_low
Especifica o nmero mnimo de IPs cacheados. Padro de 90. ipcache_low porcentagem

ipcache_high
Especifica o nmero mximo de IPs cacheados. Padro de 95. ipcache_high porcentagem

fqdncache_size
Especifica o nmero mximo de FQDNs cacheados. Padro de 1024. fqdncache_size nmero_entradas

cache_replacement_policy
Define qual objeto ser mantido na memria e qual ser removido para criar espao para novos objetos. Opo Descrio

minimum_object_size

51

Configurando um Squid "Ninja" A opo padro utilizada pelo Squid. Mantm em cache objetos referenciados a recentemente, ou seja, comea removendo do cache o objeto que foi referenciado a mais tempo. Tem a filosofia de mantm em cache objetos menores, referenciados mais vezes, gerando uma maior possibilidade de fornecer um hit.

LRU

heap GDSF

heap LFUDA Mantm os objetos mais populares em cache, independente de seu tamanho. heap LRU Poltica LRU acrescida do uso de pilhas. cache_replacement_policy poltica

memory_replacement_policy
Determina quais objetos so removidos da memria quando preciso liberar espao. Segue as mesmas polticas do cache_replacement_policy memory_replacement_policy poltica

Tags da seo Log file path names and cache directories


Descreve os parmetros para configurao dos diretrios de cache e log em disco. Os arquivos de log so importantes no s para troubleshooting, mas tambm gerao de relatrio e observao de anomalias. recomendvel que voc utilizese de uma poltica de rotacionamento de log, como o logrotate.

cache_dir
Diretrio onde sero armazenados os objetos. possvel criarse vrios diretrios de cache, mas isso s ir fazer sentido se os mesmo forem em parties (ganho de espao) ou discos (ganho de velocidade) separados. tipo Especifica o tipo de arquivo q ser criado. Utilize o ufs. A opo aufs deve ser utilizada quando em um Linux ou Solaris com I/O Assncrono. tamanho_mx_obj Referese ao tamanho mximo do objeto que ser armazenado nesse diretrio. nome_diretrio o raiz do diretrio de cache. Caso esteja utilizando um disco separado para o cache, ser o ponto de montagem. O diretrio j deve existir previamente e o usurio do Squid deve ter direito a escrita nele. Mbytes Quantidade de espao em disco ocupado por esse diretrio. Definido em MB. nvel1 Nmero de subdiretrios de primeiro nvel criados sob o diretrio principal. nvel2 Nmero de subdiretrios de segundo nvel que ser criado abaixo de cada subdiretrio de primeiro nvel. cache_dir tipo tamanho_mx_obj nome_diretrio Mbytes nvel1 nvel2 [..]

memory_replacement_policy

52

Configurando um Squid "Ninja"

cache_access_log
Especifica o caminho para o arquivo de logs de acesso, o qual guarda todas as requisies e atividades de clientes. Os detalhes do log podem ser customizados como log_mime_hdrs, log_fqdnm client_netmask e emulate_httpd_log. Padro: /usr/local/squid/logs/access.log. cache_access_log path_diretrio/nome_arquivo

cache_log
Configura o caminho para o log de cache. Esse arquivo ir conter informaes gerais sobre o comportamento do Squid. Padro: /usr/local/squid/logs/cache.log. cache_log path_diretrio/nome_arquivo

cache_store_log
Diz qual o caminho do log de armazenamento. Esse arquivo contm detalhes sobre o processo de armazenamento em disco, podendo fornecer informaes como quais arquivos foram removidos do cache, quais foram mantidos e por quanto tempo. Padro: /usr/local/squid/logs/store.log. cache_store_log path_diretrio/nome_arquivo

cache_swap_log
Caminho para o arquivo swap.log. Esse arquivo contm metadados sobre objetos salvos em disco, podendo ser utilizado para dar um "rebuld" no cache durante a inicializao. Normalmente ele fica armazenado no primeiro diretrio de cache, mas pode ter o caminho alterado com essa opo. Esse arquivo no pode ser rotacionado. Se voc tem mais de um cache_dir, ento o seu arquivo de log de swap ter nomes como: cache_swap_log.00 cache_swap_log.01 cache_swap_log.02 cache_ swap _log path_diretrio/nome_arquivo

emulate_httpd_log on|off
O Squid tem a habilidade de emular o log de servidores web. Para utilizar essa opo, basta configurar com "on". Se voc no tem nenhuma aplicao especfica para utilizao do log em formato web, sugiro que mantenha no padro do Squid, visto que ser mais simples encontrar ferramentas de analise de logs nesse padro. emulate_httpd_log on|off

cache_access_log

53

Configurando um Squid "Ninja"

log_ip_on_direct
Ativa/Desativa a opo de loggin para um IP destino em uma hierarquia quando o cache direciona a requisio de um servidor origem. log_ip_on_direct on|off

mime_table
Configura a tabela MIME do Squid. Esse arquivo ir conter os tipos MIME suportados pelo Squid. Padro: /usr/local/squid/etc/mime.conf. mime_table path_diretrio/nome_arquivo

log_mime_hdrs on|off
Grava tanto as requisies quanto as respostas MIME no cabealho de cada transao HTTP. Os cabealhos iro aparecer em 2 partes diferentes no access.log. log_mime_hdrs on|off

user agent_log
Para utilizar essa opo, o Squid precisa ter sido compilado com a opo "enableuseragent_log". Com isso ser possvel agravar em um log o UserAgent de todas as requisies http. Desabilitado por padro. useragent_log path_diretrio/nome_arquivo

referer_log
Tambm necessita que o Squid tenha sido compilado com uma opo extra: "enablereferer_log". Esse log ir guardar todas as referncias das requisies HTTP. Desabilitado por padro. referer_log path_diretrio/nome_arquivo

pid_filename
Especifica em qual arquivo ser arquivado o PID dos processos do Squid. Padro: /usr/local/squid/logs/squid.pid. pid_filename path_diretrio/nome_arquivo

debug_options
Como os logs so configurados por nvel, podemos configurar o tanto de informaes que o Squid ir gerar para nossa anlise. Recomendo que utilize o padro, exceto se estiver tendo algum problema que no possa ser facilmente diagnosticado. Quanto menor o nvel de log, menos informaes sero geradas. Usando a palavra ALL, podemos configurar o nvel de log em todos de uma nica vez. Padro: ALL, 1.

log_ip_on_direct

54

Configurando um Squid "Ninja" debug_options seo,nvel

log_fqdn
Pode ser configurado como ON, se voc deseja logar o FQDN no access.log. Por padro est desabilitado. log_fqdn on|off

client_netmask
A mscara de rede para o endereo de clientes e sada do cachemgr. Utilize o padro como melhor opo.Padro: 255.255.255.255. client_netmask mscara_rede

Tags da seo Support for External functions


Solicita certas funes externas que no so parte do binrio do Squid. Esse executveis normalmente so relacionados a DNS, ftp, redirecionamento e autenticao. Eles so chamados pelo Squid atravs de fork() ou exec() padro. O nmero de forks filhos ser especificados para cada processo externo. Parmetros relevantes para essa seo:

ftp_user
Essa tag utilizada se voc deseja que o login annimo seja mais informativo. Coloque alguma informao significativa como proxy@seudominio.com.br. Padro: Squid@. ftp_user nome_usurio

ftp_list_width
O tamanho da largura da lista dos arquivos do ftp. Um nmero muito pequeno ir cortar nomes de arquivos grnades quando navegando em sites web. Padro: 32 ftp_list_width nmero

ftp_passive
Se o seu firewall no permite que o Squid use conexes passivas, desligue essa opo. ftp_passive on|off

cache_dns_program
Definese aqui o caminho para o executvel do dns lookup. Essa opo s est disponvel se o Squid for compilado com a opo disableinternaldns. log_fqdn 55

Configurando um Squid "Ninja" O programa de dns externo usa as bibliotecas de resoluo, provendo um cliente de dns muito mais amadurecido e confivel. Caso no haja nada de estranho com sua resoluo de DNS do Squid, mantenha o resolver interno. cache_dns_program programa

dns_children
Nmero de processos simultneos para o servio de DNS. Para servidores com grande load, pelo menos 10 filhos devem ser iniciados. O mximos fica em 32 filhos, sendo o padro 5. Novamente preciso ter compilado o Squid especialmente para suporte a DNS externo. Quanto mais rpida a resoluo DNS, melhor o desempenho geral do sistema. Tendo isso em mente, utilize 32 processos filhos. dns_children nmero

dns_retransmit_interval
Tempo inicial que o DNS aguarda para retransmitir uma solicitao. O intervalo dobra cada vez que todos os DNS configurados so tentados. dns_retransmit_interval segundos

dns_timeout
Timeout para requisies DNS. Se no houver resposta depois desse tempo, todos os DNS configurados para esse domnio so considerados indisponveis.Padro de 5 minutos. dns_timeout minutos

dns_defnames
Normalmente o servidor de dns desabilita a opo de resoluo RES_DEFNAMES. Isso impede que caches em uma hierarquia resolvam nomes de hosts localmente. Para utilizar essa opo, no esquea de habilitar na hora da compilao. dns_defnames on|off

dns_nameservers
Pode ser usada para especificar uma lista de servidores DNS no lugar no /etc/resolv.conf dns_nameservers Endereo_IP

unlinkd_program
Especifica o caminho do programa unlinkd. Isso no necessrio se voc estiver usando I/O assncrono. Padro: /usr/local/squid/libexec/squid/unlinkd. unlinkd_program path_diretrio/nome_programa dns_children 56

Configurando um Squid "Ninja"

diskd_program
Especifica a localizao do diskd. diskd_program path_diretrio/nome_programa

pinger_program
Define o caminho do executvel pinger. pinger_program path_diretrio/nome_programa

redirect_program
Diz qual o caminho do redirecionador de URL. Existem diversas aplicaes que podero ser utilizadas aqui. redirect_program path_diretrio/nome_programa

redirect_children
Nmero de processos filhos para o programa de redirect. redirect_children nmero

redirect_rewrites_host_header
Por padro o Squid reescreve o header de host em requisies redirecionadas. Se voc est rodando como proxy reverso, isso pode no ser desejado. redirect_rewrites_host_headeron|off

redirector_access
Se definido, essa lista de acesso especifica quais requisies so enviadas para o processo de redirect. Por padro, todas o so. redirector_access allow|deny

authenticate_program
Especifica o comando do autenticador externo. Esse programa l uma linha contendo: "usurio senha" e devolve um OK ou ERR. Para utilizar o autenticador preciso ter uma ACL relacionada. authenticate_program path_diretrio/nome_programa path_diretrio/arquivo_senhas

authenticate_children
Nmero de processos filhos do autenticador. Padro de 5.

diskd_program

57

Configurando um Squid "Ninja" authenticate_children nmero

authenticate_ttl
Especifica o tempo de vida para uma autenticao bem sucedida permanecer em cache. Se uma combinao invlida de nome de usurio e senha fornecida, o usurio removido do cache e uma revalidao exigida. Padro de 3600 segundos. authenticate_ttl segundos

authenticate_ip_ttl
Com essa opo voc poder especificar por quanto tempo a autenticao persistir para um determinado IP. Se uma requisio usando a mesma autenticao da conexo j efetuada for utilizada em outra mquina, ambas tero acesso bloqueado e ser exigida uma nova autenticao. Se voc tem usurios com uma conexo discada conectando em seu Proxy remotamente, recomendvel que no tenha um nmero maior do que 60 segundos, visto que isso o impediria de conectarse novamente durante esse tempo se a linha dele casse. O padro de 0 segundos. authenticate_ip_ttl segundos

authenticate_ip_ttl_is_strict
Essa opo faz com que a autenticao seja um pouco mais rgida. Ela impede que qualquer outra conexo seja feita com outros endereos IP enquanto o tempo de vida especificado anteriormente no expirar. Essa opo est ativada por padro. authenticate_ip_ttl_is_stricton|off

Tags da seo para tunning do Squid


Essa seo descreve importantes parmetros para determinar a performance do Squid.

wais_relay_host / wais_relay_port
Define o servidor de relacionamento WAIS wais_relay_host host wais_relay_port porta

request_header_max_size
Especifica o tamanho mximo de um cabealho de uma requisio http. Como sabese que um cabealho HTTP deve ser pequeno (por volta de 512 bytes), limitar o tamanho do mesmo pode ser interessante no uso de proxy reverso, criando uma barreira a mais para ataques do tipo buffer overflow e denial of service. Padro de 10K. request_header_max_size kbytes authenticate_ttl 58

Configurando um Squid "Ninja"

request_body_max_size
Especifica o tamanho mximo para o corpo de uma requisio HTTP. Ou seja, o tamanho mximo de um PUT ou POST. Essa opo pode ser interessante para empresas que queiram garantir que seus usurios no faro grandes uploads partir da empresa. Padro de 1MB.. request_body_max_size kbytes

reply_body_max_size
Tamanho mximo do corpo de um reply. Isso til para impedir que seus usurios baixem arquivos grandes. Padro de 0. reply_body_max_size kbytes

refresh_pattern
Essa opo deve ser usada com extremo cuidado. Se voc no tiver nenhuma aplicao que exija explicitamente alterar essa TAG, sugiro que deixea inalterada. Um valor inadequado aqui far com que seus usurios simplesmente no consigam mais acessar aplicaes dinmicas na web. No seja levado pela idia de que impedir os usurios de ficar dando reload em uma pgina ir economizar sua banda, pois a dor de cabea gerada ser muito mais cara do que sua banda. Parmetros mn porcentagem mx Descrio Tempo mnimo, em minutos, que um objeto sem um tempo de expirao explicitamente configurado ser considerado vlido. Utilize, impreterivelmente 0. a porcentagem da idade dos objetos, desde a ltima modificao, no qual esse ser considerado vlido, desde que no tenha um valor de expirao configurado. o tempo mximo, em minutos, que um objetos sem um tempo de expirao explicitamente configurado ser considerado vlido. Descrio Refora o tempo mnimo de expirao de um objeto, ainda que o mesmo tenha sido enviado no cabealho.

Opes overrideexpire

overridelastmod Refora o tempo mnimo, ainda que o objeto tenha sido modificado recentemente. reloadintoims ignorereload Modifica solicitaes do tipo "semcache" ou "reload" para "Semodificadodesderequisio" Simplesmente ignora as requisies "semcache" e "reload".

refresh_pattern [i] regex mn porcentagem mx [opes]

reference_age
Como j discutido, o Squid atualiza sua memria baseado em polticas, normalmente removendo primeiro objetos mais antigos ou menos populares. Apesar disso ser feito dinamicamente, podemos configurar valores manualmente nessa opo, configurando o tempo mximo de permanncia em memria. O valor padro de 1 request_body_max_size 59

Configurando um Squid "Ninja" ano. reference_age tempo

quick_abort_min / quick_abort_max / quick_abort_pct


O cache pode ser configurado para continuar com o download de requisies abortadas. Ao mesmo tempo que isso pode ser indesejado em redes pequenas e com conexo lenta, pode ser til em grandes instalaes, onde quase certamente um outro usurio ir requisitar o mesmo objeto. Quando o usurio aborta um download, o Squid verifica o valor da opo quick_abort e a quantidade de dados baixados at o momento. Se o transferido for menor do que o especificado, ele ir finalizar o download. Padro: 16 KB Se o transferido tiver mais do que o quick_abort_max, ele ir abortar a transferncia. Padro: 16 KB Se uma porcentagem maior do que a configurada em quick_abort_pct tiver sido baixada, ele finaliza o download. Padro de 95%. quick_abort_min kbytes quick_abort_max kbytes quick_abort_pct porcentagem

negative_ttl
Tempo de vida para requisies falhas. Certos tipos de erros (como conexo recusada ou pgina no encontrada) so marcados como "semcache" por um determinado tempo. Padro de 5 minutos. negative_ttl tempo

positive_dns_ttl
Tempo de vida para resultados bem sucedidos de resoluo DNS. Se voc realmente precisar alterar esse valor, no deixe inferior a 1 minuto. Padro de 6 horas. positive_dns_ttl tempo

negative_dns_ttl
Tempo de vida de resolues falhas de DNS. negative_dns_ttl tempo

range_offset_limit
Configura um limite superior de at onde dever ir a abrangncia de uma requisio de arquivo em um prdownload. Se passar desse limite, o Squid encaminha a requisio como est e no cacheia o resultado. quick_abort_min / quick_abort_max / quick_abort_pct 60

Configurando um Squid "Ninja" range_offset_limit bytes

Tags da seo Timeouts


Parmetros de time out podem ser baseados em tempo de conexo, conexo com host, por site ou domnio, por tipo de requisio, etc. Time outs bem configurados so essenciais para otimizar a performance do Squid. Os principais parmetros esto listados abaixo.

connect_timeout
O tempo de espera que o Squid aguarda pela resposta do servidor de origem. Se esse tempo for excedido, o Squid responde com uma mensagem de "Connection timed out". Padro de 120 segundos. connect_timeout segundos

peer_connect_timeout
Especifica quanto tempo dever ser aguardada uma resposta de um cache vizinho para conexes TCP. Diferentes limites podem ser configurados para vizinhos distintos. Padro de 30 segundos. peer_connect_timeout segundos

site select_timeout
Define o tempo de expirao para URN em seleo de mltiplas URLs. URN um protocolo desenvolvido para resoluo de nomes independente de localizao. Padro de 4 segundos. siteselect_timeout segundos

read_timeout
Essa opo usada em conexes serverside. Aps cada leitura bem sucedida, o time out ser aumentado nesse valor. Se nenhum dado for lido aps esse tempo, a requisio abortada e logada como ERR_READ_TIMEOUT. Padro de 15 minutos. read_timeout tempo

request_timeout
Diz ao Squid quanto tempo esperar aps uma conexo HTTP ser aberta. Para conexes persistentes, o Squid ir aguardar esse tempo aps o fim da requisio anterior. Default de 30 segundos. request_timeout segundos

client_lifetime
Tempo mximo que um cliente poder ficar conectado ao processo de cache. Entendase cliente como browser. Isso protege o cache de ter muitos sockets em estado CLOSE_WAIT devido a clientes que desconectam sem utilizar o procedimento adequado. Padro de 1 dia. Tags da seo Timeouts 61

Configurando um Squid "Ninja" client_lifetime tempo

half_closed_clients
Alguns clientes podem parar o envio de pacotes TCP enquanto deixam o recebimento em aberto. Algumas vezes o Squid no consegue diferenciar conexes TCP totalmente fechadas e parcialmente fechadas. Por padro, conexes parcialmente fechadas so mantidas abertas at que haja um erro de leitura ou escrita no socket. Mudando essa opo para off far com que o Squid imediatamente feche a conexo quando a leitura do socket retornar "sem mais dados para leitura". half_closed_clients on|off

pconn_timeout
Aqui configurase o timeout para conexes persistentes. Depois do tempo de inatividade determinado aqui, o Squid encerra as conexes persistentes. Caso voc configure essa opo para menos de 10 segundos, a funcionalidade estar desabilitada. Padro de 120 segundos. pconn_timeout segundos

ident_timeout
Tempo mximo para para aguardar requisies IDENT. Se esse valor estiver muito alto e a opo ident_lookup ativada, existe a possibilidade de sujeitarse a uma negao de servio, por ter muitas requisies IDENT ao mesmo tempo. Padro de 10 segundos. ident_timeout segundos

shutdown_lifetime
Quando o Squid recebe um SIGTERM ou um SIGHUP, o cache colocado em modo de "shutdown pendente" at que todos os sockets ativos sejam fechados. Qualquer cliente ainda ativo depois desse perodo ir receber uma mensagem de timeout. Default de 30 segundos. shutdown_lifetime segundos

Tags da seo Access Control Lists


Sem dvida a parte mais importante para os administradores. Com o uso de ACLs bem configuradas e planejadas, possvel no s manter seus usurios sob controle, mas tambm melhorar desempenho e facilitar a administrao.

acl
Define uma lista de acesso. Quando usando um arquivo para buscar os dados, o mesmo deve conter uma informao por linha. Expresses regulares so casesensitive para fazelas caseinsensitive, utilize a opo i. acl nome tipo string1 ... | "arquivo" half_closed_clients 62

Configurando um Squid "Ninja" src Baseado em ip ou hostname de origem da requisio acl nome src ip/mscara. dst Baseado em ip ou hostname de destino da requisio. A ACL s interpretada depois que a resoluo DNS for feita. acl nome dst ip/mscara. srcdomain O domnio da mquina cliente. Os domnios sero obtidos por resoluo reversa de IP, o que pode causar atrasos para a resposta da requisio.

acl aclname srcdomain nome_domnio dstdomain Mesmo que srcdomain, mas levandose em conta o destino. acl nome dstdomain nome_domnio srcdom_regex Expresso regular que avaliada para tentar marcar um domnio requisitante. acl nome srcdom_regex regex dstdom_regex Mesmo que srcdom_regex, mas com relao ao destino. acl nome dstdom_regex regex time Dia da semana e hora acl nome time [abreviaododia] [h1:m1h2:m2] Onde: S Sunday (Domingo) M Monday (SegundaFeira) T Tuesday (TeraFeira) W Wednesday (QuartaFeira) H Thursday (QuintaFeira) F Friday (SextaFeira) A Saturday (Sbado) h1:m1 horrio de incio h2:m2 horrio do trmino url_regex Essa ACL ir procura em na URL uma expresso regular que especificada. Opo casesensitive acl nome url_regex regex Essa acl ir fazer uma combinao de uma expresso regular com o caminho em um servidor urpath_regex que est se tentando acessar. Isso significa que o Squid ir ignorar o nome do servidor e o protocolo utilizado. acl nome urlpath_regex regex port O acesso pode ser controlado pela porta do endereo do servidor requisitado. acl nome port numeroporta half_closed_clients 63

Configurando um Squid "Ninja" proto Especifica o protocolo de transferncia (http, ftp, etc). acl nome proto protocolo method Especifica o tipo de mtodo da requisio. acl nome method tipomtodo browser Expresso regular cujo padro tentara combinar com o contido no cabealho HTTP de requisio do cliente, descobrindo assim o agente (browser) utilizado.

acl nome browser tipo ident Seqncia de caracteres que combinam com o nome do usurio. Requer um servidor Ident rodando na mquina do cliente. acl nome ident nome_usurio ident_regex O mesmo que ident, mas utilizandose de expresso regular. acl aclname ident_regex pattern src_as Origem de um sistema autnomo dst_as Destino de um sistema autnomo snmp_community Comunidade SNMP. acl snmppublic snmp_community public maxconn Limite mximo de conexes provenientes de um mesmo cliente. til para restringir nmero de usurios por IP, bem como fazer controle de uso da banda. Expresso regular que combina com o tipo de contedo contido no cabealho de requisio.

req_mime_type

acl nome req_mime_type padro arp MAC Address do cliente. acl nome arp MAC_ADDRESS

http_access
Permite ou nega acesso ao servio http baseado na lista de acesso (acl) definida. O uso de "!" indica que ser a negao da acl. Se nenhuma das acls configuradas se encaixar na requisio em curso, ser ento aplicada a ltima regra. importante sempre criar uma acl chamada all (ou descomentar a linha j existente) e colocar um `http_access deny all'. http_access allow|deny [!]nome ... http_access 64

Configurando um Squid "Ninja"

icp_access
Permite ou nega acesso porta ICP, baseandose nas listas de acesso. icp_access allow|deny [!]nome ...

miss_access
Usado para forar seus vizinhos a usar seu servidor como "irmo" ao invs de "pai". miss_access allow|deny [!]nome...

cache_peer_access
Similar ao `cache_peer_domain', mas oferece mais recursos por utilizarse da flexibilidade das acls. Sua sintaxe idntica ao `http_access'. cache_peer_access cachehost allow|deny [!]nome ...

ident_lookup_access
Uma lista de elementos em uma ACL, os quais, se encontrados, iro gerar uma requisio IDENT. ident_lookup_access allow|deny nome ...

Tags da seo auth_param


Uma das principais mudanas do Squid 2.4.x para o 2.5.x foi o sistema de autenticao. Todas as opes referentes a isso esto agoras sujeitas a opo auth_param. Vamos ver abaixo como ela funciona. Formato geral auth_param esquema parmetro [opes]

program
Especifica o programa utilizado para autenticao. Tal programa ir ler uma linha contendo "usurio senha" e responder ao squid com um "OK" para sucesso ou um "ERR" para falha. Para utilizar um autenticador, necessrio uma acl do tipo proxy_auth. Por padro, utilizase o sistema de autenticao bsico. auth_param basic program /path/do/programa /path/do/arquivo/senhas

children
Nmero de processos filhos que o programa de autenticao poder conter. auth_param basic children nmero

icp_access

65

Configurando um Squid "Ninja"

realm
Texto que ir aparecer na caixa de dilogo de login. No necessrio configurar, mas confere uma certa personalizao ao servidor. auth_param basic realm Texto de login

credentialsttl
Especifica por quanto tempo o Squid ir assumir que uma autenticao bem sucedida continuar vlida. auth_param basic credentialsttl tempo

Tags da seo parmetros administrativos


O parmetros configurados nessa seo permitem que o administrador do Squid especifique usurio e grupos no qual o Squid ir rodar, bem como hostname que ir aparecer quando houver erros, etc.

cache_mgr
Usando essa tag, ns podemos especificar o endereo de email do administrador do cache local, que ser o responsvel pela instalao dessa mquina. Esse usurio ser notificado por email caso o cache morra. (usurio local). Padro: webmaster cache_mgr usurio

cache_effective_user / cache_effective_group
Quando iniciado como root, o Squid ir procurar esse parmetro para determinar o usurio e grupo no qual ir rodar. importante ressaltar que iniciar o Squid com usurio no root far com que ele no consiga abrir nenhuma porta abaixo de 1024 localmente. Ao configurar esse parmetro, tenha certeza de que o usurio escolhido ter as permisses necessrias para escrever no diretrio de logs, cache e todos os necessrios. cache_effective_user usurio cache_effective_group grupo

visible_hostname
Se voc deseja apresentar uma mensagem de erro com um hostname especfico, defina aqui essa opo. Do contrrio o Squid ir tentar descobrir o hostname. Esse parmetro no ser necessrio se voc no tiver um grande cluster de Squids. visible_hostname nomehost

hostname_aliases
Uma lista de outros nomes que seu cache possa ter. Essa opo usada para detectar requisies internas quando um cache tem mais de um hostname em uso. realm 66

Configurando um Squid "Ninja" hostname_aliases nomehost

Tags da seo httpdaccelerator


O Squid pode ser usado como um balanceador de carga ou redutor de carga de um webserver em particular. Alguns caches podem trabalhar com requisies de cache e requisies http, fazendo deles tambm um servidor web. O desenvolvimento do Squid no optou por essa soluo. Entretanto, adicionandose uma camada de traduo o Squid pode receber e interpretar requisies no formato webserver, as quais ele ir repassar ao servidor web real, situado atrs dele. Nessa seo tambm configurase o Squid para trabalhar de modo transparente.

httpd_accel_host
Configura o nome do host para o servio acelerado. Se voc tiver vrios servidores, ser necessrio utilizar a palavra virtual ao invs de hostname. httpd_accel_host hostname(IP)|virtual

httpd_accel_port
Porta para qual as requisies aceleradas sero enviadas. httpd_accel_port porta httpd_accel_single_host Se voc est utilizando o Squid como um acelerador web e tem somente um servidor no backend, configure essa opo para on. Isso far com que o Squid mande as requisies para o servidor, independentemente do que o cabealho disser. httpd_accel_single_host on|off

httpd_accel_with_proxy
Se a opo http_accel_host estiver ativada, ento o Squid ir parar de trabalhar a funcionalidade de cache. necessrio configurar essa opo para que ambas as funcionalidades continuem ativas. httpd_accel_with_proxy on|off

httpd_accel_uses_host_header
As requisies HTTP/1.1 incluem um cabealho relativo ao host, que basicamente contm o nome do mesmo na URL. O Squid pode ser um acelerador para diferentes servidores web atravs da analise do cabealho http. Entretanto, o Squid no checa os valores do cabealho do host, abrindo uma possvel brecha de segurana. Mais uma vez, recomendado utilizar essa tag com cuidado. httpd_accel_uses_host_header on|off

Tags da seo httpdaccelerator

67

Configurando um Squid "Ninja"

Tags da seo Miscellaneous


Como o nome sugere, essa seo sobre alguns parmetros que no podem ser explicitamente encaixados com nenhuma outra categoria. Iremos abranger: Limite de crescimento de arquivos de log. Mostrar informaes customizadas sobre os clientes e erros. Definir pools de memria para o Squid. Gerenciamento por SNMP. Coordernao com caches vizinhos atravs de WCCP. Direcionar as requisies tanto para o servidor de origem como um cache vizinho. dns_test names O teste de DNS pra de ser executado to logo ele consegue resolver a primeira busca de nome. Esse teste pode ser desabilitado iniciandose o Squid com a opo D na linha de comando. dns_testnames URL logfile_rotate Especifica o nmero de rotaes executadas quando da digitao de `squid k rotate'. O padro 10, o que significa que o Squid criar extenses de 0 at 9. Configurar o log_rotate para 0 ir desabilitar o rotacionamento. logfile_rotate nmero

append_domain
Anexa o nome do domnio local para hostnames sem nenhum ponto (.). Essa opo deve conter um domnio com ponto (.) no incio. append_domain nome_domnio

tcp_recv_bufsize
Tamanho mximo de um buffer TCP. tcp_recv_bufsize bytes

err_html_text
Especifica o texto do HTML que ser includo nas mensagens de erro. Pode ser alguma mensagem sobre contato do administador, ou um link para a pgina da empresa. err_html_text texto

Tags da seo Miscellaneous

68

Configurando um Squid "Ninja"

deny_info
Essa opo pode ser usada para retornar uma pgina de erro para requisies que no passem pelas regras definidas em uma ACL. Voc pode utilizar as pginas padro de erro do Squid ou criar as suas prprias. deny_info nome_pagina_erro acl

memory_pools
Se configurado, o Squid ir manter pools de memria alocada e livre para uso futuro. memory_pools on|off

memory_pools_limit
Devese tambm determinar um valor para esse pool de memria em bytes. Se no configurada, ou com valor igual a zero, o Squid ir guardar tanta memria quanto possvel. memory_pools_limit bytes

forwarded_for
Atualmente o padro HTTP/1.1 no prov nenhuma forma de indicar o endereo de requisio de um cliente. Entretanto, como essa era uma feature requisitada, o Squid adiciona em suas requisies um cabealho do tipo "XForwardedFor". Se ativada essa opo o Squid ir mandar requisies com o IP de origem no cabealho. Caso contrrio, o mesmo ir ter origem desconhecida. forwarded_for on|off

log_icp_queries
Configurandose essa opo como ativa, as requisies ICP passaro a ser logadas no access.log. log_icp_queries on|off

icp_hit_stale
Se voc deseja retornar um ICP_HIT para objetos estticos cacheados, configure essa opo para `on'. icp_hit_stale on|off

minimum_direct_hops
Se voc utilizar ICMP, faa buscas diretas para sites que estejam a mais de um hop de distncia. Esse parmetro til para descobrir a latncia da rede. minimum_direct_hops nmero

deny_info

69

Configurando um Squid "Ninja"

minimum_direct_rtt
Se estiver utilizando ICMP, faa buscas diretas a sites que estejam a mais do que o nmero de milisegundos configurados aqui de distncia. Padro de 400. minimum_direct_rtt tempo

cachemgr_passwd
Especifica a senha para operaes de gerenciamento de cache. cachemgr_passwd senha ao ao ... Aes 5min events non_peers via_headers 60min filedescriptors objects vm_objects asndb fqdncache pconn authenticator histograms peer_select cbdata http_headers redirector client_list info refresh comm_incoming io server_list config ipcache shutdow counters delay mem store_digest digest_stats menu storedir dns netdb utilization store_avg_object_size (kbytes) O tamanho mdio de objetos usado para estimar o nmero de objetos que seu cache pode manipular. Para fazer essa estimativa, basta calcular: Nmero de objetos = cache_swap/tamanho mdio de objetos. store_avg_object_size tamanho store_objects_per_bucket Nmero de objetos armazenados de uma nica vez em uma tabela hash. store_objects_per_bucket kbytes

client_db
Se voc deseja desabilitar estatsticas por cliente, desabilite essa opo. client_db on|off

minimum_direct_rtt

70

Configurando um Squid "Ninja"

netdb_low / netdb_high
Os limites mnimos e mximos da medio ICMP. Por padro esses valores so 900 e 1000. Isso significa que quando o limite mximo atingido, o banco de dados ir apagar registros at alcanar o limite mnimo. netdb_low entradas netdb_high entradas

netdb_ping_period
O tempo mnimo de medio de um site. netdb_ping_period timeunits

query_icmp
Se voc deseja fazer com que as requisies ICP sejam tambm respondidas com informaes ICMP pelos seus vizinhos, habilite essa opo. Lembrese que necessrio que o Squid tenha sido especificamente compilado com suporte a icmp para que essa opo seja funcional. query_icmp on|off

test_reachability
Quando habilitado, repostas ICP MISS sero interpretadas como ICP MISS NOFETCH se o host alvo no estiver na base de dados ICMP ou tiver um RTT zero. test_reachability on|off

reload_into_ims
Habilitando essa opo, voc far com que uma requisio nocache seja transformada em uma ifmodifiedsince. Essa opo deve ser usada apenas em casos muitos especficos. reload_into_ims on|off

always_direct
Pode utilizar elementos de uma ACL para especificar requisies que devem sempre ser encaminhadas para o servidor de origem. Isso normalmente utilizado juntamente com a opo cache_peer. always_direct allow|deny [!]nome ...

never_direct
a regra oposta ao always_direct, funcionando da mesma maneira. never_direct allow|deny [!]aclname ... netdb_low / netdb_high 71

Configurando um Squid "Ninja"

anonymize_headers
Substitui o antigo cabealho `http_anonymizer' por uma opo mais configurvel. Agora possvel especificar quais cabealhos sero enviados ou removidos das requisies. anonymize_headers allow|deny nome_cabealho ... possvel utilizar essa opo permitindo que determinados tipos de cabealhos sejam vistos ou negando outros. Para ter uma header igual ao `http_anonymizer', preciso configurar da seguinte forma: anonymize_headers allow Allow Authorization CacheControl anonymize_headers allow ContentEncoding ContentLength anonymize_headers allow ContentType Date Expires Host anonymize_headers allow IfModifiedSince LastModified anonymize_headers allow Location Pragma Accept anonymize_headers allow AcceptEncoding AcceptLanguage anonymize_headers allow ContentLanguage MimeVersion anonymize_headers allow RetryAfter Title Connection anonymize_headers allow ProxyConnection

fake_user_agent
Essa opo faz com que o Squid envie, como verso do browser, o parmetro que for configurado. fake_user_agent String

icon_directory
Especifica o diretrio em que os cones esto armazenados. icon_directory path_diretrio/nome_diretrio

error_directory
Caso deseje customizar as mensagens de erro do Squid, basta indicar o diretrio onde os htmls sero encontrados e crialos de acordo com a padronizao. error_directory path_diretrio/nome_diretrio

anonymize_headers

72

Configurando um Squid "Ninja"

minimum_retry_timeout
Especifica o tamanho mnimo de timeout, quando esse tempo reduzido para compensar a disponibilidade de mltiplos endereos IP.Isso significa que quando uma conexo iniciada com um host que tem mltiplos endereos IPs, o tempo padro de timeout ento reduzido dividindose esse valor pelo nmero de endereos. minimum_retry_timeout segundos

maximum_single_addr_tries
Configura o nmero mximo de tentativas de conexes em um servidor que tenha somente um endereo. maximum_single_addr_triesnmero

snmp_port
O Squi tem a capacidade de fornecer informaes sobre status e estatsticas via SNMP. Aqui configuramos a porta onde esse servio ir escutar. Utilize 0 para desabilitar essa opo. Padro: 3401. snmp_port porta

snmp_access
Permite ou nega acesso porta SNMP, baseandose em uma acl. snmp_access allow|deny [!]aclname ...

Tags da seo delaypool


Conceitualmente, as delay pools so limitantes de consumo de banda. Basicamente o que um delay pool faz criar uma lentido artificial para os clientes, gerando uma grande economia de banda. Com uma combinao bem feita de delay pools e acls, possvel fazer um grande controle e limitao de banda.

delay_pools
Nmero total de delay pools que iro ser utilizadas. Isso significa que se voc tiver uma delay pool de classe 2 e 4 de classe 3, esse nmero dever ser 5. delay_pools nmero

delay_class
Define a classe de cada delay pool. Deve haver exatamente uma classe de delay para cada delay pool. delay_class nmero(delaypool number), nmero (delay class)

minimum_retry_timeout

73

Configurando um Squid "Ninja"

delay_access
Determina em qual delay pool uma requisio ser encaixada. A primeira a combinar ser utilizada, por isso verifique com cuidado suas acls. delay_access allow|deny nomeacl

delay_parameters
Define os parmetros para uma delay pool. Cada delay pool tem um nmero de alocao de trfego associado. delay_parameters pool agregado (delay_class 1) delay_parameters pool agregado individual (delay_class 2) delay_parameters pool agregado network individual (delay_class 3) delay_initial_bucket_level Determina qual a porcentagem colocada em cada alocao quando o Squid iniciado. delay_initial_bucket_levelbytes

incoming_icp_average / incoming_http_average / incoming_dns_average / min_icp_poll_cnt / min_dns_poll_cnt / min_http_poll_cnt


So descritos os algoritmos usados para as tags acima, TagName nmero Padro: incoming_icp_average 6 incoming_http_average 4 incoming_dns_average 4 min_icp_poll_cnt 8 min_dns_poll_cnt 8 min_http_poll_cnt 8

max_open_disk_fds
Especifica o nmero mximo de file descriptors que o Squid pode usar para abrir arquivos. Essa opo usada para evitar gargalo de I/O e acesso a disco limitando o nmero de arquivos. delay_access 74

Configurando um Squid "Ninja" max_open_disk_fds nmero

offline_mode
Com essa opo ativada, o Squid nunca ir tentar validar objetos cacheados. offline_mode on|off

uri_whitespace
A ao que ser tomada quando uma URI contiver espaos em branco decidida nessa tag. Padro strip. uri_whitespace opes Opes Descrio strip deny allow Os espaos em branco so removidas da URL, de acordo com o recomendado na RFC2616 A requisio negada e o cliente recebe uma mensagem de "Requisio Invlida" A requisio aceita e os espaos em branco no so alterados.

encode A requisio aceita e os espaos so codificados de acordo com a RFC1738 chop A requisio cortada e mandada apenas at o espao em branco

broken_posts
Uma lista de elementos de uma ACL que, se encontrados, iro fazer com que o Squid coloque um par extra de CRFL (Carriage return e Line Feed) em um PUT ou POST. Isso somente utilizado junto a alguns servidores HTTP problemticos que exigem essa modificao. Se no souber de nenhum caso especfico, ignore essa opo. broken_posts allow|deny nomeacl

nonhierarchical_direct
Por padro, o Squid ir enviar qualquer requisio no hierrquica diretamente aos servidores de origem. Se voc desabilitar isso, o Squid ir enviar isso para o cache "pai". Na maior parte dos casos, no uma boa idia desabilitar essa opo, visto que ela ir gerar uma latncia desnecessria, sem necessariamente algum ganho. nonhierarchical_direct on|off

prefer_direct
O comportamento normal do Squid tentar utilizar seus "pais" na maior parte das requisies. Uma possvel utilidade de habilitar uma busca direta ao invs disso, seria combinando as opes non hierarchical_direct off and prefer_direct on, fazendo basicamente dos "pais" uma rota backup em caso de erro em buscas diretas. prefer_direct on|off

offline_mode

75

Configurando um Squid "Ninja"

strip_query_terms
Para habilitar o log de todos parmetros das requisies, necessrio habilitar essa opo. Caso contrrio o Squid apenas d forward das mesmas sem gerar um log completo. strip_query_terms on|off

coredump_dir
Em caso de falhas, os sistemas Unix geram sempre um arquivo de core dos programas. O Squid normalmente guarda os arquivos de core gerados por ele no diretrio de cache. Com essa opo possvel configurar onde ser armazenado esse arquivo. coredump_dir diretrio

redirector_bypass
Quando habilitado, uma requisio no ir atravs dos redirecionadores se todos eles estiverem ocupados. Se estiver com essa opo estiver desativada e a fila comear a crescer muito, o Squid ir abortar e gerar um erro solicitando que a quantidade de redirecionadores seja aumentada. redirector_bypass on|off

ignore_unknown_nameservers
O Squid sempre verifica se uma resposta DNS est sendo recebida de um mesmo IP de origem para qual est sendo enviada a requisio. Caso no sejam os mesmos, o Squid ir ignorar a resposta e mandar uma mensagem no log. Recomendo que no desabilite essa opo, visto que uma proteo a mais contra ataques baseados em DNS. ignore_unknown_nameserverson|off

digest_generation
Aqui possvel controlar se o servidor ir gerar um resumo e o tipo de seu contedo. Para habilitar essa e todas as outras opes referentes a resumo, necessrio que o Squid tenha sido compilado com opo enablecachedigests. digest_generation on|off

digest_bits_per_entry
Nmero de bits do resumo de cache do servidor, o qual ser associado com a combinao de um dado tipo de mtodo HTTP e URL. digest_bits_per_entry nmero

strip_query_terms

76

Configurando um Squid "Ninja"

digest_rebuild_period
Nmero de segundos para a reconstruo do resumo do cache. O padro de 1 hora. digest_rebuild_period tempo

digest_rewrite_period
Tempo de espera entre escritas de resumo no disco. Como na opo anterior, o resumo escrito a cada 1 hora. digest_rewrite_period tempo

digest_swapout_chunk_size
Nmero de bytes do resumo a escrever de cada vez. Por padro o Squid utiliza 4KB, que o tamanho padro de uma pgina de swap. digest_swapout_chunk_size bytes

digesvt_rebuild_chunk_percentage
Configurase aqui a porcentagem do resumo de cache que ser verificada de cada vez. Por padro est configurado para 10% do total. digest_rebuild_chunk_percentage porcentagem

chroot
Devido a alguns procedimentos que necessitam de poderes de root, o Squid roda parcialmente como tal. Se voc deseja rodar o Squid como chroot, preciso habilitar essa opo. Isso far com que o Squid rode os procedimentos necessrios como root e depois abandone completamente esse privilgio. Lembrese que para usar um chroot necessrio um chroot_dir. chroot enable|disable

client_persistent_connections / server_persistent_connections
Suporte a conexes persistentes para clientes e servidores. Por padro, o Squid ir usar conexes persistentes para comunicarse com clientes e servidores. client_persistent_connectionson|off server_persistent_connectionson|off

pipeline_prefetch
Para melhorar o desempenho de requisies e fila, o Squid ir trabalhar com 2 requisies paralelamente. pipeline_prefetch on|off digest_rebuild_period 77

Configurando um Squid "Ninja"

extension_methods
O Squid somente trabalha com requisies HTTP padro. Apesar de mtodos diferentes serem negados, possvel fazer com que eles sejam aceitos adicionandoos a uma lista. possvel incluir at 20 mtodos diferentes. extension_methods request mtodo

high_response_time_warning
Se a mdia de falhas por minuto excede esse valor, o Squid manda um aviso de nvel 0 no debug (normalmente gerando uma sada no syslog) de alerta. high_response_time_warningmsec

high_page_fault_warning
Se a mdia de falhas por minuto excede esse valor, o Squid manda um aviso de nvel 0 no debug (normalmente gerando uma sada no syslog) de alerta. high_page_fault_warning timeunits

high_memory_warning
Se o uso de memria excede o valor determinado, o Squid manda um aviso de nvel 0 no debug (normalmente gerando uma sada no syslog) de alerta. high_memory_warning nmero

store_dir_select_algorithm
O Squid pode trabalhar com 2 tipos de algoritmos para escolher entre vrios diretrios de cache: leastload e roundrobin. O padro leat_load. store_dir_select_algorithm tipo_algoritmo

ie_refresh
O Microsoft Internet Explorer at a verso 5.5SP1 tem problemas ao trabalhar com proxy transparente, impossibilitando forar um refresh. Ativando essa opo possvel corrigir parcialmente o problema, fazendo com que todos os pedidos de refresh vindo de um IE seja automaticamente interpretado como forado. A melhor opo, quando possvel, atualizar os clientes. ie_refresh on|off

extension_methods

78

Outras referncias e leituras complementares


http://squid.visolve.com/squid24s1/contents.htm http://br.groups.yahoo.com/group/squidbr/ http://lasdpc.icmc.sc.usp.br/pesquisa/jac/quali.pdf http://directory.google.com/Top/Computers/Software/Internet/Servers/Proxy/Caching/Squid/?tc=1/ http://hermes.wwwcache.ja.net/servers/squids.html http://freshmeat.net/search/?q=squid http://www.poppb.rnp.br/proxy/pal0100.PPT http://squid.visolve.com/squid24s1/externals.htm#authenticate_program http://web.onda.com.br/orso/ncsaplus.html http://www.hacom.nl/%7Erichard/software/smb_auth.html http://www.tldp.org/HOWTO/BandwidthLimitingHOWTO/index.html http://squid.visolve.com/squid24s1/access_controls.htm http://stein.cshl.org/WWW/software/GD/ http://squid.visolve.com/squid24s1/contents.htm http://br.groups.yahoo.com/group/squidbr/ http://lasdpc.icmc.sc.usp.br/pesquisa/jac/quali.pdf http://directory.google.com/Top/Computers/Software/Internet/Servers/Proxy/Caching/Squid/?tc=1/ http://hermes.wwwcache.ja.net/servers/squids.html http://freshmeat.net/search/?q=squid http://www.poppb.rnp.br/proxy/pal0100.PPT This HTML page is (see source)

Outras referncias e leituras complementares

79

You might also like