NEW RELEASE: HAARPCACHE v1.2

El ‘proyecto’ Haarp se dará una pausa de cinco meses (desde: 01/05/14), avisamos que el sistema necesita de una actualización en el plugin Youtube.

Posibles soluciones y/o sugerencias aqui: Grupo de desarrolladores interesados en el projecto HaarpCache o Forks de ThunderCache 3.1.

* Update 2013/12/24: New system for the cleanign of cache: haarpClean v1.1. (for more info: /etc/init.d/haarpclean –help); update of core of haarp, please update you system.

* Update 2014/01/09: New plugins: aol, wrzuta and youku (update too the reporter for the web haarp-ext-js-viewer).

Update 2014/01/14: Improvement of synchronization and efficiency in the use of the cache, avoid the possible corruption of  files.

Update 2014/01/20: Driver of header Origin (Improvement the cache on Youtube), improvent the cache of Ytimg (cache of imagens of middle quality).

* Important Update 2014/01/27:  Fixed problem with parameters cms_redirect, ir, rr, etc for not corrupt files of the Youtube. (This will make cache from scratch, but no need to remove old cache files, they are automatically deleted with the haarpclean in the crontab, see the instalation for haarp 1.1 for the configure of crontab).

* Update 2014/03/10:  Fix the bug ‘free() invalid pointer’.

Hola comunidad del cache!.

In this post we’ll put a few of the new version of HaarpCache:

ChangeLog:

  1. Fix header of Hits, for the web Youtube (adding the header ‘Access-Control-Allow-Origin’ for the working with the browser google-chromium).
  2. Improved ad blocking Youtube.

Source Code: http://keikurono.github.io/haarpcache/

Perform the following to update your haarp:

su
cd /tmp/
git clone git://github.com/keikurono/haarpcache.git
cd haarpcache
./configure CXX=g++-4.4
make clean
make
make install
mysql -u root -p < haarp.sql
cp /etc/haarp/haarp.conf /etc/haarp/haarp.conf.back
cp etc/haarp/haarp.conf /etc/haarp/haarp.conf
cp /etc/haarp/haarp.lst /etc/haarp/haarp.lst.back
cp etc/haarp/haarp.lst /etc/haarp/haarp.lst
#restart the systems:
service haarp restart
squid3 -k reconfigure

* Update the params of the file haarp.conf (please, see the instalation of the haarpcache 1.1).

The installation is seem that the version 1.1.

* Example of used of cleaning of cache:

/etc/init.d/haarpclean –dates 01/02/2013-20/11/2013 –domain youtube  (recommended for those using the haarpcache 1.1).

other example:

/etc/init.d/haarpcache –dates 01/10/2013-end (“end” for the date of today).

Video installation:

 

INSTALANDO HAARPCACHE v1.1 – UN CACHE INTELIGENTE

NEW: HaarpCache v1.2

  • Update 16/03/13: Nueva interfaz web para HaarpCache
  • Update 26/03/13: (FAQ) Como incorporar código de otros plugins en HaarpCache.
  • Update 27/03/13: Mejoras en plugin de Facebook.
  • Update 31/03/13: (FAQ) Integración con el Mikrotik.
  • Update 06/05/13: + plugin de speedtest (Thx a Samuel Espinoza por los testes!).
  • Update 18/05/13: Limpieza automática del HaarpCache.
  • Update 13/06/13: Actualización del plugin para el bloqueo de publicidad en Youtube.
  • Update 26/06/13: Actualización del HaarpClean (limpieza del cache), corrección  y mejora: Thx to Oscar  Vaquero Montecino.
  • Update 04/07/13: 1º actualización del core y plugin para: Youtube.
  • Update 05/08/13: Para aquellos que instalaron antes de este mensaje, y para Impedir la corrupción de los videos de Youtube, cambiar la opción  “FLV_MIN 1000” a “FLV_MIN 819200” en /etc/haarp/haarp.conf.
  • Update 19/08/13: Modificación de la captura de URL’s para facebook en Haarp.list (Aqui los cambios).
  • Important Update  24/09/13: Cambio en el ‘Content-Type’ para los videos del Youtube (de videos/x-flv a application/octet-stream) esto genera compatibilidad en audio y vídeo. Aqui los pasos para actualizar el Haarp
  • Update 31/10/13: Descomentar la linea de “http.*\.googlevideo\.com.*videoplayback” en el haarp.lst.
  • Update 12/11/13:  Video Instalation: https://www.youtube.com/watch?v=s9GhTwJJ-Yk

HaarpCache es un fork de ThunderCache 3.1, que en comparación a otros caches es un cache inteligente en el sentido del almacenamiento y en el despacho de archivos. Es decir almacena cada pedazo del vídeo o archivo juntándolos todo en un único recurso en el disco, aún sin importar si estas llegaron completas o no. Con ello, el HaarpCache puede despachar incluso cuando se piden partes de un archivo que en mayor tamaño está en cache.

En conclusión HaarpCache da soporte a la tecnología MPEG-DASH.

En concreto, ¿Que trae de nuevo este cache?:

  1. Cache dinámico e inteligente.
  2. Plugins editados, para funcionamiento inteligente.
  3. Multidisco.
  4. Bloqueo de publicidad en Youtube.
  5. Soporte a las solicitudes ‘Partial Content’ (Youtube en HTML5) .
  6. Código fuente.

Instalación y Configuración

Instalamos dependencias:

su
apt-get update
apt-get install build-essential mysql-server \
mysql-client php5 apache2 php5-mysql libblkid-dev \
libcurl4-gnutls-dev libmysqlclient15-dev \
libapache2-mod-auth-mysql libapache2-mod-php5 \
 sharutils curl autoconf bind9 squid3

Instalamos el Haarp:

#(Distribuciones Debian)
apt-get install git
cd /usr/src
git clone git://github.com/keikurono/haarpcache.git
cd haarpcache
./configure
make clean
make
make install

Nota: Si tienen un error, en la compilación, puede deberse al uso de su compilador g++: Instalar el g++-4.4, y luego hacer: ./configure CXX=g++-4.4  y seguir con el ‘make clean’, ‘make’, etc.

Agregamos la base de datos:

mysql -u root -p < haarp.sql

Para que surtan los efectos, nos pedirá que ingresemos la contraseña root de mysql.

Editamos el archivo de configuración del haarp (/etc/haarp/haarp.conf):

MYSQL_USER <USER_MYSQL>
MYSQL_PASS <PASS_MYSQL>
PIDFILE /var/log/haarp/haarp.pid
ACCESSLOG /var/log/haarp/access.log
ERRORLOG /var/log/haarp/error.log

“USER_MYSQL” y “PASS_MYSQL” son el usuario y password de tu cuenta en mysql, como usuario pueden colocar ‘root’, sin comillas.

Hacemos que arranque cuando se inicie el sistema:

cd /etc/init.d
update-rc.d haarp defaults 98

Agregamos al final del archivo /etc/squid/squid.conf (o en /etc/squid3/squid.conf, cual tengan):

# Haarp 1.1
#=========================================================#
acl haarp_lst url_regex -i "/etc/haarp/haarp.lst"
cache deny haarp_lst
cache_peer <TU_PROXY_LAN> parent 8080 0 proxy-only no-digest
dead_peer_timeout 2 seconds
cache_peer_access <TU_PROXY_LAN> allow haarp_lst
cache_peer_access <TU_PROXY_LAN> deny all

Donde “TU_PROXY_LAN” es la IP de su servidor en la LAN.

Hacemos al squid transparente: cambiando la linea http_port 3128 por: http_port 3128 transparent, en el archivo squid.conf anterior.

Luego antes de la linea:

http_access deny !Safe_ports

Insertamos:

acl red_local src <IP_RED_LAN>
http_access allow red_local

Donde “IP_RED_LAN” es por ejemplo “192.168.1.0/24″ (la red de tu LAN) Comentamos la linea:

#hierarchy_stoplist cgi-bin ?

Configuramos los DNS, agregamos en /etc/resolv.conf:

nameserver 8.8.8.8
nameserver 8.8.4.4

En el caso que que deseemos otros DNS, colocarlos cambiando aquellas IPs (8.8.x.x).

Redireccionamos las peticiones de http al squid y enmascaramos:

sudo iptables -t nat -A POSTROUTING -o <ETH_WAN> -j SNAT  --to <IP_IFACE_WAN>
sudo iptables  -t nat -A PREROUTING -i <ETH_LAN> -p tcp --dport 80 -j REDIRECT --to-port 3128
echo 1 > /proc/sys/net/ipv4/ip_forward

ETH_WAN es la interface de tu tarjeta de red que da a Internet (ej: eth0, eth1), IP_IFACE_WAN es la ip de la interface anterior. ETH_LAN es la interface de la tarjeta LAN.

Las reglas anteriores deben ser guardadas en un archivo por ejemplo: ‘/etc/init.d/reglas_proxy.sh’. Para que las reglas se carguen, cada vez que reiniciemos el servidor, agregamos la linea: “/etc/init.d/reglas_proxy.sh” antes del exit, al final del archivo /etc/rc.local. No olvidar dar permisos de ejecución.

La limpieza del sistema Haarp, se hace automáticamente, todo depende de si sus discos estén llenos o no (el llenado o no de los discos, depende del valor de la variable CACHE_LIMIT configurado en /etc/haarp/haarp.conf).

En el archivo /etc/crontab, agregamos:

01 12   * * *   root    /etc/init.d/haarpclean

* Bloqueo de publicidad de Youtube: El Haarp trae consigo  un plugin para el bloqueo del Ads-Youtube.

* Reportes: Haarpcache trae consigo el tradicional visor de estadísticas (echo en PHP). Pero pueden instalar este nuevo reporteador con tecnología Ajax.

En caso de usar la pagina PHP, copiamos: “cp /etc/haarp/haarp.php /var/www/haarp.php”, luego editamos el archivo: /var/www/haarp.php, cambiando la linea:

if (!( $db = new PDO('mysql:host=localhost;dbname=haarp', 'root','haarpcache') ) ) {

Modificando donde dice root con nuestro usuario mysql (por defecto dejarlo igual); y donde dice haarpcache reemplazarlo por el password mysql.

Se accede, ingresando a: http://-ip_server_proxy-/haarp.php, reemplazando el “-ip_server_proxy-” por la ip del servidor.

* Multidisco: Para agregar nuevos disco o particiones como discos caches, se deben de agregar los directorios de montaje de estas particiones, ellas deben de colocarse en el formato: dir1| dir2 | dir3 .. etc. Por ejemplo si tengo montado dos particiones, uno en el directorio /haarp1/ y el otro en el directorio /haarp2/, entonces vamos al archivo de configuración del Haarp (por defecto: /etc/haarp/haarp.conf) y editamos el valor de la variable CACHEDIR:

CACHEDIR /haarp1/ | /haarp2/

Y listo, con esto el sistema cache tomará los dos directorios como discos cache.

* QoS: El manejo de velocidades de descarga de archivos en cache, puede ser realizado utilizando las aplicaciones iptables y tc del mismo Gnu/Linux, ver las configuraciones aquí. Si se usa otro router externo, como Mikrotik, ver su configuración en el FAQ.

Finalmente reiniciamos el servicio y listo:

/etc/init.d/haarp restart
squid -k reconfigure

Aquí una foto del relatorio: Relatorio – Espero les agrade!, en la misma página del github hay para colocar una Wiki, así que si existe alguna duda con la programación del sistema podemos ir armando algunas cosas. – También hay una paleta para colocar problemas que pueda haber, así que si gustan pueden dejarlos ahí, y así nos ordenamos.. – El proyecto está en licencia GPLv2, así que el programa es de acceso libre y su uso es de su propia responsabilidad.

Pequeña explicación del funcionamiento de HaarpCache:

Lo haré con un ejemplo, supongamos que tenemos un archivo en el servidor de youtube, este vídeo se llama video_youtube.flv, y supongamos que pesa 10MB y dura 20 minutos. Ahora, supongamos que tenemos un usuario A en nuestra red, que le da curiosidad de ver dicho vídeo, pues le llamo la atención el gráfico de presentación que tenia este, pero el usuario no quiere ver dicho vídeo desde el inicio, le interesa ver solo la parte que le llamo la atención, y adelanta el vídeo hasta la mitad del mismo, o sea hasta el minuto 10, y después de transcurrido 3 minutos este se impacienta y adelanta el vídeo aún más, colocandolo en el minuto 16 y desde ahí lo ve hasta el final. El resultado total, es que nuestro usuario sólo vio el vídeo desde el minuto 10 al minuto 13, y luego desde el minuto 16 hasta el minuto 20. Hasta aquí, ¿Que creen que sucedería si usáramos un sistema cache tradicional?, uno como los del thundercache 3x, 4x, 5x … 7.0?, pues simplemente no podrían hacer cache del vídeo. O en todo caso lo harían pero guardando los pedazos del video (del min 10 al min 13 y del min 16 al min 20) como archivos separados y sin importar si estos están solapados o incluidos unos de otros (Caso thundercache 3.1.2 o storeurl.pl). En contraste a como lo hace el haarpcache, que guarda los pedazos vistos en un único archivo y sin redundancia. Ahora que pasa si viene otro usuario B, y quiere ver el video anterior, que derrepente está de moda, o está en la pagina principal del youtube y le da curiosidad de verlo también, pero él decide verlo desde el inicio (desde el minuto cero), y como nos tiene acostumbrado la pagina de youtube, decide enviarle el vídeo por pedazos, supongamos que una primera parte, desde el minuto cero al minuto 12. Entonces el haarpcache toma la peticion de ver el video video_youtube.flv desde el minuto 0 al minuto 12, pero se dá cuenta que en el cache ya tiene el mismo vídeo desde el minuto 10 al minuto 13. Por lo tanto decide darnos el pedazo que le falta (minuto 0 al minuto 10), descargando desde internet, pero a la vez que guarda esta parte faltante en el cache, pegándolo en el mismo archivo único del inicio; y la parte del minuto 12 al minuto 13 es un mini Hit pues esta ya lo tiene en cache, por lo tanto no lo descarga de nuevo, sino que nos lo envía desde el mismo cache (mini Hit). Hasta aqui el archivo guardado en cache corresponde al vídeo de youtube desde el minuto 0 al minuto 13 y del minuto 16 al minuto 20, todo esto en un único archivo. Que pasaría si el usuario B prosigue ver el vídeo hasta el final, pues entonces, el haarpcache procederá a guardar la otra parte que le faltaba (del minuto 13 al minuto 16, que seguramente verá el usuario B) y terminaría por completar el archivo video_youtube.flv, justo como lo tienen en el servidor de youtube, en un único archivo. La ventaja de esto es que si vemos un vídeo desde el minuto 5 al minuto 60 por ejemplo, en los caches tradicionales lo guardarían todo ello, en el mejor de los casos, como un archivo indistinto e independiente; ocurriendo que cuando alguien quiera ver el mismo vídeo desde el minuto 0 al 60 (todo), el cache tradicional verá que ese pedazo de vídeo no lo tiene en cache (ya que el que tiene en el disco, tiene otro tamaño, nombre, etc). Por lo tanto lo descargará nuevamente desde Internet; desperdiciando los ¡55 minutos! que se habían descargado anteriormente. Cosa que no ocurre con el haarpcache que descarga la parte faltante y lo demás te lo entregará desde el cache sin descargar de nuevo desde Internet[*], guardando lo que pueda faltar en un único archivo (sin redundar espacios) y entregando las partes cacheadas anteriormente a velocidad LAN. O peor aún si queremos ver el vídeo anterior desde el minuto 10 al minuto 50, en los caches tradicionales, ellos a lo más verán que ese pedazo no lo tienen cacheado, ya que no es igual al del pedazo 5-60 minutos, por lo tanto tendrán que descargarlo desde Internet!; y para colmo te guardarán el pedazo de vídeo en otro archivo haciendo redundancia con el anterior. Esto no ocurre en el haarpcache, que notará que este pedazo de vídeo lo tiene incluido en la sección de 5-60 minutos, por lo tanto te dará aquella parte que solicitaste en HIT o sea a velocidad LAN, sin descargar de Internet.

[*]Finalmente, decir que el sistema es más complejo de lo que he tratado de explicar aquí, espero que quede claro en un futuro FAQ que colocaré debajo.

FAQ

Q:¿Qué son los mensajes MISS o HIT que se ven en los archivos LOG?

  • HIT es cuando el recurso no lo descarga desde internet sino desde el cache.
  • MISS es cuando un recurso no se encuentra en el cache, se está descargando desde internet y se está almacenando por primera vez.

Q:¿Cómo puedo verificar si estoy haciendo un Hit o un Miss?

Una forma fácil de comprobar si estás haciendo un HIT o MISS, es usando el navegador Chrom. Podemos llevarlo acabo, siguiendo los siguientes pasos (por ejm. si queremos verificar el funcionamiento del Youtube):

  • Nos dirigimos a la página de Youtube.
  • Abres el debug de chomium (presionando F12).
  • Asistimos un vídeo de la página.
  • Nos dirigimos al panel que abrimos anteriormente, y hacemos Click a la paleta que dice “Network”. En ella tendremos una lista de las conexiones que nuestra pagina está enviando hacia internet.
  • Hacemos Click en aquellas que contengan el nombre “videoplayback”, nos aparecerá otro panel al lado.
  • Verificamos si cerca del final de este panel nos aparecen el mensaje: “Haarp: HIT from” o “Haarp: MISS from“, y ya con ellas sabremos si vino o no del cache.

Instalando el plugin firebug, se puede hacer lo mismo en Firefox.

Aquí una pequeña vista de como ver el mensaje HIT: Haarp_HIT Q:¿Tengo un plugin en ThunderCache, puedo hacer que funcionen en HaarpCache?

Sí, sólo cambia la linea:

extern "C" resposta getmatch(const string url) {

por esta:

extern "C" resposta hgetmatch2(const string url) {
y agregar debajo de la linea: “responsa r;” lo siguiente:
r.range_min = 0;
r.range_max = 0;

Eso es todo.

Q:¿Cómo configuro el HaarpCache con Mikrotik?

Lo probaremos con dos topologías:

El primero usando un Mikrotik con tres o más interfaces ethernet y otro con dos interfaces.

Utilizando sólo 3 interfaces:

INTERNET 
| |
eth1 (dhcp)
MIKROTIK eth3 {192.0.4.1/24} ——{192.0.4.15}HaarpCache
eth2 {192.0.3.1/24}
| |
LAN

En el HaarpCache:

  • Realizar las mismas configuraciones para el squid.conf de este manual, adicionando debajo de las reglas: acl red_lan … otras redes más por ejemplo:

    acl red_mik_1 192.0.4.0/24 http_access allow red_mik_1

    Donde el 192.0.4.0/24 representa a una red LAN en el Mikroik.

  • No es necesario las reglas de iptables (Si anteriormente se probó el sistema usando 2 tarjetas como en este manual, por favor quitar el script que pudiéramos tener dentro del rc.local, y luego reiniciar o hacer iptables -t nat -F).

En el Mikrotik:

/ip firewall nat \

add action=masquerade chain=srcnat comment=”Masquerate for Internet” disabled=no out-interface=ether1 \

add action=masquerade chain=srcnat comment=”Masquerate for HaarpCache” disabled=no out-interface=ether3 \

add action=dst-nat chain=dstnat comment=”Redirect to HaarpCache” disabled=no dst-port=80 in-interface=ether2 protocol=tcp to-addresses=192.0.4.15 to-ports=3128 \

/ip firewall mangle \

add action=mark-connection chain=postrouting comment=”MarkConnect HaarpCache” content=”X-Cache: HIT from Haarp” disabled=no new-connection-mark= “Connect – HaarpCache” out-interface=ether2 passthrough=yes src-address=192.0.4.0/24 \

add action=mark-packet chain=postrouting comment=PacketMark-Haarp connection-mark=“Connect – HaarpCache” disabled=no new-packet-mark=Packet-Haarp out-interface=ether2 passthrough=yes

Aquí las reglas de QoS, con 1.5MB para el haarpcache:

/queue tree add burst-limit=0 burst-threshold=0 burst-time=0s comment=Q-HIT-Haarp disabled=no limit-at=0 max-limit=12M name=Queue-HIT-Haarp packet-mark=Packet-Haarp parent=global-out priority=1 queue=default

Utilizando dos interfáces ether (y HAARP dentro de la LAN)

INTERNET 
| |
eth1 (dhcp)
MIKROTIK 
eth2 {192.0.3.1/24}
| |
LAN ——{192.0.3.15}HaarpCache
 
En el HaarpCache: Igual que en el caso anterior.En el Mikrotik:

/ip firewall nat \

add action=masquerade chain=srcnat comment=”Masquerate for Internet” disabled=no out-interface=ether1 \

add action=src-nat chain=srcnat comment=”Masquerate for HaarpCache” disabled=no dst-address=192.0.3.15 out-interface=ether2 to-addresses=192.0.3.1 \

add action=dst-nat chain=dstnat comment=”Redirect Haarp — in — lan” disabled=no dst-port=80 protocol=tcp src-address=!192.0.3.15 to-addresses=192.0.3.15 to-ports=3128 \

/ip firewall mangle \

add action=mark-connection chain=postrouting comment=”MarkConnect HaarpCache” content=”X-Cache: HIT from Haarp” disabled=no new-connection-mark= “Connect – HaarpCache” out-interface=ether2 passthrough=yes src-address=192.0.4.0/24 \

add action=mark-packet chain=postrouting comment=PacketMark-Haarp connection-mark=“Connect – HaarpCache” disabled=no new-packet-mark=Packet-Haarp out-interface=ether2 passthrough=yes

Aquí las reglas de QoS, con 1.5MB para el haarpcache:

/queue tree add burst-limit=0 burst-threshold=0 burst-time=0s comment=Q-HIT-Haarp disabled=no limit-at=0 max-limit=12M name=Queue-HIT-Haarp packet-mark=Packet-Haarp parent=global-out priority=1 queue=default

Note que en comparación con las reglas anteriores, sólo modificamos las dos últimas lineas de las reglas “ip firewall nat”.

Any problem or bug please report it here below or on any of these: Github or Bitbucket. Sugerencias?, mandarlas también :) Saludos!

INSTALANDO HAARPCACHE V1.0 – 32BITS

Update: Nueva versión del haarpcache!.

HAARPCACHE es un sistema que trabaja a modo de proxy padre de un Squid u otro sistema proxy, haciendo cache de los archivos de vídeo como de youtube, y actualizaciones de antivirus y windows update, esto, para mejorar el rendimiento de un sistema de red local. Es un módulo ideal para los proveedores de servicios de Internet, ya que además de dar un rendimiento excepcional, proporciona un notable ahorro de ancho de banda.

  • Actualizado: 27-04-12
    • Agregado el limpiador de cache.
  • Actualizado: 31-04-12
    • La instalación abarca más distribuciones Debian.
    • Correcciones al plugin Mediafire.

Para su instalación solo bastará con ejecutar un script que hará todo por nosotros: (Se a probado en las distribuciones Ubuntu 10.x y 11.x)

su
wget http://archives.scienceontheweb.net/installhc.sh -O "installhc.sh"
chmod +x installhc.sh
./installhc.sh

[Nota: Verá que estamos instalando el proxy SQUID, si quieren usar 2 tarjetas de red, deben de configurar el proxy en modo transparente, vean como se configura aqui, o pueden buscar "como configurar proxy transparente" en google].

Este script descargará las dependencias necesarias para el uso del Haarp, instalará el servicio y también un visor para apreciar las estadísticas de los plugins.

Luego que finalice la instalación (cerciorarse que no se haya tenido ningún error al final).
editamos las configuraciones del squid:
sudo gedit /etc/squid/squid.conf
o
sudo vim /etc/squid/squid.conf
Al final del archivo agregamos las redirecciones hacia el haarpcache.

	#===================================================================#
	#Redirecionamento Haarp 3.x - REGEx
	#===================================================================#
	acl haarp_lst url_regex -i "/etc/haarp/haarp.lst"
	cache deny haarp_lst
	cache_peer IPHAARP parent 8080 0 proxy-only no-digest
	dead_peer_timeout 2 seconds
	cache_peer_access IPHAARP allow haarp_lst
	cache_peer_access IPHAARP deny all

Cambiar el “IPHAARP” por la ip del proxy.

buscamos y comentamos la linea:

#hierarchy_stoplist cgi-bin ?

Editamos el user y el password en las configuraciones del Haarp, según como hayamos configurado nuestro mysql:

sudo gedit /etc/haarp/haarp.conf

o bien por consola:

sudo vim /etc/haarp/haarp.conf

editamos:

MYSQL_USER root
MYSQL_PASS ********

Para concluir, hacemos que nuestros log’s roten cada día.
creamos el archivo, “sudo gedit /etc/logrotate.d/haarpcache” o “sudo vim /etc/logrotate.d/haarpcache”, y pegamos lo siguiente:

/var/log/haarp/*.log {
daily
compress
rotate 5
missingok
notifempty
postrotate
/etc/init.d/haarp restart > /dev/null
endscript
}

Finalmente reiniciamos los servicios.

/etc/init.d/haarp restart
/etc/init.d/squid restart

Si quieren ver la lista de procesos abiertos por el haarp (o corroborar el levantamiento del servicio), pueden hacerlo de esta forma:

ps aux | grep haarp

Estos procesos son justamente conocidos por threads, que son procesos que escuchan las llamadas del proxy (en este caso el squid) los cuales son atendidas por una de estas threads, el echo de tener varias implica que las llamadas al haarp no sean encoladas, sino mas bien despachadas en modo multitarea.

Ahora que ya casi terminamos, veremos que también tenemos una interfaz web, donde apreciaremos las estadísticas de nuestro Haarp, y de un historial mostrando las cantidades de los archivos descargados y archivos despachados (HITS) de cada dominio cacheado.

Cabe aclarar que se mostraran las estadísticas de los dominios que ya hallan tenido alguna actividad de almacenamiento, por ello en un principio la lista se mostrara vacía.

La direccion del reporte se presenta aqui:
http://IP_SERVER/cgi-bin/haarp.cgi

Obviamente se debe reemplazar el “IP_SERVER” por la ip de su servidor.

haarp1
haarp2

Podemos observar lo que ocurre con el haarpcache en:

tail -f /var/log/haarp/access.log

La interfaz web tambien trae su propio log, pueden verlo ejecutando:

tail -f /tmp/loghc

Para limpiar el cache de archivos incensarios, deberemos de hacer uso del programa “haarpClear.o”:

#Descargamos el haarpClear
su
cd /etc/haarp/
wget "archives.scienceontheweb.net/haarpClear.o"
chmod +x haarpClear.o

para saber como usarlo (trae una ayuda).

./haarpClear.o --help
Usage: haarpClear [Options]

Possible options are:
--help | -h 				 This pamphlet
--week w | -w w				 Delete downloaded files ...
--num-hits numbhits | -n numbhits	 Delete the files should ...

En concreto, tenemos dos opciones, el número de semanas atras que se descagó el archivo (-w), y el numero de hits que ha tenido desde entonces (-n).

Por ejemplo, si queremos eliminar los archivos que se descargaron hace 15 semanas atrás, y en donde no tubo ningún hit, hasta hoy, pues deberemos de hacer lo siguiente:

./haarpClear.o -w 15 -n 0
#o bien:
./haarpClear.o -w 15 (-n 0, es por defecto)
#o tambien:
./haarpClear.o --week 15

y nos dará un resultado como este:

Deleting before of the date: 2012-01-13, whose hits are lower and equal to 0? (s/n): s
Connecting to the DB ...	[OK]
(0) Deleting ...  /haarp/youtube/6/8_24/179ad6d22e0c1c58.flv (2.40 MB)
(1) Deleting ...  /haarp/youtube/7/2_43/f9ed4f2bed844ed3.flv (10.07 MB)
(2) Deleting ...  /haarp/ytimg/4/5_04/6o1wind1iUc-hq.jpg (0.01 MB)
...
Total deleted: 204.283 MB

/**/

Si por alguna razón hubiese un problema o algún cambio en la configuración del haarpcache, podemos reiniciar el servico de esta forma:

killall haarp
/etc/init.d/haarp restart
squid -k reconfigure

Nota:
Igualmente cuando se presenta un HIT de algún objeto, el Haarpcache, nos enviará una cabecera HTTP con el contenido: “X-Cache: Hit from Haarp”, esto puede servir para diferenciar los paquetes que vienen desde Internet y de los que vienen desde el Haarp:

Podemos hacer uso de esto para controlar la velocidad de trasmisión de sus despachos a la LAN, por ejemplo, si queremos limitar la velocidad del flujo a 1MByte, podemos hacer lo siguiente;

IF_LAN=eth0
MAX_DOWN=1300kbps
MIN_CACHE_DOWN=1000kbps
MAX_CACHE_DOWN=1100kbps

iptables -A OUTPUT -t mangle -o $IF_LAN -p tcp -m string --string "X-Cache: HIT from Haarp" --algo kmp -j MARK --set-mark 666

tc qdisc add dev $IF_LAN root handle 1:0 htb default 10 r2q 15
tc class add dev $IF_LAN parent 1:0 classid 1:1 htb rate $MAX_DOWN ceil $MAX_DOWN
tc class add dev $IF_LAN parent 1:1 classid 1:66 htb rate $MIN_CACHE_DOWN ceil $MAX_CACHE_DOWN
tc qdisc add dev $IF_LAN parent 1:66 handle 66:0 sfq perturb 30
tc filter add dev $IF_LAN protocol ip parent 1:0 handle 666 fw classid 1:66

No hay mucho que aclarar aquí, se hace uso de IPTABLES y TC.

Espero les sirva.

*Siempre es bienvenido una donación*

LIDIANDO CON EL THUNDERCACHE 3, 3.1

Hola a todos, en vista que hay muchos que preguntan sobre los problemas que trae el thundercache 3, 3.1, he decidido hacer algunos arreglos al mismo, sobretodo en los plugins que ya caducaron bastante tiempo.

El problema en si, son las nuevas políticas de servicio que viene implementado Youtube en sus servidores, que hacen que muchos de los vídeos que se vean no puedan ser cacheados de manera fácil como se venía haciendo,  o lo venía implementado el thunder 3 y thunder 3.1.

El problema que se tiene es que con los plugins antiguos nuestros archivos cacheados se vienen corrompiendo, y esto hace que en algunos vídeos se detengan a la mitad y muestre un mensaje de error, o que nunca carguen, y se quede en espera indefinidamente.

Bueno, he leído en muchos foros sobre el tema, y al parecer recomiendan eliminar los archivos cacheados, anteriormente y luego actualizar el plugin de Youtube, pero esta forma no me parece razonable en el sentido que tengo muchos archivos en mi disco duro, como lo verán más adelante.

  • Para lidiar con este impase, deberemos de eliminar los archivos corruptos, por medio de un programa que descargaremos:
  • wget http://archives.scienceontheweb.net/LimpiarCacheCorrup.so
    

    nos logeamos como root y le damos permisos de ejecución:

    su
    chmod +x LimpiarCacheCorrup.so
    

    lo ejecutamos, y veremos como elimina los archivos corruptos que va detectando, nos dará las salidas de esta forma:

    ./LimpiarCacheCorrup.so
    Looking ...
    (1) Corrupt file found: /thunder/youtube/2/6_39/769980634e7d4d36.flv
    Removing ...
    (2) Corrupt file found: /thunder/youtube/2/6_18/cd121b7fa26a90d7.flv
    Removing ...
    ....
    Deleted files: 401
    50.20 sec
    

    Vale decir que este programa funciona para el thundercache 3.1 y no para el thundercache 3.0.

    Una vez que limpiamos los archivos dañados, debemos de descargar el nuevo plugin de Youtube:

    wget http://archives.scienceontheweb.net/youtube.com.so
    

    La agregamos a nuestro directorio de plugins:

    cp youtube.com.so /etc/thunder/plugins/
    

    Este plugin, funciona tanto para el thundercache 3.0 como para el del 3.1.
    Reiniciamos el thundercache y las configuraciones del squid:

    /etc/init.d/thunder restart
    squid -k reconfigure
    

    Después de esto podremos estar más tranquilos ya que nuestros vídeos serán vistos sin problemas, y si estuvieron cacheados estos se despacharán sin inconvenientes :).

  • Si desean pueden darle una hojeada a este nuevo cache, que no tiene estos problemas: http://perufw.wordpress.com/2012/04/07/instalando-haarpcache-v1-0/

    Saludos!.

    *Siempre es bienvenido una donación*

  • INSTALACIÓN DE NTOP V4.0

    En esta ocasión instalaremos una herramienta indispensable para la administración de nuestra red local, mostrándonos información sobre los usuarios actualmente conectados al sevidor, como el de sus conexiones, puertos en uso, la cantidad de consumo de ancho de banda, su consumo en Kbits tanto de bajada como de subida, etc.

    En esta última parte, el monitoreo “en vivo” los muestra en Kbits, debemos de hacer algunos cambios en el código fuente de ntop, para mostrarlos en KBytes.

    Install ntop v4.0 (en Ubuntu 9.10)

    1 Descargamos las fuentes de ntop v4.0

    2 Para mostrar nuestros datos en KBytes y no en Kbits, deberemos de hacer un cambio en el archivo dataFormat.c de la carpeta ntop.

    3 Reemplazamos las lineas 187-193:

    	  if (numBits < divider) {
    
    		safe_snprintf(__FILE__, __LINE__, outStr, outStrLen, "%.1f%sbit/s", numBits, separator);
    
    	  } else if (numBits < (divider*divider)) {
    
    		safe_snprintf(__FILE__, __LINE__, outStr, outStrLen, "%.1f%sKbit/s", ((float)(numBits)/divider), separator);
    
    	  } else {
    
    		safe_snprintf(__FILE__, __LINE__, outStr, outStrLen, "%.1f%sMbit/s", ((float)(numBits)/1048576), separator);
    
    	  }
    
    

    por:

    	  if (numBits < divider) {
    
    		safe_snprintf(__FILE__, __LINE__, outStr, outStrLen, "%.1f%sByte/s", numBytes, separator);
    
    	  } else {
    
    		safe_snprintf(__FILE__, __LINE__, outStr, outStrLen, "%.1f%sKByte/s", ((float)(numBytes)/divider), separator);
    
    	  }
    

    4 Instalamos algunas dependencias:

    apt-get install libgd2-xpm-dev  libgdbm-dev libtool libgd-tools libpcap-dev autoconf automake librrd2-dev libgeoip-dev
    

    5 Ahora, instalamos con las fuentes de ntop.

      ./autogen.sh
    
      make
    
      make install
    

    6 Corremos el ntop

      ntop -i eth0
    

    si nos presenta un error como :

      ntop: error while loading shared libraries: libntopreport-4.0.so: cannot open shared object file: No such file or directory
    

    tendremos que copiar las librerías que presentan error a la carpeta /lib/

      asi: cp /usr/local/lib/libntopreport-4.0.so /lib/
    

    7 Escogemos un password a ntop :

      ntop --set-admin-password=xxxx
    

    el usuario es “admin”.
    Acceso :
    Por medo de una aplicación web cuya dirección es http://%5BIP_SERVER%5D:3000, asegurarse no tener el firewall bloqueando el puerto.

    Inconvenientes: Algunos inconvenientes sobre esta conocida y completa herramienta, es sobre el monitoreo en vivo, que en realidad no lo es, por defecto es en cada 60 segundos, este valor de refresco también se puede cambiar a 1 por segundo, pero sobrecarga mucho al servidor, ya que refresca todos los valores del ntop.

    MEJORANDO SQUID – CONVIVENCIA CON EL QOS

    *Actualización 12/02/2014: Con Squid 3.x podemos configurar sin parches el marcado de paquetes y dar QoS. Por ejemplo, podemos marcar con un numero ToS = 8, a los archivos que obtienen HIT haciendo: “qos_flows local-hit=0×8″, en squid.conf.

    Parcheando el squid para soportar el zph (viene por defecto en las versiones 3.1.x y 2.7).
    El ZPH (Zero Penalty Hit), es un parche para squid, que permite marcar el campo tos de los paquetes que pasan por este proxy, sólo cuando hay hits en el. Esto es útil cuando queremos diferenciar el tráfico que viene desde internet, y el tráfico que viene desde el squid (con hits), esto preferiblemente es usado junto con el TC (control de tráfico), para hacer las reglas de manejo de ancho de banda. Esto lo podemos apreciara mejor en los ejemplos al final de este howto.
    Ahora veamos como parchar el squid para usar el módulo ZPH.
    Descargamos “Squid3-Stable8″ de las fuentes de squid.

    su
    cd /usr/src
    wget http://ftp.vim.org/internet/squid/squid-3.0.STABLE8.tar.gz
    tar -xvzf squid-3.0.STABLE8.tar.gz

    Ahora descargamos el parche para la versión 3.0 de squid.
    cd squid-3.0.STABLE8
    wget http://zph.bratcheda.org/squid-3.0.STABLE8-zph.patch

    Aplicamos el parche a las fuentes del squid3.
    patch -p1 < ../squid-3.0.STABLE8-zph.patch

    Compilamos nuestras fuentes de squid con soporte para el zero penalty hit patch (zph) y delay pools.

    ./configure –enable-zph-qos –enable-delay-pools
    make
    make install

    #El archivo de configuración se encontrará en “/usr/local/squid/etc/squid.conf”.
    #Para reconfigurarlo :
    “/usr/local/squid/sbin/squid -k reconfigure”
    #Usuario y grupo por defecto :

    user:nobody

    grup:nogroup

    #comprobacion del squid.

    #Verificando la instalación

    /usr/local/squid/sbin/squid -k parse

    #creamos los directorios de cache

    chown -R nobody.nogrup /usr/local/squid

    /usr/local/squid/sbin/squid -z

    #debug del squid

    /usr/local/squid/sbin/squid -NCd1

    nos debe de salir cerca de la linea final “Ready to serve requests.”

    #iniciar el squid

    /usr/local/squid/sbin/squid
    #Ejemplo de uso:
    En squid.conf, colocamos en el campo TOS el valor de 4 en hexadecimales:
    zph_tos_local 0×4
    Luego en nuestros scripts de TC, hacemos el manejo de los paquetes con el campo TOS de valor 4:

    LANDEV=eth1
    TC=/sbin/tc
    ....... Class creadas, y otros filtros .....
    $TC filter add dev $LANDEV parent 1:0 protocol ip prio 1 u32 \
    match ip protocol 0x6 0xff \
    match ip tos 0x4 0xff \
    flowid 1:60
    

    Los paquetes de protocolo tcp(0×6) y con el campo tos de valor 0×4, se irán a la clase 1:60.

    Nota: Esto puede funcionar bien, pero si no quiere parchear el squid, entonces puede solo reconocer los hits del squid, con ayuda del iptables, esto se puede lograr, reconociendo la cadena “X-Cache: HIT” de nuestros paquetes tcp:

    iptables -A OUTPUT -t mangle -p tcp -m string --string "X-Cache: HIT" --algo kmp -j MARK --set-mark 666
    

    Aunque este método es más simple, habría que probarlo mejor.
    fuente:http://zph.bratcheda.org/
    salu2.

    Seguir

    Recibe cada nueva publicación en tu buzón de correo electrónico.

    Únete a otros 67 seguidores