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

Thunder en Ubuntu 10.04.2 LTS

La salida del comando que me pasaste es la siguiente

root@Proxy:~# ls -alh /usr/local/sbin
total 232K
drwxrwxrwx 2 root root 4.0K 2011-04-09 15:41 .
drwxr-xr-x 11 root root 4.0K 2011-04-09 16:08 ..
-rwxr-xr-x 1 root root 222K 2011-04-09 15:41 thunder

Gracias por la pronta respuesta!

Es bastante raro, el mensaje

Imagen de RazaMetaL

Es bastante raro, el mensaje de error indica que /usr/local/sbin/thunder no se encuentra:


/etc/init.d/thunder: 109: /usr/local/sbin/thunder: not found

Pero el ls en /usr/local/sbin/ dice que si existe :(

Trata haciendo esto:

chmod a+x /usr/local/sbin/thunder
/etc/init.d/thunder restart

-----

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({});

Thunder en Ubuntu 10.04.2 LTS

Perdon x la demora pensé que había escrito la respuesta pero se ve que no salió.

Intenté lo ultimo que me dijiste , inclusive pensé que podía ser la versión de 32bit y la cambié por la de 64bit y lo mismo , bajé thundercache del link que hay en tu tutorial , ya que anteriormente lo había echo desde otra dirección. Todo sigue igual :S

Hice esta prueba ejecutando directamente ./thunder

root@Proxy:/usr/local/sbin# ./thunder
-bash: ./thunder: No such file or directory

root@Proxy:/usr/local/sbin# ./thunder -c /etc/thunder/thunder.conf
-bash: ./thunder: No such file or directory

Si a alguno se le ocurre algo más....

Todo apunta a que el archivo

Imagen de RazaMetaL

Todo apunta a que el archivo no tiene los permisos suficientes y necesarios.

Probastes haciendo la instalación en otro computador y viendo si ocurre lo mismo?

En mi pc obtengo esta salida cuando ejecuto los comandos:

servidor:/usr/local/sbin# ls -alh | grep thunder
-rwxr-xr-x 1 root staff 222K nov 8 21:26 thunder


servidor:/usr/local/sbin# ./thunder
Starting Thunder
Could not create server (already running?)
Exiting..

-----

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({});

hola RazaMetaL aparentemente

hola RazaMetaL aparentemente se inicia

/etc/init.d/thunder restart

Shutting down Thunder ...
Starting Thunder ...
Starting Thunder
Could not create server (already running?)
Exiting..

pero al ejecutar
tail -f /var/log/thunder/access.log

tail: no se puede abrir «/var/log/thunder/access.log» para lectura: No existe el fichero o el directorio
tail: no queda ningún fichero

que puede ser???

hola ya esta descomente el archivo thunder.conf y ya esta

"El que se enorgullece de sus conocimientos es como si estuviera ciego en plena luz."

hola lo estoy instalando en

hola lo estoy instalando en mi centos 5.6 actualizado del centos 5.5 ya tenia squid correindo en el servidor y me pareciogenial implementarle el thunder a mi squid pero me surgio un problema.

al instalar apt-cacher-ng me sale esto

# yum install apt-cacher-ng
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
* addons: updates.interworx.info
* base: mirrors.netdna.com
* epel: ftp.cse.buffalo.edu
* extras: mirror.trouble-free.net
* rpmforge: fr2.rpmfind.net
* updates: mirror.ash.fastserv.com
Setting up Install Process
No package apt-cacher-ng available.
Nothing to do

al instalar el thunder va bien hasta llegar aca:

# chown -R www-data:www-data /thunder/

me sale este

chown: «www-data:www-data»: usuario inválido

y luego al llegar a aca.

]# update-rc.d thunder defaults 98

sale esto

-bash: update-rc.d: command not found

Que sera lo que estoy haciendo mal ??

"El que se enorgullece de sus conocimientos es como si estuviera ciego en plena luz."

lo que estás haciendo mal es:

Imagen de deathUser

lo que estás haciendo mal es: seguir al pie de la letra instrucciones para "DEBIAN" en un "CENTOS", algunas cosas que saltan a la vista el apt-cacher-ng es un paquete para cachear las peticiones de apt o aptitude el manejador de paquetes de DEBIAN y sus derivados, www-data de DEBIAN sería equivalente a apache de CENTOS, update-rc.d de DEBIAN se alguna manera equivalente con chkconfig ...

Suerte ...

bye
;)

Disculpa pero no entiendo

Disculpa pero no entiendo osea que el apt-cacher-ng tine un equivalente en centos ????? en ese caso cual seria si me ayudas gracias

"El que se enorgullece de sus conocimientos es como si estuviera ciego en plena luz."

la verdad no lo se, si

Imagen de deathUser

la verdad no lo se, si quieres busca "COMO HACER CACHE DE YUM" y quizás encuentres algo, yum es el equivalente de aptitude o apt, eso te será útil si tienes muchos CENTOS detrás de tu proxy, ya que la idea es cachear los updates de APT o YUM, así que evalúa si te sería o no de utilidad para tu caso específico ...

bye
;)

Páginas