Como instalar ipv6 en Debian y Ubuntu

yo ipv6

Conferencia sobre ipv6, dictada en mayo del 2003

Actualizada Octubre de 2010

mi host ipv6 es (a veces no anda): http://hcaste.broker.freenet6.net/



Introducción

En el 2003 por inquietud personal me incliné al estudio del IPv6. Desde aquel año ya el protocolo ha evolucionado y se está expandiendo. Esta página es una breve introducción para iniciarse y acoplarse a alguno de los distribuidores (Brokers) ya existentes. Tan solo comentaré como confeccionar un túnel TSP.

Cabe destacar que los núcleos GNU/Linux mayores al 2.4.10 soportan en un 100% ipv6 así como algunas aplicaciones ya tienen la posibilidad de conección usando direcciones ipv6 e ipv4, como ser: bind, ssh, apache2, etc.

Si deseas escribirme puedes hacerlo a horacio9573@hotmail.com


Motivos para cabiar al nuevo protocolo

  1. Se está agotando el espacio de direcciones IPv4, se estima que para el 2012 (como predijo Nostradamus) al 2015 se agotará todo el direccionamiento permitido.

  2. IPv4 posibilita 4.294.967.296 direcciones de red diferentes, IPv6 en cambio admite 340.282.920.938.463.374.607.431.768.211.456 direciones diferentes.

  3. Grandes tablas de encadenamiento en troncales IPv4, con alto grado de complejidad en la red, elevados costes de mantenimiento.

  4. Necesidad de mejorar la calidad en el transporte de datos en tiempo real.

Ventajas del IPv6 (algunas)

  1. Mayor espacio de direcciones: IPv6 tiene un campo de 128 bits frente a los 32 bits de IPv4.

  2. Seguridad: IPv6 incluye seguridad en sus especificaciones (IPsec por ejemplo).

  3. Aplicaiones a tiempo real: IPv6 incluye campos para etiquetar los fujos de datos de manera tal que los routers puedan establecer prioridades (QoS).

  4. Plug and Play: IPv6 incluye en su mecanismo el plug and play ó autoconfiguración.

  5. Direccionamiento estructurado: La asignación de una dirección sigue criterios establecidos, como ser Unicast, Multicast, etc.

¿Por qué IPv6 y no IPv5?

Se decidió asignar comoIPv5 (RFC 1819) al obsoleto protocolo experimental llamado ST-II ó stream protocol version 2. Diseñando para el control de flujo de datos. Este fue abandonado por la IETF en 1995. Por eso el siguiente protocolo debería llamarse IPv6.

Conceptos básicos (RFC 2373)


Toda dirección ipv6 se expresa canónicamente en base hexadecimal, cuyas direcciones binarias de destinos y proviniencia constan de 128 bits, esto permite un total de 2128-1 direciones legítimas. Si lo comparamos con el ipv4 el incremento es tal que se puede cubrir todo el universo conocido con direciones con una desidad de 1 dirección cada kilómetro cúbico. La forma canónica de expresar una dirección ipv6 es en 8 grupos de 16 bits escritos en notación hexadecimal separados por ":", como por ejemplo:

3ffe:0b90:0003:0f17:0000:0000:0000:0002

Se acepta las siguientes abreviaturas de escritura:

  1. Los ceros a la izquierda de cada grupo se omiten, entonces :0003: puede simplicarse como :3:

  2. Bloques contiguos de 16bits de ceros pueden simplificarse por únicavez con ::, entonces la dirección anterior se simplifica como: 3ffe:b90:3:f17::2


Existen solo dos direcciones resrvadas en ipv6, una es la dirección local ::1 (se están simplicando 31 ceros), esta solo se la puede asociar al dispositivo "loopback", es similar en ipv4 a la dirección privada 127.0.0.1, otra es :: (todo cero) que corresponde a dirección no especificada y no puede usarse como direción de nada. En cabio no existe la dirección broadcast, por lo tanto en teoría ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff es legítima, pero no se usa.

Los campos de direcciones que tienen nombres específicos se denominan prefijos. Los prefijos permiten conocer donde está conectada una determinada dirección, es decir su posible ruta. Las direciones IPv6 estan asociadas a interfaces (eth*, sit*, freenet, lo, etc.) y estas al menos deben tiener una unicast link-local, pero una interfaz puede tener varias direcciones IPv6.

Espacio de direccionamiento especial en ipv6
Este es un resumen del espacio de direccionamiento especial usado en ipv6 :

Modelo de direccionamiento (RFC 2373)



Direciones unicast locales

Existen dos tipos de direciones unicast locales, por otro lado todo nodo debe por lo menos contener una de ellas, su formato de dirección es n-bits para el prefijo de subred y 128-n bits identificador de la interfaz.



El identificador de interfaz se emplea para identificar interfaces en un enlace y deben ser único en dicho enlace. Los dos tipos de direciones locales son: Enlace local (link-local, ver figura) y sitio (site-local). Las primeras tiene un formato fe80::<id de interfaz>/10 y estan asociadas a una intefaz, y no puden salir de ella ningún paquete que tenga a esta como dirección.



Las segundas tiene un formato fec0::<id-subred><id-interfaz>/10 y estan asociadas a un sitio u organización, son análogas a las redes privadas 192.162.0.0/16, pero con muchos más espacio de direciones. No pueden salir por routers los paquetes IP que lleven esa dirección como destino. Cuando L=1 indica identificador local y L=0 no locales. Tambien se las conoce como ULA o Unique Local Adress. Por ejemplo

3ffe:b90:3::2 (global) ------------> fc00:b90:3::2 (ULA)

Direciones AnyCast (RFC 2526)

Tienen el mismo rango que las unicast, cuando una direción unicast es asociada a más de una interfaz se convierte en una dirección anycast. Existen direciones anycast asociadas a cada subred requeridas para los ruteadores (subnet router anycast address). Su formato es <prefijo de red><subred>::/n es decir el identificador de interfaz es el cero.
Todos los paquetes que contengan esta dirección de destino serán enviados a dicha subred por los routers. Por ejemplo

2406:a000:f0ff:fffe::/64 aca 2406:a000:f0ff es el identificador de la red y :fffe: corresponde a una subred. fe80::/10 Asociada a toda interfaz local. fec0::/10 Asociada a todo el sitio.

Direciones MultiCast (RFC 2375)

Es una direción que caracteriza a un conjunto de nodos, tiene un formato



Si el bit (flags) T=0 la dirección multicast es permanente y está designada por la ipv6 global address, caso contrario su valor es T=1 y se trata de una dirección temporaria.

El identificador de grupo asocia a un grupo en particular de interfaes, como ejemplo de direcciones:

ff01::101 A todos los identificadores de tiempo (NTS) con identificado de grupo 101 en ambito del nodo
ff02::101 A todos en el mismo enlace asociado con la misma interfaz con id-grupo 101
ff01::101 idem pero a toda la internet.
ff15::101 No permanente asociada al sitio. La direcciones temporales tiene solo sentido a nivel local.

Existen direciones multicas reservdas son:

La dirección ff02::1ffxx:xxxx se la llama solicited-node address y obliga a todos los nodos calcular su multicast en fución de la unicast asociada. Para ello se sustituye los 24 bits (los marcados con x) con la dirección original. Por ejemplo la 3ffe:b00:c18:1fff::7f4 se convertirá en ff01::1:ff00:7f4

Ejemplos útiles de redes actualmente usadas:

  1. 3ffe::/16 red 6bone global (fuera de servicio desde el 2006)

  2. 3ffe:ffff:/32 dirección especial 6bone de prueba (no usada)

  3. 2002::/16 redes para direcciones tunel 6to4 globales (RFC 2529)

  4. 2001::/16 y 2406::/16 direcciones delegadas a túneles privados.

Direciones unicast globales anexables (RFC 2374)

Uno de los problemas que ipv6 resuleve es la major organización jerárquica del ruteo en redes publicas anexables o agregables (aggregatable public global net), como ejemplo de ello es la dirección unicast de la UTN de la plata, 3ffe:38e1:0100:a001::10. Es una organización basada en tres niveles

  1. Topología pública: Asociada a los proveedores y pasarelas de la red troncal asociada a la internet

  2. Topología de sitio: Propia de la red interna de la orgnización

  3. Identificador de interfaz: Asociado con la interfaz de enlace.

En la siguiente figura se muestra como es cada campo en particular.



























Red IPv6 por túnel privado IPv4

Esta será una breve descripción de como poner un servicio ipv6 en una máquina con Debian ó Ubuntu. No será una explicación técnica sino pragmática de como instalar un túnel TSP para poder usar la red IPv6.

El tunel ipv6 de www.freenet.org. está obsoleto a partir del 2006. Actualmente la que da el tunel es uno de estos Broker (gestionadores):

Acrónimos: Statics: ip estática. RDNS: delegación inversa de nombres. TSP: Tunel Setup Protocol. BGP: Border Gatway Protocol ó ruteo BGP. AYIYA: túnel Anything In Anything.





Advertencia!

El puerto 3653 (antes 41) no debe ser filtrado por ningún firewall, sino no se podrá comunicar con el par. Entoces uno debe configurar las correctas políticas tanto en el ipchains, iptables, etc. para que nuestra red sea trasparente a él, o el puerto UDP designado por la interfaz del broker.

El gestionador que yo uso es gogo6/freenet6, antiguamente Hexago-go6, que da de forma gratuita (por ahora) un tunel TSP ipv6-ipv4.

Activar Dispositivo

En núcleos 2.6.xx con xx > 20 basta con ejecutar como super-usuario (ejemplo)

/sbin/ifconfig eth1 inet6 add 2001:5c0:8fff:b::11/64

en los núcleos xx< 21 sit0 no se puede usar para definir una interfaz pues este se usaba como intefaz 6to4. En esos núcleos bastaba con ejecutar

/sbin/ifconfig sit0 up

/sbin/ifconfig eth1 inet6 add 2001:5c0:8fff:b::11/64

se puede activar desde el arranque colocando en /etc/rc.local en los xx>20 (ejemplo)

/sbin/ifconfig eth1 inet6 add 2001:5c0:8fff:b::11/64

route -A inet6 add 2001:5c0:8fff:b::/64 dev eth1

Nota: Esta última instrucción es solo cuando la ruta (Anycast) no se levanta automáticamente.

Luego se puede ver los resultados:

hcaste@azul:~$ ifconfig eth1

eth1 Link encap:Ethernet direcciónHW 00:1f:d0:b2:cf:51

Direc. inet:10.0.0.11 Difus.:10.255.255.255 Másc:255.0.0.0

Dirección inet6: 2001:5c0:8fff:a::11/64 Alcance:Global

Dirección inet6: fe80::21f:d0ff:feb2:cf51/64 Alcance:Enlace

ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST MTU:1500 Métrica:1

Paquetes RX:350540 errores:0 perdidos:0 overruns:0 frame:0

Paquetes TX:282964 errores:0 perdidos:0 overruns:0 carrier:0

colisiones:0 long.colaTX:1000

Bytes RX:379088294 (379.0 MB) TX bytes:40454447 (40.4 MB)

Interrupción:24 Dirección base: 0x2000

hcaste@azul:~$ route -A inet6|grep -w "eth1"

2001:5c0:8fff:a::/64 :: U 256 0 0 eth1

fe80::/64 :: U 256 0 0 eth1

ff00::/8 :: U 256 0 0 eth1

Túnel TSP

Se lo puede instalar de la siguiente forma:

  1. Se pide un par de enlace (pear) a http://gogonet.gogo6.com/ que nos devolverá un nombre de usuario y correo por correo-e.

  2. Se loguea en la cuenta asignada, se llena lo que se pide (no piden la tarjeta de crédito!! por ahora) en http://gogonet.gogo6.com/page/freenet6-services

  3. En http://gogonet.gogo6.com/page/freenet6-home-access se baja el archivo gogoc-1_2-RELEASE.tar.gz (está bajo licencia BSD)

  4. Se debe compilar y instalar el cliente pero con las bibliotecas OpenSSL, libcrypto y libpthread.

  5. No requiere configuración previa

  6. Para compilarlo hay que ejecutar make platform=linux all

  7. Para instalarlo hay que ejecutar make platform=linux installdir=/usr/local/gogoc install

  8. Entonces instala no solo los ejecutables sino el script de configuración y rutas de la interfaz en: "/usr/local/etc/gogoc/template/linux.sh"

  9. El ejecutable está en /usr/local/gogoc/bin y se llama gogoc

Antes de todo hay que configurar nuestro cliente para ello hay que colocar en el archivo gogoc.conf los datos como cliente:

userid=hcaste

passwd=*******

server=authenticated.freenet6.net

host_type=router # solo para GW

prefixlen=48 #solo para GW

if_prefix=eth1 #solo para GW

Nota: Los túneles anónimos solo pueden configurarse como host y no se pueden usar como gateway.

Si todo salió bien debe aperecer lo siguiente: (ejemplo)

hcaste@azul:~$ ifconfig tun

tun Link encap:UNSPEC direcciónHW 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

Dirección inet6: 2001:5c0:1000:b::415d/128 Alcance:Global

ACTIVO PUNTO A PUNTO FUNCIONANDO NOARP MULTICAST MTU:1280 Métrica:1

Paquetes RX:2492 errores:0 perdidos:0 overruns:0 frame:0

Paquetes TX:2427 errores:0 perdidos:0 overruns:0 carrier:0

colisiones:0 long.colaTX:500

Bytes RX:889154 (889.1 KB) TX bytes:175137 (175.1 KB)

Donde ahora se tiene una unicast global con DNS dado por el gestionador gogo6.

Comprobar que uno está registrado:

hcaste@azul:~$ host hcaste.broker.freenet6.net

hcaste.broker.freenet6.net has address 64.86.88.116

hcaste.broker.freenet6.net has IPv6 address 2001:5c0:1000:b::415d

hcaste@azul:~$ host 2001:5c0:1000:b::415d

d.5.1.4.0.0.0.0.0.0.0.0.0.0.0.0.b.0.0.0.0.0.0.1.0.c.5.0.1.0.0.2.ip6.arpa domain name pointer hcaste.broker.freenet6.net.

Uno no solo tiene ip, sino resolución inversa de nombre que es mantenido por la empresa.



Saludos Horacio