Introducción.
Para hacer unas pruebas esta tarde necesito un proxy que haga caché sobre los datos descargados; inicialmente iba a instalar Squid sobre un Scientific Linux pero decidí hacerlo sobre ArchLinux, con el cual estoy jugando desde el día de ayer. Leyendo la documentación del wiki de ArchLinux, que por cierto es muy buena, encontré que hacen referencia a Polipo, un software similar en funciones a Squid pero con mayores limitaciones y destinado a servidores con muy pocos usuarios. Ese es mi caso, así que procedí a instalarlo en una máquina virtual con VirtualBox y 512MB de RAM. Espero que aguante.
Instalación de los paquetes.
Desafortunadamente lo paquetes de Polipo no están disponibles en los repositorios, sin embargo estos pueden ser creados utilizando una facilidad interesante del sistema operativo.
Los siguientes pasos deben realizarse como un usuario sin privilegios.
Descargar la versión mas reciente de los archivos (sección de files) de Polipo de la siguiente ubicación.
http://aur.archlinux.org/packages.php?ID=14579
$ wget http://aur.archlinux.org/packages/polipo/polipo/PKGBUILD
$ wget http://aur.archlinux.org/packages/polipo/polipo/polipo.install
$ wget http://aur.archlinux.org/packages/polipo/polipo/polipo
Generar el paquete.
$ makepkg -s
Instalar el paquete recién generado.
$ sudo pacman -u polipo-1.0.4.1-1-x86_64.pkg.tar.xz
Configuración de Polipo.
Crear un archivo básico de configuración a partir de la plantilla.
$ sudo cp /etc/polipo/config-sample /etc/polipo/config
Permitir las conexiones externas, además de localhost.
$ sudo vi /etc/polipo/config
proxyAddress = “0.0.0.0”
Si se desea permitir el uso del caché por equipos diferentes del mismo (localhost) es necesario especificar las redes autorizadas en la siguiente variable del mismo archivo config. Nótese que, a diferencia del ejemplo en el mismo archivo, fue necesario remover las comillas dobles que encerraban las direcciones de red.
allowedClients = 127.0.0.1, 10.0.0.0/16, 192.168.1.0/24
Actualizar el archivo de inicio de Polipo. Nótese en el script que por razones de seguridad se utilizará al usuario nobody para ejecutar el servicio.
$ sudo cp /etc/rc.d/polipo /etc/rc.d/polipo.orig
$ sudo vi /etc/rc.d/polipo
#!/bin/bash . /etc/rc.conf . /etc/rc.d/functions DAEMON=polipo ARGS="daemonise=true pidFile=/var/run/$DAEMON/$DAEMON.pid" PID=`pidof -o %PPID /usr/bin/$DAEMON` case $1 in start) stat_busy "Starting $DAEMON" rm /var/run/$DAEMON/$DAEMON.pid 2> /dev/null install -d /var/run/$DAEMON ## /usr/bin/$DAEMON $ARGS >/dev/null 2>&1 sudo -u nobody /usr/bin/$DAEMON $ARGS >/dev/null 2>&1 if [[ $? != 0 ]]; then stat_fail else add_daemon $DAEMON stat_done fi ;; stop) stat_busy "Stopping $DAEMON" kill $PID >/dev/null 2>&1 if [[ $? != 0 ]]; then stat_fail else rm_daemon $DAEMON stat_done fi ;; purge) stat_busy "Purging polipo" [[ ! -d /var/run/polipo ]] && mkdir /var/run/polipo if ! ck_daemon polipo; then kill -USR1 $DAEMON >/dev/null 2>&1 || stat_die $? sleep 1 /usr/bin/$DAEMON -x $ARGS >/dev/null 2>&1 || stat_die $? kill -USR2 $PID >/dev/null 2>&1 || stat_die $? stat_done else /usr/bin/$DAEMON -x $ARGS >/dev/null 2>&1 || stat_die $? stat_done fi ;; restart) $0 stop sleep 1 $0 start ;; *) echo "usage: $0 {start|stop|restart|purge}" ;; esac
Ajustes al sistema operativo.
Crear un proceso cron para purgar el servicio.
$ sudo vi /etc/cron.weekly/polipo
#!/bin/sh
/etc/rc.d/polipo purge >/dev/null 2>&1
$ sudo chmod +x /etc/cron.weekly/polipo
Crear las rutas necesarias para los archivos del proxy.
$ sudo touch /var/log/polipo
$ sudo chown nobody:nobody /var/log/polipo
$ sudo mkdir /var/run/polipo
$ sudo chown nobody:nobody /var/run/polipo
$ sudo mkdir /var/cache/polipo
$ sudo chown nobody:nobody /var/cache/polipo
Configurar el inicio automático de Polipo con el sistema operativo.
$ sudo vi /etc/rc.conf
DAEMONS=(syslog-ng network netfs polipo crond)
Prueba del caché.
Configure el proxy de Firefox o de cualquier otro cliente y acceda a los recursos que desee, estos deberán almacenarse en el caché por lo cual futuros accesos (recuerde limpiar el caché local de ser necesario para hacer mas confiable la prueba) deberían ser más rápidos. Como ubicación del servidor de caché utilice la IP del servidor donde se instaló Polipo y el puerto -por defecto- 8123.
Enlaces.
- Polipo – a caching web proxy.
http://www.pps.jussieu.fr/~jch/software/polipo/ - Polipo en ArchLinux.
http://wiki.archlinux.org/index.php/Polipo