jueves, 9 de enero de 2014

tutorial: Desactivando ipv6 (y SLAAC) a lo gomero

Tuve un compañero de universidad que por nivel de frikismo vaticinó que sería el típico que gastase sus tardes de invierno en casa compilando el kernel de linux. Por supuesto yo lo negué y dije que jamás sería tan friki como para compilar por mi cuenta el kernel.

Bueno, pues va siendo hora de reconocer mi nivel de frikismo. SI, lo acepto, me gusta linux y me gusta el open source, me gusta compilar el kernel desde que hace un mes aprendí a hacerlo.
He conseguido disminuir el tiempo de carga de mi portátil en 10 segundos y eso que el pobre tiene ya 9 años que en escala humana serían como 99.

La historia comienza cuando este verano quise investigar cuales distribuciones de linux son optimizadas para ordenadores viejos. Empecé probando lubuntu, es de las mejores ya que incorpora el escritorio LXDE que no ocupa nada literalmente. El siguiente paso fue buscar distribuciones más difíciles como puede ser archlinux que tienen la flexibilidad de personalizar los demonios que quieres que carguen al principio etc...
Pero la distribución por antonomasia es GENTOO LINUX y a continuación explicaré el porqué de escribirlo en mayúsculas.

Gentoo es una distribución en que todos los paquetes o programas DEBEN de ser compilados, para ello el instalador te proporciona un gcc y poco más, pero resulta que al contrario que pueda parecer es sumamente sencillo de utilizar.
Dispone del gestor de paquetes emerge, el cual como cualquier otro, detecta dependencias y las descarga y compila, todo ello sin uno tener que escribir ningún comando mágico en la consola.

Las ventajas son tremendas dado que uno controla las optimizaciones independientes de la máquina que hace gcc e incluso puede decirle si tu procesador tiene el repertorio SSE o SSE2 como es mi caso.
Esto resulta en un código especial para tu procesador lo cual es sumamente positivo, dado que un programa determinado irá más rápido en determinadas circunstancias.

Después de este prologo un tanto largo no voy a continuar con la explicación de porqué es necesario desactivar SLAAC en un entorno en que ipv4 es suficiente, sino iré directamente al grano.
Para quien quiera informarse del tema seguir el siguiente enlace:
http://www.elladodelmal.com/2013/03/evil-foca-ataque-slaac-1-de-4.html

Como bien dice el título del post, va a ser una solución gomera, es decir... a lo bruto. ¿Para qué quiero desactivar ipv6 si siempre puedo no incluirla en la pila de protocolos?

Sabiendo compilar el kernel y no perdiéndose entre tantas opciones de configuración, es sumamente sencillo deshacerse de ipv6 de una vez por todas.

Antes de empezar decir que este tutorial está hecho para gentoo linux, pero quien tenga ubuntu que se mire el manual de como compilar el kernel:
https://help.ubuntu.com/community/Kernel/Compile

Nos vamos a la carpeta donde está el fuente:
cd /usr/src/linux


tecleamos make menuconfig
o sudo make menuconfig si no tenemos permisos de administrador:


nos aparecerá una pantalla bien bonita hecha con ncurses:



Nos dirigimos a:
Network Supporting -> Networking Options -> The IPv6 Protocol

y escribimos la N de no para decir que no lo queremos en el kernel ni como modulo.




le damos a exit y esto hará que se guarde el config en .config


lo unico que queda es lo normal en estos casos


  1. hacer make
  2. ir a arch/x86/boot/bzimage y copiarla a /boot
  3. luego hacer make modules_install para compilar los modulos..
  4. luego como opcional hacer una imagen inicial de ram initramfs... "genkernel --install initramfs"
  5. y por ultimo decirle al bootloader que hay un nuevo kernel listo "grub2-mkconfig -o /boot/grub/grub.cfg"


y reiniciar....

ESO es to, eso es to, eso es tooodoo amigos.

Hemos borrado de un plumazo un protocolo de red de la pila, fácil, sencillo y para toda la familia!

En un capitulo posterior discutiremos cuales son las desventajas de tener los drivers compilados en módulos y cuales son las ventajas de incorporarlos dentro del kernel. JIJIJIJIJI soy friki!

No hay comentarios:

Publicar un comentario