domingo, 22 de julio de 2012

Tunel IPv6 en un VPS (OpenVZ)

Cuando uno trata de habilitar un Tunel IPv6 en un VPS OpenVZ, de lo primero que se da cuenta es que los módulos para ipv6 están desactivados.

Primero tenemos que darnos cuenta de qué módulos disponemos. Para poder habilitar un tunel, necesitamos el módulo TUN activado, e IPv6 en el Kernel.

Primero, y lo más importante, para saber si tenemos IPv6 en el Kernel, debemos fijarnos si con el comando "ifconfig" encontramos alguna dirección IPv6 en el loopback.



Teniendo esto, sabemos ya que el kernel de nuestro VPS soporta IPv6.

Ahora la segunda parte, es habilitar el módulo TUN en SolusVM de nuestro servidor.


Como podrás apreciar, ya lo tengo activado :P, pero en el caso de que no aparezca esta opción, debes enviar un ticket de soporte a tu proveedor de VPS. Si el proveedor no lo acepta, olvídalo.

Ahora la parte fácil, que es hacer un tunel IPv6 en Hurricane Electric, lo cual no explicaré como hacer :P

Y ahora la parte linda:

Existe un pequeño programa que permite tener IPv6 solo teniendo el módulo TUN. Este programita escrito en C se llama tb-tun, el cual descargaremos en nuestro VPS con el siguiente comando:

wget http://tb-tun.googlecode.com/files/tb-tun_r18.tar.gz
Luego lo descomprimimos
tar -xvf tb-tun_r18.tar.gz
(si es que tienes un SO de 32bits no es necesario el sgte paso, ya que viene precompilado) Y ahora compilamos el código. Para esto debes tener gcc, que viene por defecto en la mayoría de los VPSs, sino, a instalarlo según la distribución.
gcc -oterm -lpthread tb_userspace.c -o tb_userspace
Luego copiamos tb_userspace a /usr/local/sbin donde lo manejaremos.

cp tb_userspace /usr/local/sbin

Teniendo los datos de Hurricane Electric, vamos a armar un pequeño script para levantar el tunel, el cual podemos generar con un simple editor de texto:
nano ipv6script
Luego, editas según tus datos el script y lo guardas


#!/bin/bash -e
setsid /usr/local/sbin/tb_userspace tb [IPv4 del Tunel] [Tu IPv4] sit > /dev/null &
ifconfig tb up
ifconfig tb inet6 add [Tu IPv6 nueva (con sufijo - con "/64")]
ifconfig tb mtu 1480
route -A inet6 add default gw [IPv6 del tunel (sin sufijo - sin "/64")] dev tb
exit 0


le das permisos de ejecución:
chmod +x ipv6script
Probamos si funciona ejecutando el script:
./ipv6script
 Si no lanza ningún error, verificamos si con ifconfig obtenemos una IP

 Y si la tenemos, comprobamos conectividad:

Voilá! esto signfiica que ya tienes IPv6 funcionando correctamente :)

Para hacer que se ejecute apenas se inicie el sistema, copiamos a /etc/init.d donde se aloja todo lo de encendido
cp ipv6script /etc/init.d
 Y ejecutamos update-rc para que el sistema lo ejecute:

update-rc.d ipv6script defaults
¡Eso es todo! disfruta de tu tunel IPv6 en tu VPS :D