sábado, julio 06, 2013

Instalación de ipfw/dummynet en Debian Wheezy

¿dummynet? ¿qué es dummynet?

Según su sitio web: “dummynet es una herramienta de simulación de redes en vivo diseñada originalmente para probar protocolos de red, y que desde entonces se utiliza para una variedad de aplicaciones entre las que se incluye el manejo de ancho de banda. Simula/impone limitaciones de encolado y ancho de banda, retrasos, pérdida de paquetes y otros efectos. Implementa también varios algoritmos de planificación. dummynet puede utilizarse en el mismo equipo donde se ejecuta la aplicación a probar o en cajas externas que actúan como enrutadores o puentes.
La selección de tráfico se realiza mediante el firewall ipfw, que es la interfaz de usuario principal para dummynet. ipfw permite seleccionar con precisión el tráfico y la dirección a trabajar, simplificando su configuración y uso.”
Para más información los dirijo al completo artículo Dummynet Revisited de los autores Marta Carbone y Luigi Rizzo.

Procedimiento

Con la colaboración de varios compañeros de trabajo surgió la siguiente receta para construirlo en Debian Wheezy (en este caso para amd64, pero es similar en i386). No es la única ni la mejor manera, pero es una que funciona. Si alguno encuentra una mejor, será bienvenida.
  1. Bajar la versión de ipfw compatible con kernels 3.x (20130607 o superior) y descomprimirla
    wget http://info.iet.unipi.it/~luigi/doc/20130607-ipfw3.tgz
    tar xvzf 20130607-ipfw3.tgz
  2. Instalar los paquetes necesarios para Debian
    apt-get install build-essential linux-headers-`uname -r` \ 
    linux-source-3.2
  3. Desempaquetar el código fuente completo del kernel linux. Esto requiere al menos 700 MB de espacio en disco libres, así que estén preparados.
    cd /usr/src
    tar xvjf linux-source-3.2.tar.bz2
  4. Copiar la configuración del kernel que se está ejecutando y las versiones de los módulos instalados
    cd /usr/src/linux-source-3.2
    cp -v /boot/config-`uname -r` .config
    cp -v /usr/src/linux-headers-`uname -r`/Module.symvers .
  5. Preparar el entorno de compilación del kernel
    cd /usr/src/linux-source-3.2
    make prepare
    make scripts
  6. Compilar ipfw indicando la ruta a los fuentes del kernel
    cd /ruta/a/ipfw3-2012
    make KSRC=/usr/src/linux-source-3.2
  7. Si no tiró errores, probar la carga y descarga del modulo ipfw_mod
    insmod kipfw-mod/ipfw_mod.ko
    dmesg
    rmmod ipfw_mod
  8. (Opcional) Instalar los binarios de ipfw y el modulo del kernel
    mkdir /lib/modules/`uname -r`/updates
    cp -v kipfw-mod/ipfw_mod.ko /lib/modules/`uname -r`/updates
    depmod
    cp -v ipfw/ipfw /usr/local/sbin
    chmod +x /usr/local/sbin/ipfw
  9. (Opcional) Verificar la instalación del modulo y agregarlo para cada inicio del equipo
    modprobe ipfw_mod
    dmesg
    echo ipfw_mod >> /etc/modules
  10. Listo!
Dejo un breve script para los haraganes que, como yo, prefieren ejecutar todo el procedimiento de un saque: build-ipfw.sh

Suerte y saludos!

jueves, julio 04, 2013

Renovando el escritorio

El tiempo ha pasado sigilosamente, las máquinas virtuales tardan cada vez más en procesar, las aplicaciones requieren de más memoria y almacenamiento... En síntesis, la obsolescencia se fue adueñando de la vieja Pentium D y de su propio usuario hasta que llega el momento de una renovación.

Así se ve el escritorio nuevo:


Software:
Debian GNU/Linux 7.1 (Wheezy, amd64)
Kernel 3.2.0-4-amd64 (3.2.46 en realidad)
Gnome 3.4.2 Classic (con iconos Gnome-Colors)

Hardware:
Intel Core i5-3470 @ 3.20 Ghz (quad)
Intel DZ68DB Motherboard
Intel Ivybridge Desktop HD2500 GPU
Memox 8 GB DDR3 RAM
Seagate Barracuda ST500DM002 (500 GB, 6Gb/s, 16Mb, 7200RPM)