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:
1 |
LANDEV=eth1 |
2 |
TC=/sbin/tc |
3 |
....... Class creadas, y otros filtros ..... |
4 |
$TC filter add dev $LANDEV parent 1:0 protocol ip prio 1 u32 \ |
5 |
match ip protocol 0x6 0xff \ |
6 |
match ip tos 0x4 0xff \ |
7 |
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:
1 |
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/