FPI - Fórum para Provedores de Internet
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
FPI - Fórum para Provedores de Internet


Você não está conectado. Conecte-se ou registre-se

Squid - Entendendo um pouco as configurações

Ir para baixo  Mensagem [Página 1 de 1]

Felipe Marques

Felipe Marques
Especialista
Especialista

Squid

Proxy, do inglês, significa literalmente: procuração.
Ou seja, o proxy trabalha por procuração e refere-se a um software que
atua como gateway de aplicação entre o cliente e o serviço a ser
acessado.

Ele trabalha como uma espécie de pequeno canal interpretando as
requisições e tratando-as como se fosse uma aplicação e repassando-as ao
servidor de destino, como se fosse um novo pedido de requisição.

Enquanto o IPtables (que é um filtro de pacotes, pois o
conceito de firewall é bem mais amplo e envolve uma série de servidores)
analisa individualmente os pacotes, à medida em que são transmitidos da
Camada de Enlace (camada 2 do modelo ISO/OSI) para a Camada de Rede
(camada 3 do modelo ISO/OSI), o Squid analisa as requisições,
pacotes e tráfego na camada 7 (Camada de Aplicação do modelo ISO/OSI),
porém, ambos baseiam-se, fundamentalmente, nas informações do cabeçalho
dos protocolos da camada de transporte (camada 4).

A camada 7 é onde atuam as aplicações, sendo que os navegadores
(browsers) são aplicações e é nos navegadores onde o Squid mais atua.

O Squid é um servidor proxy (ou webproxy e pode ser considerado como um
servidor pertencente a um firewall) que suporta diversos protocolos,
inclusive os da pilha TCP/IP (HTTP, HTTPS, FTP etc).

Ele melhora os tempos de resposta, fazendo cache de requisições
frequentes de páginas Web numa rede de computadores. Pode ser usado para
controle de banda, restrição de sites, usuários, entre outros serviços.

O gateway de aplicação (o popular proxy), ao receber as requisições de
acesso dos usuários e realizar uma segunda conexão externa para receber
estes dados, acaba por esconder a identidade dos usuários nas
requisições externas, oferecendo uma proteção adicional contra a ações
maldosas.

Para segurança maior, é altamente recomendável ter um filtro de pacotes e
um servidor proxy protegendo a rede, no caso, IPtables e Squid.

Além de webproxy, o Squid fornece o serviço de cache. Cache significa a
capacidade de um sistema de armazenar em memória (ou em áreas reservadas
do disco rígido), o conteúdo mais frequentemente acessado com o
objetivo de disponibilizá-lo de forma mais rápida e eficiente a quem o
solicita.

Conceito de swapping

É uma técnica de troca de processos.

Todo sistema operacional armazena, em uma fila em disco, os processos de
longo prazo. Quando há espaço na memória principal (RAM, por exemplo)
os processos são movidos para ela para serem executados e retirados
quando forem concluídos. Ou seja, quando você abre um aplicativo, um
editor de texto, por exemplo, o sistema operacional aloca um espaço na
memória RAM para executá-lo.

Se não há espaço na memória RAM, o sistema utiliza a SWAP (memória
virtual - espaço em disco utilizado como memória RAM) e isso torna o
sistema lento, pois o acesso do processador ao disco rígido é muito mais
lento do que à memória RAM.

No Windows, a SWASP é chamada de "arquivo de paginação". Quando você
fecha o aplicativo, o sistema desaloca esse espaço da memória (RAM ou
swap).

A memória RAM é extremamente importante para a utilização de um cache
proxy. O Squid mantém uma tabela na memória RAM onde guarda as
informações sobre seus objetos.

Se uma parte dessa tabela sofrer swapping, o desempenho do Squid será
bastante prejudicado. Como o Squid é um processo, então qualquer
swapping tornará o programa mais lento. E como o sistema está
constantemente fazendo swapping, é importante saber gerenciar o
"cache_dir" e o "cache_mem" do Squid.

Desempenho do Squid

Em relação ao desempenho do Squid, alguns tipos de ACL requerem a
suspensão da solicitação atual para acessar uma fonte de dados externa.

Alguns tipos de ACLs exigem informações que podem não estar mais
disponíveis para o Squid, e isso requer suspensão do trabalho na atual
solicitação, tendo que consultar alguma fonte externa e retomar o
trabalho quando a informação estiver disponível.

Este é, por exemplo, o caso do DNS, dos autenticadores e dos scripts de
autorização externa. As ACLs podem, assim, ser divididas em ACLs rápidas
[fast] que não necessitam ir às fontes externas e ACLs lentas [slow].

Conhecer o comportamento das ACLs é relevante, porque nem todas as
diretivas suportam todos os tipos de ACLs. Se uma ACL do tipo SLOW tem
que ser verificada e os resultados da seleção não estão no cache, essa
ACL não será correspondida.

O Squid armazena os resultados de pesquisas das ACLs sempre que
possível, porém, as ACLs lentas nem sempre precisam consultar fontes de
dados externas. Em outras palavras, as ACLs do tipo SLOW não são
confiáveis em todas as cláusulas de verificação de acesso.

As ACLs rápidas estão marcadas com [fast] no "squid.conf" e as ACLs
lentas estão marcadas com [slow]. As ACL marcadas com {R} são ACLs de
resposta.

As listas abaixo podem estar incompletas. Para ter a lista completa do
tipo de ACL da sua versão do Squid, consulte o arquivo
"squid.conf.documented".

À propósito, o "squid.conf", além de quilométrico, é de uma confusão sem
tamanho. Se foi apenas um sujeito que elaborou aquilo ali, esse cara
deve ter algum distúrbio mental.

Lista de ACLs rápidas (Squid 3):


  • all (built-in)
  • src
  • dstdomain
  • dstdom_regex
  • myip
  • arp
  • src_as
  • peername
  • time
  • url_regex
  • urlpath_regex
  • port
  • myport
  • myportname
  • proto
  • method
  • http_status {R}
  • browser
  • referer_regex
  • snmp_community
  • maxconn
  • max_user_ip
  • req_mime_type
  • req_header
  • rep_mime_type {R}
  • user_cert
  • ca_cert
Lista de ACLs lentas:


  • dst
  • dst_as
  • srcdomain
  • srcdom_regex
  • ident
  • ident_regex
  • proxy_auth
  • proxy_auth_regex
  • external
  • ext_user
  • ext_user_regex
Cláusulas de acesso rápido:


  • icp_access
  • htcp_access
  • htcp_clr_access
  • miss_access
  • ident_lookup_access
  • reply_body_max_size {R}
  • authenticate_ip_shortcircuit_access
  • log_access
  • header_access
  • delay_access
  • snmp_access
  • cache_peer_access
  • ssl_bump
  • sslproxy_cert_error
  • follow_x_forwarded_for
Cláusulas de acesso lento:


  • http_access
  • adapted_http_access (2.x call this http_access2)
  • http_reply_access
  • url_rewrite_access
  • storeurl_access
  • location_rewrite_access
  • always_direct
  • never_direct
  • cache
Cálculo do cache_dir e do cache_mem

Código:
O "cache_mem" do Squid, especifica a quantidade ideal de memória a ser usada para:

# * In-Transit objects (Objetos em trânsito)
# * Hot Objects (Objetos Hot)
# * Negative-Cached objects (Objetos em cache negativo)

Os objetos em trânsito são objetos que estão sendo buscados em
servidores remotos, enquanto "objetos quentes" são objetos que o Squid
decidiu que são populares o suficiente para que uma cópia seja mantida
na memória, para acelerar o acesso (objetos constantemente solicitados).

E objetos em cache negativo, significam objetos não-cacheáveis, como por
exemplo, logs de mensagens de status HTTP. O cache negativo evita a
repetição de consultas adicionais para objetos que não mais existem.

Os objetos que têm trânsito, têm prioridade, ou seja, quando exceder o
limite da memória, o Squid liberará o espaço dos Hot Objects e dos
Negative-cached Objects para guardar os objetos em Trânsito. Todos os
objetos são armazenados na memória em blocos de 4 KB.

Cálculo do cache_dir e do cache_mem

A tabela do Squid na memória RAM funciona como um índice. Pense no
índice de objetos do Squid como se fosse o índice de páginas de um
livro. Quanto maior o livro, maior o índice e, logicamente, mais tempo
se levará na busca de uma página específica.

Quanto mais objetos o Squid tem armazenado no disco rígido, mais espaço
de memória RAM ele alocará. Porém, isto não significa que você deve
esvaziar o cache do Squid com frequência.

O ideal é calcular bem o "cache_dir" e o "cache_mem" para somente ter
que limpar o cache do Squid em caso de problemas, pois quando o
"cache_dir" lota, o Squid automaticamente apaga os objetos mais antigos e
grava os mais novos.

Uma pequena quantidade de metadados para cada objeto em cache é mantida
na memória. Esta estrutura de dados é conhecida como StoreEntry. São 56
bytes em arquiteturas de 32 bits e 88 bytes em arquiteturas de 64 bits.

Além disso, existe um cache de 16 bytes (MD5) associado a cada
StoreEntry. Isto significa que existem 72 ou 104 bytes de metadados na
memória para cada objeto no cache. Um cache com 1.000.000 de objetos,
portanto, requer 72 MB de memória apenas para os metadados.

O Squid utiliza 10 MB de memória RAM para cada 1 GB no disco em sistemas
de 32 bits e 14 MB de memória RAM para cada 1 GB em sistemas de 64
bits. A FAQ do Squid aconselha utilizar um terço da memória total da
máquina somado às regras anteriores.

Cálculo do "cache_mem" total utilizando 5 GB como exemplo e tomando-se,
por exemplo, 3 gigabytes como total da memória RAM da máquina:

Para sistemas de 32 bits:


  • 10 x 5 = 50 MB
  • 1/3 de 3 GB = 1 GB (1024 MB)
  • 1024 + 50 = 1074 MB
Para sistemas de 64 bits:


  • 14 x 5 = 70 MB
  • 1024 + 70 = 1094 MB
* Lembre que os 5 GB acima utilizados no cálculo, não se referem à
quantidade colocada no "cache_dir" e sim à quantidade que o Squid TEM
armazenado dentro do espaço total destinado ao "cache_dir".

A coisa toda se processa assim: você pode colocar 500 mil GB de
"cache_dir" (se tiver um HD desse tamanho), mas o Squid irá aumentando o
índice de acordo com o que for armazenando no disco e,
consequentemente, ocupará mais espaço na memória RAM. Quando ele
"encher" os 500 mil GB, ele mesmo excluirá os objetos mais antigos do
cache.

O confuso "squid.conf" nos diz que para o "cache_dir" é uma boa prática
utilizar o espaço total da partição destinada para o cache_dir menos
20%.

Para o cálculo efetivo do "cache_dir" e do "cache_mem", é importante
analisar a quantidade de tráfego da sua rede. Basicamente, quanto maior a
rede (número de computadores), maior o tráfego.

Um adendo deve ser feito agora em caso de se utilizar cache de vídeos:
deve ter-se um HD de tamanho generoso e deve-se aumentar o
maximum_object_size para um tamanho ideal.

Donde conclui-se: o tamanho do "cache_dir" é proporcional ao tamanho do
"cache_mem". Quanto mais aumenta o espaço utilizado no "cache_dir" mais
aumenta o espaço utilizado no "cache_mem".

Resumindo

As quantidades colocadas no "cache_dir" e no "cache_mem", são
quantidades totais que irão sendo preenchidas de acordo com o uso do
Squid. Você deve ir "jogando" com o "cache_dir" e com o "cache_mem" se
acontecerem problemas de lentidão ou travamento, e deve verificar se as
ACLs (fast ou slow) não estão causando essa lentidão ou travamento.

A escolha do tamanho ideal para o "cache_dir" e para o "cache_mem" deve
levar em conta o tráfego dentro da rede. Mas lembre-se, colocar muito
"cache_dir" e pouco "cache_mem" poderá tornar o Squid lento e, por
conseguinte, o sistema operacional.

E colocar pouco "cache_dir" e muito "cache_mem", representa um
desperdício de memória e poderá faltar memória para o sistema
operacional e/ou para os outros serviços instalados na máquina, pois o
Squid reserva o espaço do "cache_mem" e poderá causar, de novo, lentidão
ou travamento.

Eu, pessoalmente, acredito que utilizar um "cache_dir" de 5 GB (cinco
gigabytes) é o ideal, quando não se fizer cache de vídeos. Lembre-se da
analogia do índice do Squid: quanto mais páginas no livro, maior o
índice e, consequentemente, mais tempo o Squid leva na busca dentro do
cache.

Porém, polêmicas à parte, torno a repetir, isso depende da quantidade de
tráfego que você tem na sua rede e da configuração de hardware que você
tem disponível.

Uma configuração ideal de máquina (opinião minha) é colocar o sistema
operacional com IPtables, Squid (com Sarg) e DHCP com compartilhamento.

Lógico que aí está incluída a escolha do tamanho do HD, do processador,
da quantidade de memória RAM, da placa-mãe etc; e da disponibilidade
financeira para se montar o hardware. Essa configuração fica melhor até
para gerenciamento do servidor.

Se você utilizar o Squid com Windows (Squid-NT ou WinSquid), deve
colocar uma boa quantidade de memória RAM, pois o sistema operacional
Windows, além de consumir muita memória RAM, não tem um bom
gerenciamento dela.

Configurações mínimas recomendadas com comentários

A seguir, a configuração mínima recomendada, com comentários, para o Squid tirada do "squid.conf" original.

Essa configuração mínima refere-se ao Squid 3 versão 3.3.3, mas serve para versões anteriores, com algumas poucas adaptações.

Código:

#
# Configuração mínima recomendada:
#

# Exemplo de regras permitindo o acesso às redes locais.
# Adapte a lista abaixo às suas redes (internas) onde a navegação
# deve ser permitida:
acl localnet src 10.0.0.0/8  # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16  # RFC1918 possible internal network
acl localnet src fc00::/7  # RFC 4193 local private network range
acl localnet src fe80::/10  # RFC 4291 link-local (directly plugged) machines
#
acl SSL_ports port 443  # https
acl Safe_ports port 80  # http
acl Safe_ports port 21  # ftp
acl Safe_ports port 443  # https
acl Safe_ports port 70  # gopher
acl Safe_ports port 210  # wais z39.50
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280  # http-mgmt
acl Safe_ports port 488  # gss-http
acl Safe_ports port 591  # filemaker
acl Safe_ports port 777  # multiling http
acl CONNECT method CONNECT
#
# Configuração mínima recomendada para permissões de acesso:
#
# Permite que somente localhost acesse o cachemgr:
http_access allow localhost manager
http_access deny manager


# Nega requisições de certas portas inseguras:
http_access deny !Safe_ports


# Nega conexão a outras portas que não sejam SSL seguras:
http_access deny CONNECT !SSL_ports


# Nega acesso dos usuários locais às aplicações web
# rodando no servidor proxy.
http_access deny to_localhost


#
# INSIRA NESTE LOCAL SUAS PRÓPRIAS REGRAS.
# RECOMENDA-SE PRIMEIRO FAZER AS LIBERAÇÕES E DEPOIS OS BLOQUEIOS.
#


# Exemplo de regra permitindo o acesso de suas redes locais.
# Adapte "localnet" na seção ACL para listar as suas redes
# (internas) de IP a partir de onde se deve permitir a navegação
http_access allow localnet
http_access allow localhost


# E, finalmente, negue qualquer outro acesso a este proxy
http_access deny all


# O Squid normalmente escuta na porta 3128
# Para proxy transparente coloque "intercept" depois de 3128
# http_port 3128
http_port 3128 intercept
#
# Especifica a quantidade ideal de memória a ser utilizada. Cuide
# para que não falte memória para o sistema operacional e para os
# outros serviços instalados na máquina.
# Default:
cache_mem 256 MB
#
# Objetos maiores que este tamanho não serão mantidos no cache de
# memória. Deve ter um valor suficiente para guardar objetos
# acessados com frequência na memória de modo a melhorar o
# desempenho, mas suficientemente baixo para manter
# objetos maiores.
#Default:
maximum_object_size_in_memory 512 KB
#
# Diretório de cache. É o número em MB de quanto seu Squid pode
# usar do disco. Sempre que o Squid atingir esse valor ele mesmo
# excluirá os objetos mais antigos do cache.
cache_dir aufs /etc/squid3/var/cache/squid 5120 16 256
#
# heap GDSF : Greedy-Dual Size Frequency
# Otimiza o HIT Ratio de objetos mantendo os arquivos menores e
# populares no cache e obtém uma melhor chance de acontecer um
# HIT. HIT significa que o documento foi encontrado no cache.
# MISS, que não foi encontrado no cache. Um Hit negativo significa
# que foi encontrado no cache, mas não existe.
cache_replacement_policy heap LFUDA
#
# heap LFUDA: Least Frequently Used with Dynamic Aging
# Procura manter no cache arquivos populares, independente do
# tamanho, otimizando assim o Byte HIT em detrimento do HIT.
memory_replacement_policy heap GDSF
#
# Objetos menores do que esse tamanho não serão salvos em disco. O
# valor é especificado em kilobytes, e o padrão é 0 KB, o que
# significa que não existe mínimo.
#Default:
minimum_object_size 0 KB
#
# Limite do tamanho dos objetos armazenados no disco.
# Este tamanho é usado pelo cache_dir. O valor é especificado em
# bytes. Se você deseja obter uma alta taxa de acerto em BYTES,
# você deve aumentar este valor. Se você quiser aumentar a taxa de
# acerto mais do que poupar largura de banda você deve deixar este
# valor baixo.
# NOTA: se estiver usando a política de substituição LFUDA você
# deve aumentar este valor para maximizar a taxa de acerto do byte
# hit LFUDA!
#Default:
maximum_object_size 4 MB
#
# Os padrões são 90% e 95%. Se você tem um grande cache, 5% pode
# representar centenas de MB. Se este for o caso, você pode querer
# definir números mais próximos.
#Default:
cache_swap_low 90
#Default:
cache_swap_high 95
# Arquivos de log das requisições dos clientes.
#Default:
access_log daemon:/etc/squid3/var/logs/access.log squid
#Default:
cache_log /etc/squid3/var/logs/cache.log
#
# Por padrão o Squid deixa os arquivos principais no diretório de
# onde foi iniciado. Deixe coredump no primeiro diretório de
# cache.
coredump_dir /etc/squid3/var/cache/squid

# Adicione qualquer uma das suas próprias entradas refresh_pattern
# acima destas:
refresh_pattern  ^ftp:               
    1440        20%       
  10080
refresh_pattern  ^gopher:               
 1440
        0%            1440

refresh_pattern  -i  (/cgi-bin/|\?)            0       
  0%            0
refresh_pattern  .               
 
              0     
    20%          4320
#
# Coloque aqui o e-mail do administrador.
# É para este endereço que os e-mails serão enviados quando o
# cache morrer.
#Default:
# cache_mgr webmaster
#Default:
httpd_suppress_version_string off # suprime a versão do Squid
visible_hostname nome # Cria um nome para o Squid.
#
# Diretório que contém as páginas de erros personalizadas que
# serão mostradas na página que aparece quando há um bloqueio.
# Você deve criar o diretório e indicar o caminho. Se esta
# opção for usada irá desabilitar o suporte multi-língua
# das páginas de erro.
#error_directory /usr/share/squid3/errors/arquivo

Fonte:http://www.vivaolinux.com.br/artigo/Squid-Entendendo-um-pouco-as-configuracoes?pagina=1

Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos