Blogia
Ambigel + Foto[b]log

manualidades: Squid & Bind



Estos días me he puesto de manualidades, como ven en la foto (2004) arreglando una bicicleta y seguí con SQUID y BIND, para la creación de un proxy-caché y un DNS propio, el deseo es independizarme de mi ISP (TELECOM / TELEFONICA) por velocidad y por estabilidad, igualmente mi DNS consultará al DNS de mi ISP y guardará en caché las direcciones previamente consultadas; además el día que falle el DNS de mi ISP (ya pasó una vez por unas cuantas horas) el consultará directamente a los cuarteles generales de Internet.

INSTALACIÓN


Curiosamente SLACKWARE no trae el SQUID, bueno; solo tuve que descargarlo de linuxpackages.net:
#installpkg squid-2.5.STABLE13-i486-1maew.tgz
Para instalar el BIND, este se encuentra en el CD1 de slackware
#installpkg /mnt/cdrom/slackware/n/bind-9.3.1-i486-1.tgz

CONFIGURACIÓN


BIND: Para configurar BIND, solo hace falta agregar cuatro líneas en /etc/named.conf (no estoy equivocado, es named), 1- forwarders, unos DNS antes de consultar a la raíz de Internet, 2- forwards first, 3- allow-querry por seguridad solo permitir la red local, 4- notify no
/etc/named.conf


options {
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
forwarders { 192.168.1.1; 200.21.200.2; 200.21.200.79; };
forward first;
allow-query { 127.0.0.1; 192.168.1/24; };
notify no;
};

//
// a caching only nameserver config
//
zone "." IN {
type hint;
file "caching-example/named.ca";
};

zone "localhost" IN {
type master;
file "caching-example/localhost.zone";
allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
type master;
file "caching-example/named.local";
allow-update { none; };
};


y culminaremos con #echo "nameserver 127.0.0.1" > /etc/resolv.conf

SQUID: para configurarlo hará basta retocar el /etc/squid/squid.conf como lo dice cualquier tutorial sobre SQUID, luego ya que he pasado por varias distros (RedHat, SuSE, Fedora) he visto algunas cosas que me agradan y tomo estas características y las aplico; de esta manera creé un lanzador de servicios para SQUID, no soy un experto en bash-scripting pero se hace lo que se puede, a este engendro lo llamé así:
/etc/rc.d/rc.squid



#!/bin/sh
# /etc/rc.d/rc.squid, created by Alexander Andrade
# Creative Commons License

f_start()
{
/usr/sbin/squid -D
echo "SQUID started"
}

f_stop()
{
/usr/sbin/squid -k shutdown

echo -n "stoping SQUID (be patient) "

while [ -f /var/lib/squid/logs/squid.pid ]
do
echo -n "."
sleep 3
done

echo " done"
}

f_restart()
{
f_stop
f_start
}

f_reconf()
{
/usr/sbin/squid -k reconfigure
}

f_status()
{
if [ -f /var/lib/squid/logs/squid.pid ]; then
echo "SQUID is runing"
else
echo "SQUID is stoped"
fi
}

case "$1" in
’start’)
f_start
;;
’stop’)
f_stop
;;
’status’)
f_status
;;
’reconfigure’)
f_reconf
;;
’restart’)
f_restart
;;
*)
echo "Usage: $0 start|stop|restart|reconfigure|status"
esac



Cuando instalé mi primer SQUID por desconocimiento los archivos de logs en menos de dos semanas me llegaron a ocupar 500MB, para solucionar esto existe la aplicación llamada LOGROTATE, que cada determinado tiempo (requiere CRON) o dado el tamaño adquirido por los archivos a vigilar, los puede borrar o truncar; creando pequeñas copias comprimidas para poder hacerle seguimientos en caso de fallos. Para lograr toda esta magia solo tendremos que crear un archivo como el siguiente el cual me copié de Fedora y lo modifiqué para que se me acomode
/etc/logrotate.d/squid


/var/lib/squid/logs/access.log {
weekly
rotate 5
copytruncate
compress
notifempty
missingok
}

/var/lib/squid/logs/cache.log {
weekly
rotate 5
copytruncate
compress
notifempty
missingok
}

/var/lib/squid/logs/store.log {
weekly
rotate 5
copytruncate
compress
notifempty
missingok
# This script asks squid to rotate its logs on its own.
# Restarting squid is a long process and it is not worth
# doing it just to rotate logs
postrotate
/usr/sbin/squid -k rotate
endscript
}


Ahora por último solo hay que cuadrar que el sistema cargue el SQUID al inicio del sistema y lo descargue bien al finalizar, para lo primero solo tenemos que ejecutar lo siguiente
#echo "/etc/rc.d/rc.squid start" >> /etc/rc.d/rc.local
Para lo segundo tuve que modificar un archivo básico del sistema lo cual es muy riesgoso, y en el deseo de no volverlo a modificar he creado un archivo llamado /etc/rc.d/rc.local.stop que es lo contrario al rc.local y se va a encargar de ejecutar comandos previos al apagado del sistema, luego tendremos que entrar al mítico archivo /etc/rc.d/rc.0 (te recomiendo hacer un backup antes)... buscamos la entrada correspondiente a PCMCIA (no importa si tenés un pc de sobremesa) y justo debajo de esta incluimos
/etc/rc.d/rc.0



# Shutdown OWNER’S services:
if [ -x /etc/rc.d/rc.local.stop ] ; then
. /etc/rc.d/rc.local.stop
fi


Luego solo tendremos que agregar una linea en el respectivo archivo así:
#echo "/etc/rc.d/rc.squid stop" >> /etc/rc.d/rc.local.stop
#chmod +x /etc/rc.d/rc.local.stop
De esta manera, la próxima vez que tengamos que hacer algo previo al cierre del sistema lo agregamos a este archivo de esta manera.

1 comentario

Jordan Trunner -

Thanks for sharing this valuable information with us, I am really significantly surprised after reading this weblog. http://www.nikeairjordan.cc/jordan-trunner-q4-6/