Tag Archives: squid

NEW RELEASE: HAARPCACHE v1.2

NEW: HaarpCache v1.5 and HaarpViewer v1.1

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:

DELAY POOLS PARA CONTROL DE ANCHO DE BANDA

Una breve introducción :

delay_pools n

esto quiere decir que vamos hacer n reglas, de acceso limitado

delay_class r m

Estamos configurando la r-ésima regla de las n’s que hemos definido al principio, dénse cuenta que sólo hay n delay pools definidos al inicio, asi r <= n.
El “m” quiere decir el tipo de clase que tendrá la regla r-ésima. Hay 3 tres tipos de clases, la 1,2 y 3:
si m=1: Esto quiere decir que se aplicara una regla de acceso limitado a todos lo que esten detrás del proxy sin importar como esten estructurados dentro de la lan.
si m=2: Esto quiere decir que vamos a aplicar una regla de acceso limitado a todos los que esten detrás del proxy (o 256 usuarios), y a la ves vamos a limitar a una misma velocidad a cada uno de estos usuarios, que estén detrás del proxy.
si m=3: Esto es hacer un delay pools de clase 1 con 256 delay pools de clase 2 que son subordinados de este.

delay_parameters r [p1/q1 p2/q2 … (r filtros)]

Con esto estamos limitando el ancho de banda según la clase que presenta el delay pools “r”, el p1/q1 quiere decir que vamos a descargar todo el ancho de banda (sí asi es) hasta que superemos los q1 bytes; luego nos limitara con la velocidad de p1 bytes por segundo.
por ejemplo para r=1:

delay_parameters 1 p1/q1

para un r=2:

delay_parameters 2 p1/q1 p2/q2

el primer “p1/q1” es para el total de usuarios dentro de la lan, y el “p2/q2” es para cada usuario conectado detras del proxy en este caso.

Tener presente que los valores p1, q1, p2, q2..etc deben ser dados en bytes.

delay_access r [allow, deny] [parm1, parm2, etc]
delay_access r [allow, deny] [parm1, parm2, etc]

delay_access r2 [allow, deny] [parm1, parm2, etc]
delay_access r2 [allow, deny] [parm1, parm2, etc]

Aqui vamos a decir que condiciones deben de cumplir los usuarios (como: La hora, ip fuente, ip destino, la pagina que visitan,que extenciones quieren descargar, path’s..etc ), para que se les aplique una de las r-esimas reglas ya definidas anteriormente, (en delay parameters).
Las condiciones estan dadas por los parámetros parm1, parm2 …, definidos en los acl’s del squid mismo. (vea los ejemplos al final)
Para hacer las condiciones hay que tener presente 2 cosas:
1: De las lineas:
delay_acces r [allow deny] [parm1 parm2 parm3]
delay_acces r [allow deny] [parm4 parm5 ]
nos quiere decir que a un usuario se les aplicará la regla “r”, si y sólo sí es cierto la proposicion lógica:
( parm1 & parm2 & parm3 ) | (parm4 & parm5),

A manera de nota: “&” denota “y” y el “|” denota el “o”.
2: Otra cosa que tenemos que tener presente es que si un usuario ya se le asigna una regla, entonces ya no ba a ser remplazadla por otra, esto es que si entra en una regla ya no pasa por las demás delay access.
ahora veamos unos ejemplos de como usar delay pools en squid:
e.g 1:

acl tiempo time 18:00-22:30
acl internet src 0/0
delay_pools 1

delay_class 1 2

delay_access 1 allow tiempo
delay_access 1 deny !tiempo
delay_access 1 allow internet

delay_parameters 1 20240/20240 20240/20240

Aqui Restringimos el acceso a internet con 19kB/s la descarga, a cada uno de los usuarios, en el horario “tiempo”

Otro ejemplo de uso un poco más compleja:

Aqui queremos hacer que nuestra lan (192.0.2.x) tenga una velocidad de descarga de 150KB/s SOLO sobre los archivos de extenciones .exe, .mp3, .avi, etc. en las HORAS de la noche (6:00 pm a 11:55 pm), ademas por si fuera poco, queremos que los usuarios descargen desde el proxy(192.0.2.1) a toda velocidad, esto puede servir si estamos haciendo cache de los videos (como por ejemplo thundercache o videocache), asi poder servir los videos cacheados sin restriccion como deberia de ser.

#192.0.2.1 es nuestra ip que tiene el proxy dentro de la lan.
acl intranet url_regex 192.0.2.1 
acl tiempo time 18:00-22:30
acl internet src 0/0
acl extensiones_descargas url_regex -i 	
.flv$ .exe$ .mp3$  .zip$ .rar$ .avi$ .mpeg$  .mpg$  .iso$ .raw$ .wav$ .mov$  .wmv$ .dvd$ .mpg$ .mpeg$ .7z$

#delay pools
delay_pools 2
delay_class 1 2
delay_class 2 2

#descargar a toda velocidad solo si se conectan al proxy
delay_parameters 1  -1/-1 -1/-1
delay_access 1 allow intranet
#descarga restringida a 150KB/s sobre algunas extenciones cuando accedan a internet, y estemos 
#sobre la hora "tiempo".
delay_parameters 2 150240/150240 150240/150240
delay_access 2 allow extensiones_descargas tiempo

Saludos.

INSTALACIÓN DE PROXY TRANSPARENTE CON SQUID

Sistema proxy (dos tarjetas de red):
Notas:

eth0 : Interfaz para la entrada de internet(WAN)
eth1 : Interfaz para nuestra red local(LAN)

red internet:   eth0
ip  de salida internet:  192.168.1.2
puerta de enlace: 192.168.1.1

red  local:   eth1
ip para la entrada lan: 192.168.0.1
puerta de enlace: <vacío>

ip pc cliente:  192.168.0.x

Se prueba con la distribución ubuntu 9.04, pero esto puede aplicarse a toda distribución basada en debian, y con algunas modificaciones, también a distribuciones basadas en redhat.
Hagamos la configuración de internet, para nuestro ubuntu:

-Desactivamos las interfaces de red.

sudo ifdown eth0
sudo ifdown eth1
 

-Editamos el archivo “/etc/network/interfaces”
copiar:
Para la interfaz de salida

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast  192.168.1.255
gateway 192.168.1.1

Para la interfaz de entrada, y seguido de lo anterior:

auto eth1
iface eth1 inet static
address  192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255

Guardamos y salimos.
Editar el archivo “/etc/resolv.conf”, y agregar las dns de nuestro proveedor de internet o el que deseemos
Copiar: (caso telefónica Perú)

nameserver 200.48.225.130
nameserver  200.48.225.146

Luego reiniciamos el servicio:

sudo  /etc/init.d/networking restart

*Ahora que tenemos nuestras interfaces configuradas, procedemos a instalar squid, en este caso lo probamos con squid V2.7.STABLE3

sudo apt-get install squid

configuramos squid transparente

sudo gedit /etc/squid/squid.conf

modificamos:

http_port 3128 transparent
cache_mem 30 mb
cache_dir ufs /var/spool/squid 2000 16 256

Agregamos lo siguiente antes de donde dice:
“http_access deny !Safe_ports”

acl red_local src 192.168.0.0/24
acl localhost src  127.0.0.1/32
http_access allow localhost
http_access allow red_local

reemplazamos en “maximum_object_size_in_memory 8 KB” por “maximum_object_size_in_memory 100 KB”
Esto indica que haremos cache de a lo más 100KB, esto debe depender de cada uno.
reemplazamos en “cache_replacement_policy lru” por “cache_replacement_policy heap gdsf”
Con esto indicamos el tipo de algoritmo que se ha de seguir para poder administrar los archivos que se encuentran en cache.
para más información visitar aqui.
Luego la parte esencial de todo esto, la configuración de los patrones de refresco.

# Debian
refresh_pattern -i \.deb$   129600 100% 129600
refresh_pattern -i \.gz$   129600 100% 129600
refresh_pattern -i \.bz2$   129600 100% 129600

# Imagenes
refresh_pattern -i \.gif$ 14400 80% 43200
refresh_pattern -i \.tiff?$ 14400 80% 43200
refresh_pattern -i \.bmp$ 14400 80% 43200
refresh_pattern -i \.jpe?g$ 14400 80% 43200
refresh_pattern -i \.xbm$ 14400 80% 43200
refresh_pattern -i \.png$ 14400 80% 43200
refresh_pattern -i \.wrl$ 14400 80% 43200
refresh_pattern -i \.ico$ 14400 80% 43200
refresh_pattern -i \.pnm$ 14400 80% 43200
refresh_pattern -i \.pbm$ 14400 80% 43200
refresh_pattern -i \.pgm$ 14400 80% 43200
refresh_pattern -i \.ppm$ 14400 80% 43200
refresh_pattern -i \.rgb$ 14400 80% 43200
refresh_pattern -i \.ppm$ 14400 80% 43200
refresh_pattern -i \.rgb$ 14400 80% 43200
refresh_pattern -i \.xpm$ 14400 80% 43200
refresh_pattern -i \.xwd$ 14400 80% 43200
refresh_pattern -i \.pict?$ 14400 80% 43200

# Movies
refresh_pattern -i \.mov$ 14400 80% 43200
refresh_pattern -i \.mpe?g?$ 14400 80% 43200
refresh_pattern -i \.avi$ 14400 80% 43200
refresh_pattern -i \.qtm?$ 14400 80% 43200
refresh_pattern -i \.viv$ 14400 80% 43200
refresh_pattern -i \.swf$ 14400 80% 43200

# Sounds
refresh_pattern -i \.wav$ 14400 80% 43200
refresh_pattern -i \.aiff?$ 14400 80% 43200
refresh_pattern -i \.au$ 14400 80% 43200
refresh_pattern -i \.ram?$ 14400 80% 43200
refresh_pattern -i \.snd$ 14400 80% 43200
refresh_pattern -i \.mid$ 14400 80% 43200
refresh_pattern -i \.mp2$ 14400 80% 43200
refresh_pattern -i \.mp3$ 14400 80% 43200

# Archives
refresh_pattern -i \.sit$ 14400 80% 43200
refresh_pattern -i \.zip$ 14400 80% 43200
refresh_pattern -i \.hqx$ 14400 80% 43200
refresh_pattern -i \.exe$ 14400 80% 43200
refresh_pattern -i \.arj$ 14400 80% 43200
refresh_pattern -i \.lzh$ 14400 80% 43200
refresh_pattern -i \.lha$ 14400 80% 43200
refresh_pattern -i \.cab$ 14400 80% 43200
refresh_pattern -i \.rar$ 14400 80% 43200
refresh_pattern -i \.tar$ 14400 80% 43200
refresh_pattern -i \.gz$ 14400 80% 43200
refresh_pattern -i \.z$ 14400 80% 43200
refresh_pattern -i \.a[0-9][0-9]$ 14400 80% 43200
refresh_pattern -i \.r[0-9][0-9]$ 14400 80% 43200

# Data files
refresh_pattern -i \.txt$ 14400 80% 43200
refresh_pattern -i \.pdf$ 14400 80% 43200
refresh_pattern -i \.doc$ 14400 80% 43200
refresh_pattern -i \.rtf$ 14400 80% 43200
refresh_pattern -i \.tex$ 14400 80% 43200
refresh_pattern -i \.latex$ 14400 80% 43200

# Java-type objects
refresh_pattern -i \.class$ 14400 80% 43200
refresh_pattern -i \.js$ 14400 80% 43200
refresh_pattern -i \.class$ 14400 80% 43200

# Web-type objects
refresh_pattern -i \.css$ 10 20% 4320
refresh_pattern -i \.html?$ 10 20% 4320
refresh_pattern \/$ 10 20% 4320


# Para evitar problemas con scripts .do
refresh_pattern -i \.do$ 0 0% 1440

# Default
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320

Finalmente:
Reiniciamos el servicio squid:

sudo /etc/init.d/squid restart

Aquí el cliente (192.168.0.x) podría egresar a internet por medio del proxy configurado desde el navegador.
Reglas de iptables

sudo iptables -t nat -A POSTROUTING -o eth0 -j SNAT  --to 192.168.1.2
sudo iptables  -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port  3128
#permitir conexión entre las interfaces de red
echo 1 > /proc/sys/net/ipv4/ip_forward

Las anteriores lineas, se guardan en un archivo “proxy_rules.sh” en “/etc/init.d/” luego le damos permisos de ejecución
Luego editamos el archivo “/etc/init.d/rc.local” y le agregamos al inicio

cd  /etc/init.d
./proxy_rules.sh

Con esto hacemos que desde el inicio squid funcione de manera transparente.
Reconfiguramos el servicio squid:

sudo squid -k reconfigure

Con esto el cliente (192.168.0.x) puede navegar por internet, sin necesidad de configurar el proxy en su navegador, es decir en modo transparente.