OPTIMIZAR SQUID + DELAYS_POOLS + SQUISH

Imagen de skypower

Existen muchas maneras de usar el squid para mejorar el rendimiento
y gestion de la cache, pero existen muchos interrogantes en cuanto
a mejorar la navegacion en sitios como youtube, yahoo, etc...
Pues aqui esta una configuracion de squid que permite cachear
al max todo lo que se navega, limitar tanto el ancho de banda y el tiempo.


# SQUID-PROXY-SKY ###
######################
# NETWORK OPTIONS
# -----------------------------------------------------------------------------
http_port 3128

# OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM
# -----------------------------------------------------------------------------
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY

# OPTIONS WHICH AFFECT THE CACHE SIZE
# -----------------------------------------------------------------------------
cache_mem 67108864 bytes
cache_swap_low 98
cache_swap_high 99
maximum_object_size 134217728 bytes
maximum_object_size_in_memory 131072 bytes
ipcache_size 4096
ipcache_low 98
ipcache_high 99
fqdncache_size 2096
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF

# LOGFILE PATHNAMES AND CACHE DIRECTORIES
# -----------------------------------------------------------------------------
cache_dir ufs /var/spool/squid 15000 16 256
access_log /var/log/squid/access.log squid
cache_log none
cache_store_log none

# OPTIONS FOR TUNING THE CACHE
# -----------------------------------------------------------------------------
request_header_max_size 524288 KB
request_body_max_size 0 KB
refresh_pattern -i ^ftp: 600000 100% 700000 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-private ignore-auth
refresh_pattern -i ^http: 600000 100% 700000 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-private ignore-auth
refresh_pattern -i ^gopher: 600000 100% 700000 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-private ignore-auth
refresh_pattern -i . 600000 100% 700000 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-private ignore-auth

quick_abort_min 0 KB
quick_abort_max 0 KB
quick_abort_pct 100

read_ahead_gap 16384 bytes
negative_ttl 0 seconds
positive_dns_ttl 86400 seconds
negative_dns_ttl 1 seconds
range_offset_limit 0 bytes

# TIMEOUTS
# -----------------------------------------------------------------------------
forward_timeout 240 seconds
connect_timeout 60 seconds
peer_connect_timeout 30 seconds
read_timeout 900 seconds
request_timeout 120 seconds
persistent_request_timeout 60 seconds
client_lifetime 7200 seconds
half_closed_clients off
pconn_timeout 60 seconds
shutdown_lifetime 20 seconds

# SQUIDGUARD
# -----------------------------------------------------------------------------
redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
redirect_children 1

# AUTH REQUIRED
# -----------------------------------------------------------------------------
auth_param basic program /usr/lib/squid/ldap_auth -b "cn=users,dc=midominio,dc=cu" 127.0.0.1
acl auth proxy_auth REQUIRED

# SQUISH (QUOTA)
# -----------------------------------------------------------------------------
acl SQUISHLOC url_regex \.mydomain\.cu
acl SQUISHED1 proxy_auth -i "/etc/squid/squished"
deny_info http://proxy.mydomain.cu/?squished& SQUISHED1
http_access allow SQUISHLOC

# ACCESS CONTROLS
# -----------------------------------------------------------------------------
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 443 80 21 563 70 210 280 488 591 777 901 1025-65535
acl purge method PURGE
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

# ACCESS CONTROLS MY SERVER
# -----------------------------------------------------------------------------
acl server-ip src 10.0.0.1
acl director src 10.0.0.10
acl redlocal src 10.0.0.0-10.0.0.100
acl jornada time SMTWHFA 08:00-16:40
acl denysite url_regex -i 'c:/squid/etc/denysite'
acl allowsite url_regex -i 'c:/squid/etc/allowsite'

http_access allow server-ip
http_access allow director jornada
http_access deny denysite !allowsite
http_access allow redlocal jornada auth
http_access deny all

always_direct allow all
never_direct deny all

# NO CACHE
# -----------------------------------------------------------------------------
acl urlnocache url_regex -i mydomain.cu htm mht hta htc zips bases update upgrade upload virus
no_cache deny urlnocache

# INFO ADMIN SERVER
# -----------------------------------------------------------------------------
cache_mgr admin@mydomain.cu
visible_hostname proxy.mydomain.cu

# SECURITY
# -----------------------------------------------------------------------------
header_access From deny all
header_access User-Agent deny all
header_access Via deny all
header_access X-Forwarded-For deny all
header_access Accept-Language deny all
header_replace User-Agent Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.12)
header_replace Via 127.0.0.1
header_replace X-Forwarded-For 127.0.0.1
header_replace Accept-Language es,en

http_reply_access allow all
icp_access allow all
miss_access allow all
reply_header_max_size 20480 bytes
reply_body_max_size 0 allow all

# MISCELLANEOUS
# -----------------------------------------------------------------------------
logfile_rotate 0
memory_pools on
forwarded_for off
log_icp_queries off
icp_hit_stale on
dns_testnames localhost
icon_directory /usr/share/squid/icons
error_directory /usr/share/squid/errors/Spanish
nonhierarchical_direct off
prefer_direct off
pipeline_prefetch on
store_dir_select_algorithm round-robin
vary_ignore_expire on
emulate_httpd_log off
offline_mode off
ie_refresh on

# DELAY POOLS
# -----------------------------------------------------------------------------
delay_pools 3

delay_class 1 3
delay_class 2 3
delay_class 3 3

delay_parameters 1 -1/-1 -1/-1 -1/-1
delay_parameters 2 9000/9000 9000/9000 9000/9000
delay_parameters 3 4125/4125 4125/4125 4125/4125

delay_access 1 allow server-ip
delay_access 2 allow director
delay_access 3 allow redlocal
delay_access 4 deny all

# Para los que desean empesar a usar squid desde windows una modificacion del ejemplo anterior...

cache_dir ufs d:/squid/var/cache 500 16 256
coredump_dir d:/squid/var/cache
access_log c:/squid/var/logs/access.log squid

acl denysite url_regex -i 'c:/squid/etc/denysite'
acl allowsite url_regex -i 'c:/squid/etc/allowsite'

icon_directory c:/squid/share/icons
error_directory c:/squid/share/errors/Spanish


# Aqui les muestro diferentes maneras de restringir


# Red para las restrinciones
acl redlan src 192.168.1.10-192.168.1.100

# Restringe el acceso libre (solicita autentificacion)
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
# - Debian - LDAP
auth_param basic program /usr/lib/squid/ldap_auth -b "ou=users,dc=mydomain,dc=cu" 127.0.0.1
# - Centos - LDAP
auth_param basic program /usr/lib/squid/squid_ldap_auth -b "ou=users,dc=mydomain,dc=cu" 127.0.0.1
acl auth proxy_auth REQUIRED
http_access allow redlan auth

# Restringe el acceso a sitios o contenidos
acl denysites url_regex -i '/etc/squid/denysites'
acl allowsites url_regex -i '/etc/squid/allowsites'
http_access allow redlan allowsites !denysites

# Restringe el acceso de descargas
acl denyfiles urlpath_regex -i \.avi$ \.mp4$ \.mp3$ \.mpg$ \.mpeg$ \.mov$ \.ram$ \.vob$
http_access allow redlan !denyfiles

# Restringe la cantidad de conexiones (Limita -> IDA, DAP, downthemall, etc)
acl file urlpath_regex -i \.avi$ \.mp4$ \.mp3$ \.mpg$ \.mpeg$ \.mov$ \.ram$ \.vob$
acl maxcon maxconn 6
http_access deny file maxcon
http_access allow redlan

# Restringe el acceso por horario
acl jornada time SMTWHFA 08:00-16:40
http_access allow redlan jornada

# Restringe el acceso por dominios
acl dominio dstdomain .cu
http_access allow redlan dominio

# Restringe el acceso de MAC address
acl denymac arp 00:00:00:00:00:00
http_access allow redlan !denymac


# Restringe el ancho de banda a utilizar (-P2P), by Ecualug, falcom


delay_pools 2
delay_class 1 2
delay_class 2 2
delay_parameters 1 -1/-1 -1/-1
delay_parameters 2 4096/4096 4096/4096
delay_access 1 allow server
delay_access 2 allow redlan

# TABLA DE EQUIVALENCIAS
#2048 B ==> 16 kb ==> 2KB
#4096 B ==> 32 kb ==> 4KB
#8192 B ==> 64 kb ==> 8KB
#16384 B ==> 128kb ==> 16KB
#32768 B ==> 256Kb ==> 32KB
#65536 B ==> 512Kb ==> 64KB
#131072 B ==> 1 Mb ==> 128KB
#196608 B ==> 1.5 Mb ==> 192KB
#262144 B ==> 2 Mb ==> 256KB

# Other Example, by Ecualug (RazaMetaL)
Supongamos que tenemos contratados 512kbps con un proveedor de Internet
y queremos que de ese ancho de banda 384kbps (48Kb/s) sean destinados
para los video fanaticos de youtube, así aseguro ancho de banda
para que los demás mortales no se quejen de la lentitud.

delay_pools 1
delay_class 1 1
delay_parameters 1 48000/65000
acl formatos_video urlpath_regex -i "/etc/squid/formatos_video"
acl sitios_video url_regex -i "/etc/squid/sitios_video"
delay_access 1 allow sitios_video
delay_access 1 allow formatos_video

# Optimizacion de Squid, by Ecualug (eldany76)

#optimizar y arreglar consultas a sitios como hotmail,yahoo,etc.
hierarchy_stoplist cgi-bin \?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY

#Mejorar la forma de reemplazar objetos antiguos
cache_swap_low 90
cache_swap_high 90

#Aprovechar espacio en el disco
maximum_object_size 8192 KB
minimum_object_size 3 KB

#No llenar la memoria con archivos grandes
maximum_object_size_in_memory 96 KB

#Cachear mayor cantidad de datos IP
ipcache_size 10240
fqdncache_size 10240

#No gastar procesador ni memoria en registros log
cache_access_log none
cache_log none
cache_store_log none

#Eliminar conexiones sin cerrar
half_closed_clients off

#Ocultar ip interno del cliente o usuario
forwarded_for off

#Disponemos de 512b de RAM
cache_mem 480 MB

cache_dir aufs /var/squid 20000 16 256

#Cambiar algoritmos de actualizacion para ahorrar ancho de banda
refresh_pattern ^http: 2880 90% 10080
refresh_pattern ^ftp: 1440 80% 10080
refresh_pattern ^gopher: 240 95% 10080
refresh_pattern . 1440 90% 22160

#Conviene no tocar lo dado por Squid
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80 #http
acl Safe_ports port 21 #ftp
acl Safe_ports port 443 563 #https, snees
acl Safe_ports port 70 #Gopher
acl Safe_ports port 210 #wais
acl Safe_ports port 1025-65535 #unregistered ports
acl Safe_ports port 280 #http-mgmt
acl Safe_ports port 488 #gss-http
acl Safe_ports port 591 #filemarker
acl Safe_ports port 777 #multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

#Dejamos usar el cache solo en nuestra red
acl usuarios src 192.168.1.0/255.255.255.0
http_access allow usuarios
http_access deny all

http_reply_access allow all
icp_access allow all


SQUID con SQUISH

By JovenClub [Sarbelio-Moa], Rimed [wilfredo-vcl, Ariel-cfg]

# Libreria necesaria

aptitude install libtemplate-perl

# Descargar el paquete y descomprimirlo

wget -P /usr/local http://www.ledge.co.za/software/squint/squish/squish-0.0.18.tar.gz?
cd /usr/local
tar -vzxf /usr/local/squish-0.0.18.tar.gz
rm /usr/local/squish-0.0.18.tar.gz
mv /usr/local/squish-0.0.18 /usr/local/squish
chown -R root.root /usr/local/squish

# Creamos el fichero squished (vacio)

touch /etc/squid/squished

# Copie el fichero squish.conf

cp /usr/local/squish/squish.conf /etc/squid/squish.conf

# Agrege estas lineas al squid.conf

nano /etc/squid/squid.conf
# SQUISH (QUOTA)
# -----------------------------------------------------------------------------
acl SQUISHLOC url_regex \.mydomain\.cu
acl SQUISHED1 proxy_auth -i "/etc/squid/squished"
deny_info http://proxy.mydomain.cu/?squished& SQUISHED1
http_access allow SQUISHLOC -----------------------------------------------------------------------------

# Establecer las cuotas

cat > /etc/squid/squish.conf << "EOF"
usuario1 150Mb/month
usuario2 100Mb/month
usuario3 50Mb/month
EOF

# Crear un virtualhost llamado "proxy" y el host activo en el DNS

cat > /etc/apache2/sites-enabled/proxy << "EOF"

ServerName proxy.mydomain.cu
DocumentRoot /usr/local/squish

Options +ExecCGI
AddHandler cgi-script .cgi
DirectoryIndex squish.cgi
AllowOverride None
Order allow,deny
Allow from all

ServerSignature On
LogLevel warn
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/proxy_access.log combined

EOF

# Automatizacion

crontab -e
*/5 * * * * /usr/local/squish/squish.cron.sh

NOTA: La DB se almacena en ( /var/lib/squish )

Salud2s...

Comentarios

Sería interesante que

Imagen de deathUser

Sería interesante que expliques un poco cada configuración personalizada que has puesto y que consideraciones se deberían tener para que un usuario lo pueda adaptar a su entorno particular

bye
:)

Me gustaria que me

Imagen de Mirrortech

Me gustaria que me explicaras los siguientes lineas..

En las ACL
acl server-ip src 10.0.0.1
acl director src 10.0.0.10
acl redlocal src 10.0.0.0-10.0.0.100

A que se refiere cada una de estas lineas?????

En OPTIONES QUE AFECTAN EL CACHE..
Porque NO me acepta estas 2 lineas..

cache_replacement_policy heap LFUDA *** Con estas 2 opciones NO arranca el SQUID..
memory_replacement_policy heap GDSF

Como lo dice el comentario , cuando las coloco el SQUID Me bota ERROR de POLITICA...

Tengo SQUID 2.6 STABLE6 en CentOS5.0

Con solo quitar las 2 ultimas lineas ya el SQUID me arranca.. pero lo siento lento..

ATT
Leonel

Como se lo dije a skypower,

Imagen de deathUser

Como se lo dije a skypower, sería bueno que nos explique que hace cada opción ya que hay muchas que dependen de tu hardware y de tu enlace como los delay pools y las opciones de memoria y caché.

Las ACLS normalmente defines las que quieres y en general defines una que englobe tu red interna para luego garantizarle el acceso, eso lo hace en
acl redlocal src 10.0.0.0-10.0.0.100
donde dice que el rango de IPS de 10.0.0.0 a 10.0.0.100 es su red interna, te recomendaría que leas el manual para que veas las opciones que hay disponibles y más que todo que mires las opciones de memoria y caché ya que van a depender del hardaware que tengas.

Suerte ...

bye
:)

RE:

Imagen de skypower

Colega yo aqui declaro las computadoras a las cuales de dare internet, la diferencia entre ellas es que al server-ip le doy toda la navegacion, al director de doy un poco menos y a la red local menos que el director... Sabes que el uso de los delay_pools es para la optimizacion de la navegacion, es logico que este lento porque esto solo fue un ejemplo... esta configuracion que vez aqui es para un server que su internet es a travez de un Router 64Kb/s... si tienes mas velocidad tienes que adaptar los delay_pools a tu gusto...

Una cosa mas, debes valorar la cantidad de memoria RAM de tu server y adaptar esta linea:

cache_mem 12582912 bytes

Igual le ocurre con la capacidad de almacenamiento y la asignada para el cache

cache_dir ufs /var/spool/squid 15000 16 256

Yo tambien use el squid2.6 debian etch...

Sobre las lineas debes revisar bien que no tenga malos caracteres, edita el squid.conf por el mc y mira si al final tiene caracteres negros, eso te puede dar problemas..


#Estas son las pc o rangos de red que le dare el acceso
acl server-ip src 10.0.0.1
acl director src 10.0.0.10
acl redlocal src 10.0.0.0-10.0.0.100

#Aqui es donde declaro el ancho de banda para cada uno
delay_parameters 1 -1/-1 -1/-1 -1/-1
delay_parameters 2 9000/9000 9000/9000 9000/9000
delay_parameters 3 4125/4125 4125/4125 4125/4125
delay_parameters 4 924/924 924/924 924/924

#Aqui es donde le aplico la restrincion
delay_access 1 allow server-ip
delay_access 2 allow director
delay_access 3 allow redlocal
delay_access 4 allow all

ecualug
______________________
!!!AdminRed_Debian!!!

RE:

Imagen de skypower

OK deathUser, voy a sacar un tiempo y explicar detalladamente esta configuracion, ya es le sera muy util a todos lo que deseen optimizar su navegacion y ademas controlar al max el ancho banda.
NOTA:Esta configuracion ha sido probada en mas de 50 servidores y a funcionado a la perfeccion y los criterios tanto de los usuarios como del adminred son muy aceptables

ecualug
______________________
!!!AdminRed_Debian!!!

ecualug
______________________
!!!AdminRed_Debian!!!

Hay parámetros que se

Imagen de deathUser

Hay parámetros que se entienden fácil, pero otros como los de los delay pools, son medio complejos de entenderos y calcularlos, si los explicas creo que muchos te lo agradecerán ...

bye
:)

INTERROGANTE?

Hola amigos, buen ejemplo me ayudo mucho.. pero tengo un problem e interrogante..

Al correr e ir depurando los errores pues me dan estar advertencias que no entiendo mucho:


shieldICR:~# squid3 -z
2008/12/17 12:56:11| parseConfigFile: 'squid.conf' line 132 unrecognized: 'delay_pools 4'
2008/12/17 12:56:11| parseConfigFile: 'squid.conf' line 134 unrecognized: 'delay_class 1 3'
2008/12/17 12:56:11| parseConfigFile: 'squid.conf' line 135 unrecognized: 'delay_class 2 3'
2008/12/17 12:56:11| parseConfigFile: 'squid.conf' line 136 unrecognized: 'delay_class 3 3'
2008/12/17 12:56:11| parseConfigFile: 'squid.conf' line 137 unrecognized: 'delay_class 4 3'
2008/12/17 12:56:11| parseConfigFile: 'squid.conf' line 139 unrecognized: 'delay_parameters 1 -1/-1 -1/-1 -1/-1'
2008/12/17 12:56:11| parseConfigFile: 'squid.conf' line 140 unrecognized: 'delay_parameters 2 9000/9000 9000/9000 9000/9000'
2008/12/17 12:56:11| parseConfigFile: 'squid.conf' line 141 unrecognized: 'delay_parameters 3 4125/4125 4125/4125 4125/4125'
2008/12/17 12:56:11| parseConfigFile: 'squid.conf' line 142 unrecognized: 'delay_parameters 4 924/924 924/924 924/924'
2008/12/17 12:56:11| parseConfigFile: 'squid.conf' line 144 unrecognized: 'delay_access 1 allow webtotal'
2008/12/17 12:56:11| parseConfigFile: 'squid.conf' line 145 unrecognized: 'delay_access 2 allow webtotalrest'
2008/12/17 12:56:11| parseConfigFile: 'squid.conf' line 146 unrecognized: 'delay_access 3 allow redpermitida'
2008/12/17 12:56:11| parseConfigFile: 'squid.conf' line 147 unrecognized: 'delay_access 4 allow all'
2008/12/17 12:56:11| WARNING: use of 'override-expire' in 'refresh_pattern' violates HTTP
2008/12/17 12:56:11| WARNING: use of 'override-lastmod' in 'refresh_pattern' violates HTTP
2008/12/17 12:56:11| WARNING: use of 'reload-into-ims' in 'refresh_pattern' violates HTTP
2008/12/17 12:56:11| WARNING: use of 'ignore-no-cache' in 'refresh_pattern' violates HTTP
2008/12/17 12:56:11| WARNING: use of 'ignore-private' in 'refresh_pattern' violates HTTP
2008/12/17 12:56:11| WARNING: use of 'ignore-auth' in 'refresh_pattern' violates HTTP
2008/12/17 12:56:11| Squid is already running! Process ID 4306

Espero me puedan orientar.. saludos y gracias por su tiempo amigos.

Dos posibilidades (al menos)

Imagen de deathUser

Dos posibilidades (al menos) el post habla de squid 2.6, no se si cambió la sintaxis para la versión 3 que creo que es la que estás usando, la otra es que no esté compilado con soporte para delay pools, RTFM de tu versión ...

bye
:)

Páginas