Postado originalmente por
darklinux3
Olá Pessoal,
Depois de muitas tentativas de fazer funcionar o squid3 em paralelo com mikrotik e ver os relatorios do Sarg de cada cliente da minha rede, fazendo cache full tanto com o thunder cache quanto com a directiva "X-Cache: HIT" do squid. A algum tempo consegui chegar a uma solução excelente. Acredito que muitos estão tentando buscar algo parecido e para contribuir com o forum onde sempre consegui muitas informações vou postar minha solução.
Primeiro vamos definir a topologia :
1)Mikrotik 3.15
ether1(clientes) =
172.25.1.100/24
ether2(proxy) =
192.168.2.1/30
ether3(Internet)= 200.200.xxx.xxx
2)Debian 5.0 Lenny
eth0 =
192.168.2.2/30
Considerando que o mikrotik esta com a internet a todo vapor, e está fazendo o
masquerade para a rede dos clientes
172.25.0.0/16 e para a rede do Debian
192.168.2.0/30.
Referencia:
Linux: Proxy em paralelo com o mikrotik [Artigo]
No debian configure os endereços de IP
192.168.2.2/30, gateway e DNS
192.168.2.1.
Referencia:
How to Assign an IP Address on a Linux Computer - wikiHow
No mikrotik, menu ip firewall, marque a rota que vem dos clientes com destino a porta 80 de qualquer endereço:
ip firewall mangle chain=prerouting action=mark-routing new-routing-mark=proxy-flow dst-port=80 passthrough=no protocol=tcp src-address=172.25.0.0/16
No menu ip route crie uma rota redirecionando o fluxo marcado(proxy-flow) e mostrando que o gateway é o servidor debian :
ip route add routing-mark=proxy-flow gateway=192.168.2.2
Compartilhe a internet no debian também:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Até aqui, a navegacao deve ser testada atraves da interface dos clientes, e deve funcionar normalmente, pois o compartilhamento foi ativado no servidor debian.
Como o proximo passo é instalar o squid3 vamos adiantar a regra para o proxy na porta 3128
transparente.
iptables -t nat -A PREROUTING -i eth0 -s 172.25.0.0/16 -p tcp --dport 80 -j REDIRECT --to-ports 3128
Vamos instalar o squid3, para isso abra o arquivo do apt sources.list e acrescente um repositorio:
deb
ftp://ftp.br.debian.org/debian stable main contrib non-free
deb-src
ftp://ftp.br.debian.org/debian stable main contrib non-free
Atualizamos os repositorios do apt e instalamos o squid3. (aqui instalei também o bind9 pois estava tendo problemas de dns e o thunder nao estava funcionando direito):
apt-get update
apt-get install squid3 apache2 php5 php5-cli bind9 sarg
#vim /etc/resolv.conf
altere o arquivo para o endereço da sua interface neste caso
192.168.2.2.
Baixe o thunder versão 2.1
http://ecache.svn.sourceforge.net/vi...ar.gz?view=tar
Descompacte os arquivos no diretorio /etc/squid3 e siga as instrucoes do arquivo INSTALL_PTBR.
Seu squid.conf deve semelhante a este.
http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
cache_mem 256 MB
cache_swap_low 90
cache_swap_high 95
maximum_object_size 20096 KB
minimum_object_size 0 KB
maximum_object_size_in_memory 10000 KB
cache_dir ufs /var/spool/squid3/cache1 2000 16 256
access_log /var/log/squid3/access.log squid
cache_log /var/log/squid3/cache.log
cache_store_log /var/log/squid3/store.log
hosts_file /etc/hosts
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
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 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
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
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 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny purge
http_access allow purge localhost
http_access deny manager
http_access allow manager localhost
acl our_networks src 192.168.0.0/16
url_rewrite_children 20
acl store_rewrite_list dstdomain .avast.com .avg.com .windowsupdate.com .grisoft.com avgate.net .googlevideo.com .globo.com .mais.uol.com.br .terra.com .redtube.com .ytimg.com .pornhub.com .tube8.com .eset.com .4shared.com .xvideos.com .kaspersky-labs.com .geo.kaspersky.com .microsoft.com .youtube.com .orkut.com
url_rewrite_access allow store_rewrite_list
url_rewrite_access deny all
url_rewrite_program /etc/squid3/loader.php
acl localcache dstdomain 192.168.2.2
acl localcache2 dstdomain .orkut.com .avast.com .avg.com .windowsupdate.com .grisoft.com .avgate.net .googlevideo.com .globo.com .mais.uol.com.br .redtube.com .ytimg.com .pornhub.com .tube8.com .eset.com .4shared.com .xvideos.com .kaspersky-labs.com .geo.kaspersky.com .microsoft.com
cache deny localcache localcache2
http_access allow localhost
http_access deny all
http_reply_access allow all
icp_access allow all
cache_mgr [email protected]
cache_effective_user proxy
cache_effective_group proxy
visible_hostname myhost
error_directory /usr/share/squid3/errors/Portuguese
coredump_dir /var/spool/squid3
Depois de dadas todas as permissões para os arquivos e diretorios dos thunder conforme o arquivo INSTALL_PTBR. Reinicie o squid:
#invoke-rc.d squid3 restart
Para configurar o sarg:
crie um diretorio dentro de /var/www/ caso nao exista:
#mkdir /var/www/squid-reports
Depois abra o arquivo:
#vim /etc/squid/sarg.conf
Verifique as linhas e altere se necessario:
output_dir /var/www/squid-reports
access_log /var/log/squid3/access.log
Salve o arquivo e rode o sarg no console
Aqui deve estar tudo funcionando.
NOTA: As instancias do thunder alem de armazenarem os arquivos em um diretorio diferente do cache do proprio squid, nao compartilham os mesmos endereços de memoria alocados pelo squid definidos no squid.conf.
Espero ter ajudado
Abs!