20100801

Túnel IPv6 automático en Mac OS X

Aunque hay dispositivos de red (como las estaciones base Airport de Apple o los routers Linksys WRT610N) que permiten encapsular IPv6 dentro de IPv4, lo normal es que nuestra conexión hacia internet sea IPv4.
En esta entrada vamos a explicar una forma de obtener una dirección IPv6 para un Mac, y cómo instalar software de manera que se conecte automáticamente, a través de un tunel, para poder acceder a internet.
Para ello utilizaremos una cuenta de SixXS y el software AICCU para Mac OS X.


Instrucciones:
  • En primer lugar, si no la teníamos, habrá que crearse una cuenta en SixXS y solicitar un túnel, tal y como se describe en los puntos 1 a 6 de las instrucciones siguientes: http://www.sixxs.net/faq/account/?faq=10steps.
  • Descargamos e instalamos TunTap para Mac OS X.
  • Descargamos AICCU, bien en código fuente (y lo compilamos nosotros), o bien ya compilado y lo instalamos (normalmente en /usr/local/sbin/aiccu
  • Una vez dispongamos de los datos del tunel, creamos un archivo de configuración /etc/aiccu.conf, teniendo especial cuidado de rellenar correctamente, al menos, los siguientes valores:


username <usuario de acceso al túnel (proporcionado por sixxs)>
password <clave de acceso al túnel>
ipv6_interface tun0
daemonize true
automatic true

En este momento, bastaría con lanzar con un usuario administrador el comando /usr/local/sbin/aiccu start para realizar la conexión al túnel.


Los siguientes pasos servirán para configurar un demonio de Launchd que inicie la conexión cada vez que se inicie el ordenador.
  • En primer lugar creamos un script de bash, por ejemplo en /usr/local/sbin/aiccu.sh con el siguiente contenido:


#!/bin/sh
MYTUN="/dev/tun0"
FORWARD=1

while [ ! `ping -c 1 -t 2 www.sixxs.net` ] ; do
  echo "Internet no disponible (www.sixxs.net), esperando un poco antes de reintentar."
  sleep 30
done

echo "Internet disponible!"

while [ ! -e $MYTUN ] ; do
  echo "/dev/tun0 no encontrado, esperando un poco antes de reintentar."
  sleep 5
done

echo "/dev/tun0 encontrado, iniciando aiccu..."

while [ ! `ping6 -c 1 -i 2 ipv6.google.com` ] ; do
  echo "Tunel IPv6 Tunnel no disponible (sin ruta a ipv6.google.com)"
  /usr/local/sbin/aiccu start
  sleep 5
done

echo "Finalizado."
exit 0
Este script es necesario, como se puede observar en los comentarios, porque aiccu no se inicia correctamente si no se cumplen que TunTap esté instalado y funcionando y la conexión a internet esté activa. Además, en algunos casos, sucede que aún así es necesario lanzarlo un par de veces antes de que funcione, de manera que el script lo reintententa hasta que pueda comprobar que llega a la página web IPv6 de Google.

  • Finalmente, añadiremos un archivo de configuración de launchd en /Library/LaunchDaemons/net.sixxs.aiccu con el siguiente contenido:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
        "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>net.sixxs.aicu</string>
<key>Disabled</key>
<false/>
        <key>ProgramArguments</key>
        <array>
                <string>/usr/local/sbin/aiccu.sh</string>
        </array>
<key>RunAtLoad</key>
     <true/>
</dict>
</plist>
De esta manera, el sistema intentará lanzar el script en /usr/local/sbin/aiccu.sh cada vez que se inicie.

¡Y ya está! De forma transparente, si lo necesitan, las aplicaciones y servicios que tengamos que acceden a internet tendrán disponible acceso a IPv6.

No hay comentarios:

Publicar un comentario en la entrada