Squid é um servidor proxy e cache que permite reduzir a utilização do link. Podemos usar o Squid para várias funções: autenticação de usuários, restrições de acesso, auditoria, cache etc. Nesse abordaremos a instalação e configuração de forma fácil e funcional do Squid para WEB cache.
No
Fedora sua instalação pode ser feita através do
yum:
# yum install squid
O arquivo de configuração do Squid pode ser encontrado em
/etc/squid/squid.conf. Para iniciar e parar o servidor Squid, use os comandos:
# service squid start
# service squid stop
Para criar os diretórios swap:
# squid -z
Mas antes disso, certifique-se de ter configurado o Squid e de ter criado os diretórios swap.
5.1. Configuração do WEB Cache
Edite o arquivo
named.conf e deixe-o como abaixo (comentei ele para fácil entendimento):
# vim /etc/squid/squid.conf
# squid.conf
# Andrio P. Jasper
# mascaraapj@gmail.com
#-----------------------------------------------
# opções para suportar proxy transparente
# não esquecer de trocar a faixa de ip pela da sua rede
http_port 172.167.0.1:3128 transparent
#diz ao Squid que ele deve buscar os dados diretamente na origem
hierarchy_stoplist cgi-bin ?
#diz ao Squid para não armazenar em cache o conteúdo dos CGIs
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
#memória usada pelo squid
cache_mem 128 MB
#esvazia o cache
cache_swap_low 75
cache_swap_high 78
#tamanho máximo para gravação no cache Squid
maximum_object_size 150 MB
#tamanho mínimo para gravação no cache Squid
minimum_object_size 0 KB
# Tamanho máximo dos objetos mantidos em memória.
maximum_object_size_in_memory 2048 KB
# política de substituição dos objetos quando se esgota o espaço destinado ao cache em disco.
# lru: mantem os objetos referenciados recentemente.
# heap GDSF: otimiza o "hit rate" por manter objetos pequenos e
# e populares no cache, guardando assim um numero maior de objetos.
# heap LFUDA: otimiza o "byte hit rate" por manter objetos populares
# no cache sem levar em conta o tamanho. Se for utilizado este, o
# maximum_object_size devera ser aumentado para otimizar o LFUDA.
cache_replacement_policy heap LFUDA
#define a política de substituição dos objetos em memória
#da mesma forma como o cache_replacement_policy
memory_replacement_policy heap GDSF
#determina onde e como será feito o cache e o tamanho
#a cada 1GB (1024), deve separar 15mb de memória
cache_dir aufs /var/spool/squid 10000 64 128
# Log de requisições.
cache_access_log /var/log/squid/access.log
# Log de objetos guardados. Pode ser desativado
cache_store_log none
# Log do cache.
cache_log /var/log/squid/cache.log
#Pode ser usada para especificar uma lista de servidores DNS no
#lugar no /etc/resolv.confdns_nameservers Endereço_IP
#não esquecer de trocar a faixa de dns pela da sua faixa
# caso tenha um servidor dns instalado na mesma máquina, deixe assim: dns_nameservers 127.0.0.1
dns_nameservers 127.0.0.1
dns_nameservers 201.10.120.3
#TAG's referentes ao processo de autenticação
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
## Aumentando o tempo do CACHE WINDOWS UPDATE
refresh_pattern -i w?xpsp[0-9]\.microsoft\.com/ 0 100% 20160 reload-into-ims
refresh_pattern -i w2ksp[0-9]\.microsoft\.com/ 0 100% 20160 reload-into-ims
refresh_pattern -i windowsupdate.com/.*\.(cab|exe|dll|msi) 0 100% 43200 reload-into-ims
refresh_pattern -i microsoft.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-into-ims
refresh_pattern -i download\.macromedia\.com/ 0 100% 20160 reload-into-ims
#configuram como serão tratados os tempos de vida dos objetos no cache
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 20% 2280
refresh_pattern (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
#O cache pode ser configurado para continuar com o download de requisições abortadas
quick_abort_min -1 KB
quick_abort_max 0 KB
quick_abort_pct 100%
#Tempo de vida para resultados mal sucedidos de resolução DNS
negative_ttl 2 minutes
#Tempo de vida para resultados bem sucedidos de resolução DNS, não deixe inferior a 1 minuto
#Padrão de 6 horas
positive_dns_ttl 5 minutes
#Alguns clientes podem parar o envio de pacotes TCP enquanto deixam o recebimento em aberto
#Algumas vezes o Squid não consegue diferenciar conexões TCP totalmente fechadas e parcialmente fechadas
#Mudando essa opção para off fará com que o Squid imediatamente feche a conexão quando a leitura do socket
#retornar "sem mais dados para leitura"
half_closed_clients off
read_timeout 60 seconds
pconn_timeout 120 seconds
#Estas ACL's fazem parte da configuração padrão do Squid e é o mínimo
#recomendável para seu uso não sendo necessária nenhuma alteração nas mesmas
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSl_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
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
#não se esquecer de trocar a faixa de ip pela da sua rede
acl rede src 172.167.0.0/255.255.0.0
#Definição de regras de acesso referentes as ACL's da parte da configuração
#padrão do Squid, também não é necessária nenhuma alteração, portanto apenas
#acrescente as suas próprias regras a estas;
http_access allow localhost
http_access allow rede
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
#Ela diz ao Squid que se nenhuma das regras anteriores for
#aplicada o acesso será então negado
http_access deny all
# Usuário sob o qual ira rodar o Squid.
cache_effective_user squid
# Grupo sob o qual ira rodar o Squid.
cache_effective_group squid
#Mostra o nome do servidor configurado nas mensagens de erro
visible_hostname servidor.lgm.farolbr
#Desligando essa variável, faz com que o Squid descarregue a memória não
#utilizada, chamando uma função interna free() do Squid
memory_pools off
#Por padrão o Squid irá incluir o ip ou nome da sua máquina nas solicitações HTTP.
#Para o site visitado não interessa para ele qual seu ip interno, o importante é que você visitou o site.
forwarded_for off
#mensagens de erro em Português
error_directory /usr/share/squid/errors/Portuguese
#essa opção como off mostra no log o endereço completo.
strip_query_terms off
ie_refresh on
# Resolve um problema com conexões persistentes que ocorre com certos servidores,
detect_broken_pconn on
#o Squid irá trabalhar com 2 requisições paralelamente
pipeline_prefetch on
Edite o script do firewall rc.local (
/etc/rc.d.rc.local) e adicione a regra de redirecionamento do tráfego para o Squid. Nosso script ficará da seguinte forma:
# Limpando Regras
iptables -F
iptables -X
iptables -Z
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -F -t nat
iptables -X -t nat
iptables -F -t mangle
iptables -X -t mangle
echo " Limpando Regras ..............................[ OK ]"
# Definindo Política Padrão
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
echo " Alterando política padrão.....................[ OK ]"
# Redireciona todo tráfego http(80) que não seja para a conectividade social, para o Squid (3128),
iptables -t nat -A PREROUTING -i eth1 -p TCP ! -d 200.201.0.0/16 --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth1 -p UDP ! -d 200.201.0.0/16 --dport 80 -j REDIRECT --to-port 3128
# Compartilha Conexão
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo "1" > /proc/sys/net/ipv4/ip_forward
5.2. Dicas SQUID
Para ver quem está acessando a web através do Squid em tempo real (IP da máquina, site acessado e status do acesso), digite no terminal:
# tail -f /var/log/squid/access.log | awk '{print$3 " - " $4 " - " $7 }'
Para limpar o cache, digite os passos abaixo no terminal:
# service squid stop
# cd /var/spool/squid
# rm -rf *
# squid -z
# service squid start
5.3. Links extras