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.
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.
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.
[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.
[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
[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
[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!
[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 é:
[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
#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
[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