Cache full com Mikrotik + Squid Linux Debian (Deprecated)
A idéia é a seguinte, fazer o Mikrotik buscar o cache do servidor linux, e o que já estiver em cache não fazer o controle de banda.
Tem duas maneiras, umas o MK busca o cache do linux e nos log pega o ip do MK, e outra o pega os ips dos clientes. O segredo ta na hora do nat no MK, e colocar um rota no linux.
INTALANDO SQUID 2.6 + zph Debian 4
No D4 os squid é o 2.6 qual nao possie o patch Zero Penalty Hit (ZPH), vamos ter q compilar o bixinho.
Primeiramente vamos instalar os pacotes p/ nao ter erro na hora da “compilada”.
Comandos:
# apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential libselinux1 \
libselinux1-dev debhelper linuxdoc-tools libcap-dev
# cd /usr/src
# apt-get source squid
# apt-get build-dep squid
# wget -c http://zph.bratcheda.org/squid-2.6.STABLE2-ToS_Hit_ToS_Preserve.patch
# cd squid-2.6.5
# patch -p1 < ../squid-2.6.STABLE2-ToS_Hit_ToS_Preserve.patch
# dpkg-buildpackage -rfakeroot -uc -b
# cd ..
# dpkg -i squid*
Sem muita frescura já estamos com o squid 2.6 + zph instalado
INTALANDO SQUID 2.7 Debian 5
No D5 não tem galho, o zph já vem na versão 2.7 do squid
Comandos:
apt-get install squid
Feito!
Configurando o squid.conf
Adicione as seguintes linhas no seu conf
# Para squid 2.6
# MARCAR PACOTES TOS
zph_tos_local 0x30
zph_tos_peer 0
zph_tos_parent off
zph_preserve_miss_tos on
# Para squid 2.7
# MARCAR PACOTES TOS
zph_mode tos
zph_local 0×30
zph_parent 0
zph_option 136
Bom para entender melhor a rede e não fazer nenhuma besteira.
Digamos q eu tenho um Debian configurado da seguinte maneira
Interface eth0: 192.168.0.100 (internet)
Interface eth1: 169.254.0.2 essa ligo no MK (cabo crossover).
Ai você poderia ter só uma interface, poderia ligar no MK e dar internet p/ ele e depois devolver p/ o MK. Prefiro com 2 interface mesmo.
E em nosso MK temos a seguinte forma
ether 1 -> internet 192.168.0.200/24
ether 2 -> conexao linux 169.254.0.1/30
ether 3 -> clientes 10.0.0.0/8
Vou por aqui um modelinho de squid.conf q uso no 2.6 transparente
http_port 3128 transparent
visible_hostname www.seusite.com.br
cache_mgr gerentederedes@seusite.com.br
error_directory /usr/share/squid/errors/Portuguese
cache_mem 8 MB
maximum_object_size_in_memory 64 KB
maximum_object_size 50 MB
minimum_object_size 0 KB
cache_swap_low 80
cache_swap_high 85
cache_dir ufs /var/spool/squid 5000 16 256
access_log /var/log/squid/access.log
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
# SEM CACHE
acl NOCACHE url_regex localhost 192.0.0.0/8
no_cache deny NOCACHE
# MARCAR PACOTES MIKROTIK IDENDIFICA
zph_tos_local 0x30
zph_tos_peer 0
zph_tos_parent off
zph_preserve_miss_tos on
#http_access allow all
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
#AQUI VAMOS COLOCAR A CLASSE DOS CLIENTES NO CASO VC QUEIRA PEGAR OS IPS DOS CLIENTES
# OU ENTAO COLOCAMOS O IP DO MK
# CASO PASSE OS IP DOS CLIENTES:
acl mikrotik src 10.0.0.0/255.0.0.0 # USE ESSA!
# CASO PASSE APENAS O IP DO MKIROTIK
acl mikrotik src 169.254.0.1/255.255.255.252 # OU ESSA!
http_access allow mikrotik
http_access allow localhost
# BLOQUEIA O RESTO
http_access deny all
Se você quer que passe os ips dos clientes (10.x.x.x)
adiciona ai junto com seu firewall, routas, em algum lugar p/ iniciar na inicialização.
se não cria um arquivo em /etc/init.d/
Ex:
Comandos:
# vim /etc/init.d/inicializar.sh
Nele coloque:
#!/bin/bash
route add -net 10.0.0.0 netmask 255.0.0.0 gw 169.254.0.1
Comandos:
# /etc/init.d/
# update-rc.d inicializar.sh defaults 80
# chmod 755 inicializar.sh
Feito vai iniciar quando ligar.
Vamos configura o Mikrotik V2 (na 3 é diferente os tos mude p/ 12)
Vamos fazer o direcionamento da porta 80 p/ 3128 não precisa fazer isso no seu firewall do linux. Após vamos marcar os pacotes aquele o q zph marcou, e depois uma queue dizendo p/ ele libera para o cliente sem o controle da sua queue simples.
Comandos:
/ ip firewall nat
add chain=dstnat src-address=10.0.0.0/8 protocol=tcp dst-port=80 action=dst-nat to-addresses=169.254.0.2 to-ports=3128 \
comment=”Direciona para Proxy” disabled=no
Comandos:
/ ip firewall mangle
add chain=postrouting protocol=tcp src-port=3128 tos=48 action=mark-connection new-connection-mark=n-cache passthrough=yes \
comment=”Marca o com e sem TOS” disabled=no
add chain=postrouting protocol=tcp src-port=3128 tos=!48 action=mark-connection new-connection-mark=s-cache \
passthrough=yes comment=”” disabled=no
add chain=postrouting connection-mark=n-cache action=mark-packet new-packet-mark=Cache-Packet passthrough=no \
comment=”Libera cache full” disabled=no
Comandos:
/ queue type
add name=”cache” kind=pcq pcq-rate=4800000 pcq-limit=50 pcq-classifier=dst-address pcq-total-limit=2000
Comandos:
/ queue tree
add name=”CACHE-FULL” parent=global-out packet-mark=Cache-Packet limit-at=0 queue=cache priority=8 max-limit=0 \
burst-limit=0 burst-threshold=0 burst-time=0s disabled=no
E a conectividade social, e o banco do brasil, e o bradesco que não ta funcionando?
ahhhhhhhhhhhh meu Deooos!!!! O q eu faço?
Vamos fazer os ip destes servidores passarem por fora do Proxy, coloque elas antes de todas as regras.
Comandos:
/ ip firewall nat
add chain=dstnat dst-address=200.201.166.0/24 protocol=tcp dst-port=80 action=accept comment=”CONECTIVIDADE SOCIAL” disabled=no
add chain=dstnat dst-address=200.201.173.0/24 protocol=tcp dst-port=80 action=accept comment=”” disabled=no
add chain=dstnat dst-address=200.201.174.0/24 protocol=tcp dst-port=80 action=accept comment=”” disabled=no
add chain=dstnat dst-address=200.219.137.0/24 protocol=tcp dst-port=80 action=accept comment=”IPS NAVEGAM SEM PROXY” disabled=no
add chain=dstnat dst-address=200.252.8.0/24 protocol=tcp dst-port=80 action=accept comment=”” disabled=no
add chain=dstnat dst-address=201.2.207.0/24 protocol=tcp dst-port=80 action=accept comment=”” disabled=no
add chain=dstnat dst-address=200.196.226.0/24 protocol=tcp dst-port=80 action=accept comment=”” disabled=no
add chain=dstnat dst-address=201.24.72.0/24 protocol=tcp dst-port=80 action=accept comment=”” disabled=no
add chain=dstnat dst-address=78.46.46.139 protocol=tcp dst-port=80 action=accept comment=”” disabled=no
add chain=dstnat dst-address=192.168.0.0/24 protocol=tcp dst-port=80 action=accept comment=”” disabled=no
add chain=dstnat dst-address=10.0.0.0/8 protocol=tcp dst-port=80 action=accept comment=”” disabled=no
Agora quando alguém precisar navegar em um site q não passe pelo proxy, ficou fácil!
Não se esqueça de colocar elas antes de todas as regras.
muito bom 😀
Bom dia!
Primeiramente quero parabenisar pelo tutorial.
Consegui fazer funcionar parcialmente, porque hoje uso mikrotik versao 3.30 em um rb493ah, configurei conforme o tutorial mais adaptando a minha rede atual.
Hoje libero a net para os usuarios via pppoe, mais nao consegui fazer que que o squid pegue os ips dos usuarios pppoe saindo do mikrotik, somente reconhece nos logs os ips do mikrotik.
Vc sabe o que pode ter ocorrido de errado?
Ja faz alguns dias que venho tentando e nada.
Por favor se puder me add no msn
windsonmalveira@transnorte.com.br
Desde ja agradeço amigo.
Tenha um bom dia!
Olá gostaria muito que vc me ajudase a montar um servidor de cache,estou com muitas duvidas,vou deixar meu msn para vc,obrigado.
paulinho_junior987@hotmail.com
Boa noite Rudimar
Segui as instruçoes e aparentemente esta funcionando, Realizei a configuração com o proxy em paralelo ao mk utilizando somente uma eth
utilizei uma rb mkv4.14 onde nesta parte
add chain=postrouting protocol=tcp src-port=3128 tos=48 action=mark-connection new-connection-mark=n-cache passthrough=yes \
comment=”Marca o com e sem TOS” disabled=no
nao e necessario configurar o tos nem existe a opção
e para compĺementar a configuração do mikrotik acrescentei a configuração do post:
http://www.vivaolinux.com.br/artigo/Proxy-em-paralelo-com-o-mikrotik?pagina=5
Como configurei a alguns minutos vejo aue o grafico de tx e rx no mk esta bombamdo nas interface internet e interface proxy e alguns sites ja estao saindo pelo proxy.
Tambem uso Load balance com fail over nesta mesmo mk , e esta tudo funcionando que e uma blz
load balance:
http://blog.lcmm.info/?p=48
Quero agradecer pois apos muito navegar e estudar o assunto foi post foi o ponto final em minhas configuraçoes.
boa noite, preciso de ajuda, com o meu servidor,como fazer o redirecionamento do cache para o meu thunder cache
servidor mikrotik 5.5 link 10.83.228.12/24
local: 192.168.100.254/24
thunder: 10.0.0.254/30
servidor debian thunder cache eth0 ele ta em dhcp 10.83.228.11
eth1 10.0.0.2
Saudações nobre Rudimar! Sou mais um eternamente agradecido pela existencia de seu blog. Segui os passos e está funcionando.
Uma dúvida grandiosa é como fazer para passar os IPs dos clientes. O Squid está recebendo só o IP do Mikrotik.
Grande e sincero abraço.
Como redireciono a porta 80 de um linux para outro linux com lusca e thunder.
https:// nao entra :S
uso mikrotik + freebsd proxy paralelo.
Amigo, preciso de ajuda com o meu thunder cache3 + debian 5, Vc pode me ajudar?
Amigo, bom dia, você já tem o squid.conf atualizado, fez modificacoes do tempo que postou até agora ? Melhorias ?
ola boa noite nesse scrip squid te como faz cache ytube
amigo bom dia!
Não consegui fazer funcionar com essas regras que vc postou. Por favor me adicione no seu msn para que eu possa tirar algumas dúvidas com vc.
frilton@hotmail.com
desde já agradeço.
Pedroso…
Eu gosto de visualizar pelo “Sarg”.
Instala o sarg e apache2;
Depois no navegador acesse o ip da máquina com o squid. Ex.: http://169.254.0.2/squid-reports/
Só não consegui repassar o ip dos clientes, só visualizo (com o sarg) o ip do mikrotik.
Boa noite!
COmo eu sei que está funcionando? Tipo, executei todos os passos sem mensagens de erro… Mas não sei se está ok.
Existe algum meio de testar?
Abraços,
Obrigado
Parabéns!
Funcionou certinho valeu
Olá te passei o meu msn… pq não achei o seu… vc pode me mandar ?
Antecipadamente agradeço,
Carlos Gonzaga
Rudimar
Obrigado pelo contato !!!
Meu msn é o meu carlos.gonzaga@infoshield.com.br !!
Antecipadamente agradeço
Gonzaga
Olá Rudimar
Interessante seu Post, porém gostaria de fazer justamente essa configuração apenas com a versão do Squid 3.. e nas regras do Nat estou algumas duvidas.. Gostaria de saber se já trabalhou com o Squid 3 ?
Antecipadamente agradeço
Gonzaga
Já usei squid3, mas nao fazendo cache full, hj nao utilizo mais cache, apenas na rede interna da empresa qual uso a versao 3, mas nada de diferente… o que vc pretende com o cache full? qlqr coisa add msn, trocamos ideias…
Bom conteudo em seu blog, parabens…
Voce conhece algo que possa trabalhar com cache de videos alem do thunder cache, cache video e supercache, que seja free?
Amigo, eu uso thunder 3, squid 2.7, como faço para deixar os dois a full? Só estou conseguindo o thunder3, abraço.
Olá, amigo fiz as suas regras e deu certo porem tem alguma coisa a ser feito no squid para liberar acesso aos sites em https, pop3, smtp etc. Estou usando o mikrotik e nao consegui redirecionar o trafego desses protocolos por fora do proxy. Tem algum outro script que libere todo o trafego da internet fazendo só cache das paginas?
Nat reversa po, mole mole!!!
Testei suas configurações aqui, usando mikoritk 3.2 com hotspot, os ips real do cliente não registra no log do squid, somente o do mikrotik, será que tem alquma Solução?
Bom dia.
Gostaria se possível que você fosse mais especifico,obrigado.
configura os 4 mk iguais direcionando p/ squid no linux
Gostaria de poder interligar 4 servidores em um unico cache full, já tenho o cache e tambem os servidores funcionando, como faço?
Se vc puder me ajudar de alguma forma agrasdeceria muito, grato Marcelo.
Cara……..já subi um debian 5 aki no trab com squid 2.7 ….OK…redondo…….Instalei o WEBMIN…….beleza…..porém o cache manager não acha o arquivo cachemgr.cgi……..dei um find e realmente ele não foi instalado…..Instalei o squid via apt-get install squid…Sabe como faço para habilitar/instalar o cachemgr.cgi que por padrão não foi instalado no pacote apt-get do debian?
Andei pesquesando por ae.e me falaram para desinstalar e instalar pelo souce….não tava afim de fazer isso não….Qual seu msn mesmo?
ops, ja add
qual o seu msn ?
Amigo, tem como postar o squid.conf para o debian 2.7 ? tem como vc me enviar por e-mail, estou desde sexta-feira tentando.
Estou apanhando aqui, nao estou nem comendo direito tentando fazer isso funcionar.
superxandaoce@hotmail.com
apnas add isso:
zph_mode tos
zph_local 0×30
zph_parent 0
zph_option 136
qlqr coisa me add no msn pra trocar uma ideia
Verifica a ordem das regras 😉
Rudimar, primeiro parabens pelo tutorial ficou otimo e funciona… mas to com um problema aqui, depois de tudo pronto e rodando eu perco meu controle de banda no MK.3.20
Se puder ajudar agradeço.
ótimo tutorial!
Gostaria de saber se tem como o Sr. me auxiliar fazendo este mesmo processo, mas sem utilizar o mk e utilizando o CBQ para configuração? Utilizo um servidor Debian Etch aqui e até na parte do Zph funcionou beleza!
me envie um email se possivel ou poste aqui mesmo o procedimento.
Obrigado.
Olá Remontti, muito bom o seu tutorial e aquí funcionou blz. Como seria a configuração no Squid 3.0 + Thander Cache?? Muito Obrigado!!!
querido eu nunca fiz um chache full e tenho um servidor mk trabalhando com prox transparente eu quero fazer um ful mais nao sei como vc poderia me ajudar
Parabéns!
Funcionou certinho, fazia tempo que estava tentando e não conseguia, com seu tuto deu certo!
Muito bom seu blog, continue escrevendo!
Valeu