Conexión a Internet IPv6 a través de 6to4


Hoy en día la mayor parte de los usuarios accedemos a Internet utilizando el protocolo IPv4, ya que utilizamos una conexión a un Proveedor de Servicios de Internet (ISP) que nos proporciona una dirección IPv4 pública y el acceso a un router conectado a esta red. Para acceder a Internet IPv6 de forma nativa hace falta exactamente lo mismo, un ISP que nos proporcione una dirección global IPv6 (o mejor aún un segmento de direcciones globales), aunque actualmente esto es poco frecuente ya que hay pocos ISP que den acceso nativo a IPv6 (http://www.sixxs.net/faq/connectivity/?faq=native).

En esta entrada se explica una de las formas que hay actualmente para conectarse a Internet IPv6 a través de una dirección IPv4 pública utilizando un mecanismo que se denomina 6to4, además se verá cómo configurar todos los equipos de la red local con una dirección IPv6 pública formando lo que se denomina una isla IPv6 y conectarlos a Internet IPv6 a través de radvd. Todo el desarrollo se va a realizar en Debian GN/Linux y se supone cierta familiaridad con la termininología de IPv6, para una introducción a la carcaterísticas de las direcciones IPv6 véase Direccionamiento IPv6 básico de este mismo blog.

¿Qué es 6to4?

Hay varios mecanismos de conexión a Internet IPv6 desde un equipo conectado a Internet IPv4 y aunque tienen algunas diferencias se basan fundamentalmente en encapsular un datagrama IPv6 dentro de un datagrama IPv4 y enviarlo a un equipo conectado a las dos redes que lo “suelte” en Internet IPv6. Para entender el funcionamiento de 6to4 es necesario explicar previamente los elementos que intervienen:

  • A toda dirección IPv4 le corresponde un segmento /48 de direcciones IPv6 con el siguiente formato: 2002:XXXX:YYYY:/48 donde XXXX:YYYY son los 32 bits de la dirección IPv4 en formato hexadecimal. Por ejemplo, a la dirección IPv4 pública 80.22.1.14 le corresponde el segmento de direcciones IPv6 2002:5016:10e/48, dentro del cual puede crear 2^16 subredes con 2^64 equipos en cada subred (!). Todas las direcciones IPv6 con el prefijo 2002::/16 se conocen como direcciones 6to4.
  • La dirección 192.88.99.1 es una dirección IPv4 reservada para los encaminadores que pasan los datagramas entre Internet IPv4 e Internet IPv6 (6to4 relay routers). Esta dirección además es anycast, por lo que existen varios encaminadores repartidos por el mundo que realizan esta función de retransmisión entre las dos redes.
  • Existe una dirección IPv6 reservada para los mismos encaminadores para realizar el proceso inverso y que es la 2002:c058:6301:: (dirección 6to4 asociada a la 192.88.99.1)

Describamos de forma breve el proceso de conexión a un equipo de Internet IPv6 utilizando 6to4, tomando como ejemplo un equipo con la dirección IPv4 pública 80.22.1.14 que se conecta al servidor web http://www.kame.net (accesible tanto desde Internet IPv4 como de Internet IPv6, en el segundo caso veremos la “dancing kame”) y que se presenta en la siguiente imagen:

6to4

  • A la dirección 80.22.1.14 le corresponde el segmento de direcciones 6to4 2002:5016:10e/48, en particular se le asocia la primera dirección de este segmento 2002:5016:10e::1/128
  • Para hacer una consulta al servidor web de http://www.kame.net en IPv6, se realiza una consulta DNS tipo AAAA, que nos da como resultado la dirección 2001:200:0:8002:203:47ff:fea5:3085
  • Se construye un datagrama IPv6 con destino a la dirección anterior, pero se encapsula dentro de un datagrama IPv4 con destino a la dirección 192.88.99.1
  • Se envía el datagrama a través de Internet IPv4 hasta el encaminador de retransmisión 6to4 (6to4 relay router) más cercano en términos de enrutamiento
  • Cuando el datagrama llega al encaminador 6to4, éste lo desencapsula, comprueba la dirección IPv6 se destino y se lo envía a ésta
  • El servidor de http://www.kame.net recibe la petición desde la dirección 2002:5588:4fd9::1/128 y responde a la misma
  • El datagrama llega al encaminador de retransmisión 6to4 más cercano, ya que por el prefijo 2002::/16 se sabe que se trata de una dirección 6to4.
  • El encaminador de retransmisión 6to4 recibe el datagrama IPv6 con destino a 2002:5588:4fd9::1/128 y lo encapsula dentro de un datagrama IPv4 con destino a la dirección 80.22.1.14
  • El datagrama llega a la dirección 80.22.1.14 que puede ver la respuesta del servidor web http://www.kame.net

Configuración 6to4 en Debian

Conectar un equipo con Debian a Internet IPv6 mediante el mecanismo 6to4 es tan sencillo como añadir un nuevo elemento en el fichero /etc/network/interfaces (wiki.debian.org/DebianIPv6), en el caso del ejemplo anterior sería:

auto tun6to4
iface tun6to4 inet6 v4tunnel
	address 2002:5016:10e::1 
        netmask 16              
	gateway ::192.88.99.1
	endpoint any
	local 80.22.1.14

Si levantamos ahora el dispositivo tun6to4, Internet IPv6 será accesible a través del mecanismo 6to4:

# ifup tun6to4
$ ping6 ipv6.google.com
PING ipv6.google.com(2a00:1450:8001::68) 56 data bytes
64 bytes from 2a00:1450:8001::68: icmp_seq=1 ttl=56 time=106 ms
64 bytes from 2a00:1450:8001::68: icmp_seq=2 ttl=56 time=99.5 ms
64 bytes from 2a00:1450:8001::68: icmp_seq=3 ttl=56 time=102 ms

Conexión a Internet IPv6 de toda la red local

Una de las ventajas más llamativas de utilizar 6to4 es que con cada dirección IPv4 pública es posible formar hasta 2^16 subredes con 2^64 hosts en cada una, teniendo todos los hosts direcciones IPv6 globales. Además utilizando ICMPv6 es posible que los equipos de la red local se configuren de forma automática, para lo que es necesario instalar en el equipo que actuará como router de la red local un programa denominado Router ADVertisement Daemon o radvd. Siguiendo con el caso anterior, supondremos que el equipo con dirección IP pública 80.22.1.14 es la puerta de enlace de la red local de direcciones privadas 192.168.1.0/24, por lo que actuará ahora como encaminador IPv6 de acuerdo con el siguiente esquema:

radvd

Instalamos en el equipo que va a actuar como encaminador el paquete radvd:

# aptitude install radvd

Editamos el fichero /etc/radvd.conf de la siguiente manera y lo modificamos para que tenga el siguiente contenido:

interface eth0 {
   AdvSendAdvert on;
   prefix 2002:5016:10e::/64
   {
        AdvAutonomous on;
        AdvOnLink on;
        AdvRouterAddr on;
        };
};

A continuación, configuramos la dirección IPv6 de la interfaz eth0 del equipo que va a actuar como router en el fichero /etc/network/interfaces:

auto eth0
   iface eth0 inet static
   address 192.168.1.1
   netmask 255.255.255.0
   iface eth0 inet6 static
   address 2002:5016:10e::1
   netmask 64

Bajamos y volvemos a levantar la interfaz de red para que se aplique la nueva configuración:

# ifdown eth0
# ifup eth0

Activamos el bit de forward en IPv6 añadiendo la siguiente línea al fichero /etc/sysctl.conf:

net.ipv6.conf.all.forwarding=1

# sysctl -p

Es necesario cargar manualmente el módulo ipv6 en el arranque para que el bit de forward de IPv6 se pueda activar al inicar la máquina de nuevo, por lo que hacemos:

# echo "ipv6" >> /etc/modules

Ahora se puede iniciar el demonio radvd encargado de facilitar la información de red IPv6 en la red local:

# /etc/init.d/radvd start

Y partir de ese momento cualquier equipo que se conecte a la red local se configurará de forma automática con una dirección IPv6 global con acceso a Internet IPv6. La dirección IPv6 de cada equipo (lo que se denomina una dirección stateless) se compondrá de un prefijo de 64 bits con la información de la red que facilita radvd más una identificación única del host de 64 bits que se obtiene de la dirección MAC de la interfaz de red.

ip6tables

La gran ventaja anterior también tiene el problema de que toda la red local es completamente accesible desde Internet IPv6, por lo que es recomendable inicialmente denegar el acceso a todos los paquetes que no sean respuesta a una petición nuestra, para lo que se utiliza el equivalente a iptables en IPv6, que se denomina ip6tables.

Terminar

Referencias

, , , ,

  1. #1 por Jaime el 15-03-11 - 10:46 am

    Muy buena explicación.

    No entiendo bien esta parte: El servidor de http://www.kame.net recibe la petición desde la dirección 2002:5588:4fd9::1/128 y responde a la misma, podrías aclararme a quien pertenece esa dirección?

    Por lo demás está genial el post.

    Un saludo.

    Me gusta

    • #2 por albertomolina el 15-03-11 - 6:25 pm

      2002:5588:4fd9::1/128 es la dirección en Internet IPv6 de los 6to4 relay routers, es la dirección 6to4 correspondiente a la dirección Ipv4 192.88.99.1, bueno realmente es la primera dirección de todo el rango de direcciones asociadas.

      Me gusta

  2. #3 por cristobal el 8-09-11 - 9:33 am

    Hola, interesante esto, pero una consulta yo con esta configuración puedo acceder a la Internet a servidores ipv4 e ipv6 ??

    Me gusta

    • #4 por albertomolina el 8-09-11 - 10:00 am

      Exactamente Cristóbal, tienes una dirección IPv4 que te permite acceder a Internet IPv4 y mediante un servidor remoto acceder a Internet IPv6.

      Me gusta

  3. #5 por internete el 18-09-11 - 3:54 pm

    Muy interesante, pero esa ipv6 2002:5588:4fd9::1/128 que ciertamente es una ipv6 tipo 6to4
    (ya que empieza por 2002), y mapea a IPv4 contra 192.88.99.1

    ¿Donde está realmente?… ¿Es un host real o es un host dummy?…

    ¡Perdon!

    ¡Acabo de encontrar la respuesta (creo) haciendo un whois, un ping y un traceroute!

    Se trata de un rango IPv4/8 reservado por la IANA para el tema 6to4, y en mi caso (conecto con IPv4 a traves de un adsl de telefonica) el traceroute no me da informacion mas que de nodos intermedios, pero sospecho que cada proveedor de acceso tiene un host 192.88.99.1 en
    su propia red local para estos trasiegos ipv6 en modo 6to4…

    El caso es que responde a ping4, y a whois como

    6TO4-RELAY-ANYCAST-IANA-RESERVED

    internete
    1234567

    PD: Corrijame si me equivoco, por favor Señor Molina.

    Me gusta

    • #6 por albertomolina el 19-09-11 - 1:23 pm

      Los routers para hacer relay 6to4 deben tener una interfaz de red conectada a Internet IPv4 con dirección 192.88.99.1 y otra conectada a Internet IPv6 con dirección 2002:5588:4fd9::1/128, precisamente el estar conectados a ambas redes es lo que permite que se utilicen para acceder a Internet IPv6 desde un equipo conectado sólo a Internet IPv4.

      Hay bastantes routers de este tipo distribuidos por el mundo y todos comparten la dirección anycast 192.88.99.1, de manera que cada usuario se conecta al más cercano en términos de enrutamiento, estos routers pertenecen a diferentes entidades públicas o proveedores de servicios, como es habitual en los equipos que forman la estructura de Internet.

      Me gusta

  4. #7 por Oscar Pedro (@Oscar_Isabel) el 16-11-11 - 12:07 pm

    Muy buena, muy sencilla y muy clara tu explicación.
    Gracias.

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: