Reducir el consumo de ancho de banda mediante apt-cacher-ng en aulas de portátiles | Algo de Linux

viernes, 19 de abril de 2013

Reducir el consumo de ancho de banda mediante apt-cacher-ng en aulas de portátiles


En ocasiones me han llamado de un aula porque se les abre el navegador y no carga las páginas web. Y si lo pensamos bien, puede ser normal. El ancho de banda disponible vía wifi no es igual que cuando conectamos los portátiles vía ethernet y encima, tenemos tareas que instalan software o procesos como pkgsync que están consumiendo sin ninguna limitación.

En mi opinión, pienso que deberíamos minimizar y/o limitar la instalación de software en portátiles en aulas donde la conexión a la red se realiza vía wifi para lograr que el usuario disponga de ancho de banda para navegar y que los procesos de instalación de software no consuman más de lo necesario.

Para intentar solucionar este problema estoy trabajando en dos temas:
  • Cachear de forma transparente los paquetes que pidan los portátiles en cada servidor de aula.
  • Limitar el consumo de ancho de banda mediante las delay pools de squid.
De limitar el consumo de ancho de banda ya hablaremos en otro post. De momento os voy a contar cómo cachear los paquetes que van a instalar nuestros portátiles mediante apt-cacher.

La idea es que cuando un portátil descargue software, éste se cachee en el servidor de aula. De este modo, cuando los demás portátiles del aula pidan de nuevo el paquete, lo obtendrán directamente de ese servidor, reduciendo el tráfico de descarga del software a la subred local.

Para instalar el sistema tengo dos módulos:
La tarea servidor_apt-cacher-ng es muy sencilla de momento, porque tan sólo instala el paquete apt-cacher-ng y no necesito hacer configuraciones especiales.

En cuanto a la tarea cliente_apt-cacher-ng, lo único que hace es colocar un script (apt-cacher-ng-proxy) creado por mis alumnas de prácticas Sagrario e Inma. Este script se lanza al levantar el interfaz de red para activar el uso del proxy sólo cuando el portátil detecta que la ip 192.168.0.254 responde a un ping.

A continuación podéis ver los módulos y el script apt-cacher-ng-proxy:

Servidor_apt-cacher-ng

class servidor_apt-cacher-ng {

   package { apt-cacher-ng:
      ensure => latest
   }
   
}
 
Cliente_apt-cacher-ng

class cliente_apt-cacher-ng {

   file { "/etc/network/if-up.d/apt-cacher-ng-proxy":
      source => "puppet://puppetinstituto/cliente_apt-cacher-ng/apt-cacher-ng-proxy",
      owner => root, group => root, mode => 755
   }

}
 
Script apt-cacher-ng-proxy

#!/bin/bash
# Configura el proxy apt para usar el apt-cacher-ng en el aula
# Cuando el equipo está fuera del aula borra la configuración
# El script se lanza al levantar el interfaz de red
#
# Sagrario Pedraza Labrador && Inmaculada Gomez Gomez
# 12/04/2013


puertaenlace="192.168.0.254"


#obtenemos la puerta de enlace por defecto


if  ping -c 1 "$puertaenlace" > /dev/null 2>&1; then
 
 if [ ! -f "/etc/apt/apt.conf.d/02proxy" ]; then

  echo 'Acquire::http { Proxy "http://192.168.0.254:3142"; };' > '/etc/apt/apt.conf.d/02proxy';

 fi

else
    if [ -f "/etc/apt/apt.conf.d/02proxy" ]; then
 rm /etc/apt/apt.conf.d/02proxy
    fi
fi

Si os dáis cuenta, en el script se comprueba si el interfaz 192.168.0.254 responde a un ping. 
  • Si responde, se crea un archivo 02proxy en /etc/apt/apt.conf.d/ que establece el proxy a usar para la descarga de paquetes en la red 192.168.0.0
  • Si no responde, entendemos que no hay conexión o que se encuentra en otra red. Y, en este caso, borra el archivo 02proxy de /etc/apt/apt.conf.d/ para que funcione la descarga de paquetes fuera de la subred del aula. Esto me interesaba hacerlo para que el sistema de paquetes me permita actualizar el portátil cuando lo conecte a la red principal del centro.
En la imagen del principio podéis apreciar la mejora que hemos conseguido en alguna de las pruebas realizadas.