Implementação de um proxy/cache para ganho de conexão

Aqui descreverei o processo de implementação de um proxy/cache como solução para melhor desempenho de navegação pela internet. Para tal foram usados os recursos oferecidos pela dobradinha Squid + IPTables. O serviço foi testado em ambiente de produção e o resultado muito satisfatório.

[ Hits: 104.774 ]

Por: Perfil removido em 27/10/2006


Instalação e configuração do Squid



Para instalar o Squid no Debian, basta executar o seguinte comando:

# apt-get install Squid

Será criado o diretório /etc/squid, que é onde ficam suas configurações.

O arquivo de configuração do Squid é o /etc/squid/squid.conf, edite-o com um editor de texto. No meu caso usei o mcedit.

Iremos editar os seguintes opções:
  • http_port - Essa linha irá determinar a porta onde o serviço será utilizado, o default é 3128;
  • cache_mem - Essa linha serve para você determinar quanto em MB você quer que o Squid armazene em cache dos sites que foram acessados;
  • cache_dir - Nesta configuração, depende do que você fez lá em cima e onde o cache vai ser guardado.

Configuração do Squid:

# Conf do squid para a rede 192.168.1.0/24
# Porta padrão
http_port 3128
visible_hostname gateway.suaempre.com.br
# Memória utilizada para objetos em trânsito - Não mexer
cache_mem 64 MB
maximum_object_size_in_memory 10 MB
maximum_object_size 10 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
# Onde será armazenado o cache do squid
# O valor 1000 indica a quantidade em Mb que o cache do squid irá utilizar. Como podem ver, criamos 7 partições de cache com 2Gb cada uma. Você adapta pro tamanho do seu HD.

cache_dir ufs /cache/squid1 3000 16 256
cache_dir ufs /cache/squid2 3000 16 256
cache_dir ufs /cache/squid3 3000 16 256
cache_dir ufs /cache/squid4 3000 16 256
cache_dir ufs /cache/squid5 3000 16 256
cache_dir ufs /cache/squid6 3000 16 256
cache_dir ufs /cache/squid7 3000 16 256

cache_access_log /var/log/squid/access.log
error_directory /usr/share/squid/errors/Portuguese
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
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 Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

# Aqui você irá definir o IP da sua rede interna
acl redelocal src 192.168.1.0/24
http_access allow redelocal
http_access allow localhost
http_access deny all

# Proxy Transparente
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

Configuração do gateway


É necessário configurar o gateway para que todas as conexões na porta 80 vindas da rede 192.168.1.0/24 sejam encaminhadas para a porta 3132 do Squid. Usaremos o IPtables para isso.

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F

iptables -t nat -F

iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p udp --dport 80 -j REDIRECT --to-port 3128

Levaremos em conta que o gateway já esta configurado para fazer o roteamento entre as duas redes, a 192.168.1.0 da eth0 para a do modem na eth1.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Cenário atual
   3. Instalação e configuração do Squid
   4. Considerações finais
Outros artigos deste autor

VPN com openVPN no Slackware 11

Instalando o Slackware sem sofrimento (parte 2)

Criando aplicação para detectar informações do sistema em Kylix

Verificando a temperatura do HD no Slackware

Deixando o Gnome bonitão em qualquer distribuição

Leitura recomendada

Configurando Squid para liberação de messenger em horário específico, dentre outros

Mandriva 2006 - Configurando servidor proxy transparente completo

Proxy transparente com Squid, com controle de banda e bloqueio por horários

Squid autenticando em Windows 2003 com msnt_auth

Gerenciando relatórios do SARG

  
Comentários
[1] Comentário enviado por juliaojunior em 27/10/2006 - 17:31h

gostei do artigo. vou ler com mais calma.

[2] Comentário enviado por bfmano em 27/10/2006 - 19:15h

Brother blz?
Então poderia me explicar o pq dessa forma de cache:

cache_dir ufs /cache/squid1 3000 16 256
cache_dir ufs /cache/squid2 3000 16 256
cache_dir ufs /cache/squid3 3000 16 256
cache_dir ufs /cache/squid4 3000 16 256
cache_dir ufs /cache/squid5 3000 16 256
cache_dir ufs /cache/squid6 3000 16 256
cache_dir ufs /cache/squid7 3000 16 256


Se em vez disso, eu fizesse assim:

cache_dir ufs /cache/squid 24000 16 256

Qual a diferença?
dividindo terei mais desempenho no cache ??
Vlw
#BfManO# - http://bfmano.dbconf.com.br

[3] Comentário enviado por shin_ragnarok em 28/10/2006 - 16:01h

Olá! parabéns pelo artigo. Minha dúvidas são as seguintes:

por que porta UDP pra porta 80????

e como o amigo acima:

pra que:

cache_dir ufs /cache/squid1 3000 16 256
cache_dir ufs /cache/squid2 3000 16 256
cache_dir ufs /cache/squid3 3000 16 256
cache_dir ufs /cache/squid4 3000 16 256
cache_dir ufs /cache/squid5 3000 16 256
cache_dir ufs /cache/squid6 3000 16 256
cache_dir ufs /cache/squid7 3000 16 256

?????


JYANA!

[4] Comentário enviado por balani em 28/10/2006 - 23:33h

Cara, parabens pelo artigo, esse esquema do cache ficou louco, mais só uma duvida, como isso poderia dinamisar as conexões?.

[5] Comentário enviado por removido em 29/10/2006 - 15:44h

E uma quetaão do de Opção:

cache_dir ufs /cache/squid1 3000 16 256
cache_dir ufs /cache/squid2 3000 16 256
cache_dir ufs /cache/squid3 3000 16 256
cache_dir ufs /cache/squid4 3000 16 256
cache_dir ufs /cache/squid5 3000 16 256
cache_dir ufs /cache/squid6 3000 16 256
cache_dir ufs /cache/squid7 3000 16 256

ou

cache_dir ufs /cache/squid 24000 16 256

[6] Comentário enviado por removido em 29/10/2006 - 15:48h

balani,

Quando vc tem varios usuários com acesso a internet chega um certo ponto do dia que a internet fica intransitavel. O squema de um cache/squid e para liberar banda na rede para outras funçoes.

Quando vc acessa um site varias vezes esse sie e baixado para o Cache do squid para qunado for feita uma nova requisição ele acessar primeiramento o cache do proxy.

[7] Comentário enviado por bfmano em 30/10/2006 - 18:59h

Tranquilo mano!!
Gosto e gosto. hehe

http://bfmano.dbconf.com.br

mas no mais ta massa o tuto!

[8] Comentário enviado por aprendiz_ce em 30/10/2006 - 22:24h

bs.castro,

Por gentileza me tire uma dúvida: Qual a forma correta de apagar os arquivos de "cache", que são criados por padrão no ato da instalação do SQUID? Quero saber disso para que eu possa utilizar conforme está no artigo.

Parabéns pelo seu artigo, obrigado pela atenção e aguardo retorno.

[9] Comentário enviado por latino em 01/11/2006 - 20:35h

bs.castro.......eu me deparei com um problema onde eu trabalho ......pelo fato da minha rede ser DHCP.............estou começando a trabalhar com servidores proxy..........e gostaria de saber se vc poderia me dar algumas dicas em relação a configuração do squid.conf......................ou seja o q tenho q incluir nesse script para fazer o bloqueio por mac address............vlw cara..........ateh

[10] Comentário enviado por removido em 03/11/2006 - 21:01h

Latino, tem um artigo do usuário caduardo que esplica bem a sua necessidade:
dê uma olhada?

link
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=605


[11] Comentário enviado por removido em 03/11/2006 - 21:12h

mardonio,

Caso vc for utilizar conforme o arquivo tera que fazer algumas modificções, lembre disso. E bom ter um pouco de conhecimento se não pode babar sua rede.

para limpar o cache no squid primeiramente vc tem que para o serviço e depois
De o comando:
squid -z

e depois configure novamente.
espero de ajudado

[12] Comentário enviado por bruno_artur em 09/11/2006 - 23:05h

como determino o tempo que uma pagina fica e cache até ser atualizada novamente?

[13] Comentário enviado por removido em 14/11/2006 - 08:42h

Esse e o padão de refresh do squid. ele verifica no servidor da pagina origirral se teve alguma mudança.

refresh_pattern . 0 2% 4320

[14] Comentário enviado por cytron em 14/11/2006 - 19:13h

ATENÇÃO:

Depois de configurar o squid vai dar erro ao navegar, vai dizer: "Invalid Request", isso acontece na versão 2.6 ou superiror, pois foi mudado um detalhe na configuração.

Na tag http_port você tem que acrescentar o termo transparent para que o squid aceite a regra de redirecionamento de portas feito pelo iptables.

Deve ficar assim:

http_port 3128 transparent

Espero que todos vejam isso, pois não vou fazer um tutorial só pra falar isso né!?!!! hehehe!

[15] Comentário enviado por gzanatta00 em 04/04/2007 - 20:09h

amigo assim eu tenho dois adsl junto com o meu link, mas quando eu faco isso, todos os meus clientes caem pra o link e os adsl ficam desativados, e tbem tenho 2 rotas no servidor a 10.1.1.1 e a 10.2.2.1, esperimentei deixar somente o acl redelocal src 10.1.1.0/24, e colocar os clientes da 10.2.2.0 nessas rotas do adsl, mas nao adianta, fica tudo no link direto....entendeu?
consegue resolver isso pra min.....a e rotiei somente o 10.1.1.0 para a porta 3128 e nao foi tbem

[16] Comentário enviado por papel em 22/01/2008 - 18:21h

Cara eu tenho um proxy aki na empresa, o cenário é igualzinho. Tô querendo colocar conexão ADSL, como eu posso configurar meu proxy p/ q isso aconteça. Ñ estou conseguindo compartilhar a conexão ADSL.
Vlw!

[17] Comentário enviado por a.talon em 03/09/2008 - 09:05h

Poxa cara q dica 10 vc foi o unico q explicou passo a passo como configura o squid peguei alguns manuais mas não obtive muito sucesso parabéns

[18] Comentário enviado por rafaelcavalcanti em 26/02/2009 - 04:26h

meu squid continua dando Invalid Request, mesmo com o http_port 3128 transparent

[19] Comentário enviado por highlanderlanhou em 02/08/2009 - 14:08h

Gostei do Tutorial, mas gostaria de saber se você pode me ajudar a criar este proxy pra minha lan house. Aqui nós utilizamos Ubuntu 9.04 no servidor e nas estações, a Net é Speedy de 2MB e o modem o SpeedTouch esta roteado é IP Dinamico. Segue abaixo:

IP do Modem 192.168.1.1
IP do Servidor 192.168.1.99 e vai até 192.168.1.116
Aqui o Download é liberado.
O perfil de acesso dos meus clientes é:

1- Orkut
2- MSN
3- Youtube
4- FrostWare(baixar musicas mp3)

Por favor seria possível um outro tutorial passo-a-passo? Após criar o Proxy como configuro nas estações?

Fico no aguardo!

Atenciosamente.

Sidnei Ap. Nobrega

[20] Comentário enviado por redeicone em 22/09/2009 - 15:31h

Ola, Pessoal sou novo aki e tbm no mundo do linux! gostaria muito da ajuda de vcs pois estou querendo montar um servidor proxy-cache pra compensar a banda da minha net.. em breve estarei montando um provedor com um link 1mb full e como sou novo gostaria de umas opnioes de quem ja e esperiente na area e tbm gostaria de saber se e bom eu montar mesmo o servidor de cache pra da uma ajuda a mais na capacidade de clientes.

eu estou usando o slackware 12.1 com o Myauth 3 e ele ja tem o sistema de cache.. mas como sou novo eis a pergunta.. alem do sistema de cache do Myauth e preciso configurar o proxy ou so o Myauth ja basta. pelo que eu percebi ele esta com o proxy-cache funcionando.. so vou postar aki o meu squid.conf pra vcs analizarem e me dizer se esta tudo correto ou precisa alterar algo nele.

achei estranho ele esta usando a porta 8080 mas como sou novo.. me dizem o que vcs acham ou o que devo altarar.

se puder pesso alguem que remonte as principais linhas e poste aki pra mim so colocar no meu squid. e testar.

minha maquina Servidor e: AMD ATLHON 64 - 2GB MEMORIA - 160HD SATAII - PLACA MAE ASUS - PLACA DE VIDEO 128 GFORCE MX4000 - FONTE 500W REAL - 2PLACA DE REDE


http_port 8080 transparent
icp_port 0

hierarchy_stoplist cgi-bin ?
acl sites_cache dstdomain .bibliaonline.com.br
acl video_cache dstdomain .youtube.com video.google.com .llnwd.net .dailymotion.com .googlevideo.com
acl google_earth dstdomain kh.google.com
acl QUERY urlpath_regex cgi-bin \?
acl flashvideo urlpath_regex .swf .flv .avi .mov
no_cache allow video_cache
no_cache allow sites_cache
no_cache allow google_earth
no_cache allow flashvideo
no_cache deny QUERY

cache_mem 64 MB
cache_swap_low 90
cache_swap_high 95

maximum_object_size 500 MB
#maximum_object_size 24 MB
#maximum_object_size 16 MB
#maximum_object_size 8 MB
#maximum_object_size 4 MB
#maximum_object_size 2 MB

minimum_object_size 0 KB
#maximum_object_size_in_memory 128 KB
maximum_object_size_in_memory 64 KB
#maximum_object_size_in_memory 64 KB
#maximum_object_size_in_memory 32 KB

ipcache_size 1024
ipcache_low 90
ipcache_high 95

fqdncache_size 1024

# lru, heap GDSF, heap LFUDA, heap LRU
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF

cache_dir aufs /var/cache/squid 10000 128 128

#cache_dir aufs /var/cache/squid 40000 512 128
#cache_dir aufs /var/cache/squid 30000 512 128
#cache_dir aufs /var/cache/squid 10000 256 128

cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log

#cache_access_log none
#cache_log none
#cache_store_log none

mime_table /etc/squid/mime.conf

pid_filename /var/run/squid.pid

debug_options ALL,1

log_fqdn off

# cache_dns_program /usr/libexec/dnsserver
refresh_pattern ^http://.*\.youtube\.com 10080 90% 999999 ignore-no-cache
refresh_pattern ^http://.*\.bibliaonline\.com\.br.* 10080 90% 999999 ignore-no-cache
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280

acl all src 0.0.0.0/0.0.0.0

# coloque susa redes validas aqui
acl internet src 200.1.2.0/30

# redes invalidas, nao tem perigo pois nunca virao da internet
acl intranetac src 192.168.0.0/16 10.0.0.0/8
acl intranetb src 172.16.0.0/12

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 82
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
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

#http_access allow manager localhost
#http_access deny manager

#http_access deny !Safe_ports
#http_access deny CONNECT !SSL_ports

http_access allow localhost
http_access allow internet
http_access allow intranetac
http_access allow intranetb
http_access deny all


cache_mgr myauth.com.br

cache_effective_user squid
cache_effective_group squid

visible_hostname localhost

#httpd_accel_port 80
#httpd_accel_host virtual
#httpd_accel_single_host off
#httpd_accel_with_proxy on
#httpd_accel_uses_host_header on
#httpd_accel_no_pmtu_disc off


#dns_testnames registro.br
# icon_directory /usr/local/squid/share/icons
# error_directory /usr/local/squid/share/errors/Portuguese

#coredump_dir /var/cache/squid

# configuracoes SNMP
#snmp_port 161

acl snmppublic snmp_community public
snmp_access allow snmppublic localhost
snmp_access deny all

snmp_incoming_address 0.0.0.0
snmp_outgoing_address 255.255.255.255

#zph_tos_local 8
#zph_tos_peer 0
#zph_tos_parent off

[21] Comentário enviado por leandrobrunoo em 26/02/2010 - 11:39h

gostaria de saber oq significa isso

root@bjcia:/cache# service squid restart
* Restarting Squid HTTP proxy squid 2010/02/26 11:39:02| WARNING: Very large maximum_object_size_in_memory settings can have negative impact on performance

[22] Comentário enviado por cytron em 27/02/2010 - 11:15h

Colocou um valor muito alto em maximum_object_size_in_memory

Não é indicado, pois vai lotar a ram muito rápido.

Coloque valores baixos, como 32 KB


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts