La combinación ideal: Debian + squid + thundercache + apt-cacher-ng

Imagen de RazaMetaL

Tema: 

En mi red privada tengo varios usuarios con varios sistemas operativos. Las actualizaciones de Ubuntu, windows, antivirus, videos de youtube, y un largo etcetera, cuando son descargados mas de dos veces consumen ancho de banda y es para mi un problema, podemos ahorrar mucho utilizando squid y thundercache para hacer caché de los archivos antes mencionados y adicionalmente apt-cacher-ng para hacer caché de manera transparente de los paquetes deb descargados desde internet.

[b]Descripción:[/b]
- Utilizaremos Debian GNU/Linux como sistema operativo;
- Utilizaremos squid en modo transparente para hacer cache de páginas web;
- Utilizaremos apt-cacher-ng en conjunto con squid para hacer cache de los paquetes .deb que descarguemos con apt-get, aptitude, synaptic, etc;
- Utilizaremos thundercache para hacer caché de videos, actualizaciones antivirus, megaupload, rapidshare, etc;
- Tengo dos interfaces de red, eth0 conectada a Internet y eth1 conectada a mi red interna;

[b]Instalando Squid:[/b]
Nada mas sencillo que escribir como root:

aptitude install squid

Configuramos squid en modo transparente, si tenemos muchos usuarios es recomendable incrementar el parámetro "file descriptors":

sed -i 's/http_port\ 3128/\http_port\ 3128\ transparent/g' /etc/squid/squid.conf
sed -i 's/\#http_access\ allow\ localnet/http_access\ allow\ localnet/g' /etc/squid/squid.conf
sed -i 's/SQUID_MAXFD\=1024/SQUID_MAXFD\=4096/g' /etc/default/squid

Con iptables redirigimos las peticiones al puerto 80 hacia el puerto 3128 en el que escucha squid, estas líneas las podemos agregar en /etc/rc.local para que sean ejecutadas cuando se inicie el servidor:

echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -A INPUT -i eth1 -p tcp --dport 3128 -j ACCEPT
/sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp -s 0/0 --dport 80 -j REDIRECT --to-port 3128

[b]Instalando apt-cacher-ng:[/b]

aptitude install apt-cacher-ng

Configuracion de squid para y apt-cacher-ng:
Agregamos en /etc/squid/squid.conf lo siguiente en la sección de acl :

# Configuracion para hacer apt-cacher-ng transparente:
cache_peer localhost parent 3142 7 proxy-only no-query no-netdb-exchange connect-timeout=15
acl aptget browser -i apt-get apt-http apt-cacher apt-proxy
acl deburl urlpath_regex /(Packages|Sources|Release|Translations-.*)\(.(gpg|gz|bz2))?$ /pool/.*/\.deb$ /(Sources|Packages)\.diff/ /dists/[^/]*/[^/]*/(binary-.*|source)/.
cache_peer_access localhost allow aptget
cache_peer_access localhost allow deburl
cache_peer_access localhost deny all
# Fin de configuracion para apt-cacher-ng

[b]Instalando thundercache:[/b]
Instalamos algunas dependencias:

aptitude install apache2 libapache2-mod-php5 php5 php-db php5-gd php5-sqlite sqlite3 libsqlite3-dev libstdc++6 unzip bzip2

Descargamos thundercache con el siguiente comando:

mkdir /usr/src/thundercache
cd /usr/src/thundercache
wget http://www.razametal.org/conf/thundercache/thunder3-32bits.tar.bz2

Lo descomprimimos e instalamos:

tar -jvxf thunder3-32bits.tar.bz2
cp -R sbin/* /usr/local/sbin
chmod a+x /usr/local/sbin/thunder

mkdir /var/log/thunder
mkdir /var/tmp/thunder
mkdir /var/run/thunder
mkdir /var/cache/thunder
ln -s /var/cache/thunder /thunder

chmod a+rwx /var/log/thunder
chmod a+rwx /var/tmp/thunder
chmod a+rwx /var/run/thunder
chmod a+rwx /thunder
chown -R www-data:www-data /thunder/
chmod -R 777 /thunder/
umask 000 /thunder/

cp etc/init.d/* /etc/init.d
chmod a+x /etc/init.d/thunder
cp -R etc/thunder /etc/thunder
touch /etc/thunder/whitelist
touch /etc/thunder/blacklist
ln -s /etc/thunder/thunder.php /var/www/thundercache.php
update-rc.d thunder defaults 98

Modificamos la configuración de squid en el archivo /etc/squid/squid.conf :

sed -i 's/hierarchy\_stoplist\ cgi\-bin/\#hierarchy\_stoplist\ cgi\-bin/g' /etc/squid/squid.conf

Agregamos al final del archivo /etc/squid/squid.conf:

# Thundercache 3
acl thunder_lst url_regex -i "/etc/thunder/thunder.lst"
cache deny thunder_lst
cache_peer 127.0.0.1 parent 8080 0 proxy-only no-digest
dead_peer_timeout 2 seconds
cache_peer_access 127.0.0.1 allow thunder_lst
cache_peer_access 127.0.0.1 deny all
# Fin de modificaciones para Thundercache

Podemos obtener un resúmen de la actividad de thundercache dirigiendo un navegador hacia:

http://ip.del.servidor/thundercache.php

Para eliminar automáticamente los archivos que no han tenido HITS durante las últimas 2 semanas debemos crear este script con el nombre /usr/local/bin/clear_thundercache y luego agregarlo como tarea programada:

#!/bin/sh
data=`date +"%Y-%m-%d" -d "2 week ago"`

dirs=`find /thunder/ -name domain.db`

for d in $dirs
do
lista="init"

dir=`dirname $d`
echo "entered in $dir."

while [ -n "$lista" ]
do
lista=`sqlite3 $dir/domain.db "select file from thunder where last_request < \"$data\" and requested = 0 limit 100;"`
for i in $lista
do
sqlite3 $dir/domain.db "delete from thunder where file=\"$i\""
if rm "$dir/$i" > /dev/null
then
echo "removed $i..."
fi
done
done
done

Lo hacemos ejecutable:

chmod a+x /usr/local/bin/clear_thundercache

Agregamos el script como tarea programada para que se ejecute todos los dias a las 16h00

echo "0 16 * * * root /usr/local/bin/clear_thundercache" >> /etc/crontab

Iniciamos Squid, thundercache, apt-cacher-ng y cron:

/etc/init.d/squid restart
/etc/init.d/thunder restart
/etc/init.d/apt-cacher-ng restart
/etc/init.d/cron restart

Podremos ver la actividad de cada servicio en el log respectivo:

tail -f /var/log/squid/access.log
tail -f /var/log/thunder/access.log
/var/log/apt-cacher-ng/apt-cacher.log

Comentarios

Funciona bien en Debian

Estimado lo estube probando en Debian y funciona bien.
Pero lo quiero instalar en centos y no puedo instalar este paso.

aptitude install apache2 libapache2-mod-php5 php5 php-db php5-gd php5-sqlite sqlite3 libsqlite3-dev libstdc++6 unzip

en centos es con yum pero no me encuentra ninguno de esos paquetes, e intentado con otros repositorios para centos y nada.

Trato de inicicar el servicio y me devuelve lo siguiente

[root@server thundercache]# /etc/init.d/thunder restart
Shutting down Thunder ...
Starting Thunder ...
/usr/local/sbin/thunder: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /usr/local/sbin/thunder)
[root@server thundercache]#

Por favor si alguien sabe como instalar esta libreria ibstdc++.so.6 en centos se lo agradeceria.

Los paquetes php5 y apache

Imagen de RazaMetaL

Los paquetes php5 y apache son para poder mostrar la página con las estadísticas del caché. Lo que necesitas para que funcione el cache es sqlite y sus librerías.

Respecto al error con glib, debes buscar el paquete libstdc++ e instalarlo.

-----

Visita este [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]

(adsbygoogle = window.adsbygoogle || []).push({});

Muy buenas, solucionó el

Imagen de xime

Muy buenas, solucionó el problema con el libstdc++.so.6?

Estoy tratando de probar esto en un centos 5.4 pero no logro solucionar ese mensaje de error. Si lo solucionó le ruego me ayude con esto.

http://poquiblog.blogspot.com/

NO FUNCIONA THUNDERCACHE

Que tal amigo segui tus pasos para la instalacion paso a paso pero no me funciona el thundercache ya tengo trabajando con squid 3 meses y funciona bien tengo instalado el squid paralelo a un mikrotik a lo mejor en las iptables esta mi falla o en el squid. Esta es mi red:

clientes: 192.168.0.0/24
mikrotik: 192.5.0.1
linux debian 5 con squid cache: 192.5.0.2
solo tengo un ethernet en el squid hasta el momento squid funciona bien

acl thunder_lst url_regex -i "/etc/thunder/thunder.lst"
cache deny thunder_lst
cache_peer 192.5.0.2 parent 8080 0 proxy-only no-digest
dead_peer_timeout 2 seconds
cache_peer_access 192.5.0.2 allow thunder_lst
cache_peer_access 192.5.0.2 deny all

estas son las iptables que utilizo:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

no utilizo echo 1 > /proc/sys/net/ipv4/ip_forward por que solo es una ethernet

agradeceria me corrigas mis errores porfavor

te comento que si redirigo todo el trafico al puerto 8080 si me funciona el thundercache lo he probado pero deja de de cachear el squid

GRACIAS POR TUS APORTES
SALUDOS DESDE MEXICO

Utiliza 127.0.0.1 en lugar de

Imagen de RazaMetaL

Utiliza 127.0.0.1 en lugar de 192.5.0.2 en las lineas de thundercache.

No he usado antes un mikrotik, asi que no sabria decirte que hacer al respecto.

-----

Visita este [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]

(adsbygoogle = window.adsbygoogle || []).push({});

Verificar caching

Imagen de chilino

Hola RazaMetal,

Sabes que estaba aplicando la configuracion que indicas, pero no se estan guardando los videos de youtube, ni de ninguna otra pagina, como puedo saber que se estan guardando los archivos en el servidor y donde se encuentran ubicados, tambien quisiera preguntarte el funcionamiento de thunder cache con el puerto escucha 8080, en que momento se invoca esto y como se puede ver.

Saludos y feliz navidad. :)

Chilino

Manejo de Threads

Imagen de chilino

:) Estimado RazaMetal

Estaba revisando la configuracion, lo unico que falta en todo este magnifico material que posteas es hacerlo ejecutable al demonio de thundecache de manera que si reinicias tmb lo haga el thunder.

De la misma manera, quisiera preguntarte si haz revisado el codigo del thunder cache para dar un limite mayor a los 50 threads que maneja, es decir las 50 sesiones que te permite tener, quisiera saber si existe alguna forma de incrementar esto.

Asi también si haz configurado alguna vez una forma de cluster de proxys squid/thunder??

Salu2

Chilino

Squid deja de funcionar

Que tal Razametal segui tu consejo de cambiar las ip del squid y funciono me chachea yutu y archivos el problema que tengo ahora es que el squid deja de recibir o mandar peticiones a los usuarios despues de funcionar 2 o 3 dias
tengo que reiniciar mi servidor squid para que vuelva todo a la normalidad pero de nuevo a los 2 o 3 dias vuelve a darme el mismo problema

Te comento que solo tengo 40 computadoras conectadas todo funciona muy bien teniendo las 40 conectadas al mismo tiempo durante 2 dias.

Ya hice pruebas desconectando todas solo quedando la mia conectada y el problema persiste hasta que reinicie el servidor, es como si el squid o el servidor se saturara o algo asi

Mi servidor tiene las siguientes caracteristicas:
2G en memoria ram
procesador de 2.7 Ghz y un disco duro de 400G
El disco duro solo tiene 27 G usados
el squid lo tengo configurado para que utilize 300G

cache_mem 128 KB
maximum_object_size 20480 KB
cache_dir ufs /var/spool/squid 307200 16 256
maximum_object_size_in_memory 256 KB
memory_replacement_policy lru

Si necesitas alguna otra informacion para poder ayudarme a solucionar mi problema no dudes en pedirmela

SALUDOS

Probaste realizando reiniciando solo el Squid?

Imagen de chilino

Hola FredyRoma,

Cuando el squid deja de enviar peticiones hacia los usuarios y es como si se colgara, probaste reiniciando solo el squid para verificar si se corrige el problema?

De ser así podrias configurar una entrada en el cron para reiniciar el equipo cada 48HORAS.

Espero tu respuesta, Parece que RazaMetal esta de vacaciones :(

Saludos.

Chilino

Páginas