IPv6 (también conocido como IPng o “IP de nueva generación”) es la nueva versión del conocido protocolo de red IP, tambíen llamado IPv4. Como sucede con el resto de los sistemas *BSD FreeBSD proporciona una implementación de referencia que desarrolla el proyecto japonés KAME. FreeBSD dispone de todo lo necesario para experimentar con el nuevo protocolo de red. Esta sección se centra en conseguir configurar y ejecutar correctamente el protocolo IPv6.
Al comienzo de los años 90 la gente comenzó a preocuparse por el rápido consumo del espacio de direcciones de IPv4. Dada la expansión actual de Internet existen dos preocupaciones principales:
Agotamiento de las direcciones disponibles. Actualmente no se trata del principal problema debido al uso generalizado del del espacio de direccionamiento privado (10.0.0.0/8, 192.168.0.0/24, etc.) junto con NAT.
El número de entradas de las tablas de rutas comenzaba a ser imposible de manejar. Esto todavia es un problema prioritario.
IPv6 trata de resolver estos problemas y algunos más de la siguiente forma:
IPv6 posee un espacio de direccionamiento de 128 bits. En otras palabras, en teoría existen 340,282,366,920,938,463,463,374,607,431,768,211,456 direcciones disponibles. Esto significa que existen aproximadamente 6.67 * 10^27 direcciones IPv6 por metro cuadrado disponibles para todo el planeta Tierra.
Los “routers” sólo almacenan direcciones de red agregadas así que se reduce el número de entradas para cada tabla de rutas a un promedio de 8192.
Existen además muchas otras caracterísiticas interesantes que IPv6 proporciona, como:
Autoconfiguración de direcciones (RFC2462)
Direcciones anycast (“una-de-varias”)
Soporte de direcciones multicast predefinido
IPsec (Seguridad en IP)
Estructura de la cabecera simplificada
IP móvil
Mecanismos de traducción de IPv6 a IPv4 (y viceversa)
Si quiere saber más sobre IPv6 le recomendamos que consulte:
Resumen de IPv6 en playground.sun.com
Existen varios tipos distintos de direcciones IPv6: Unicast, Anycast y Multicast.
Las direcciones unicast son direcciones bien conocidas. Un paquete que se envía a una dirección unicast deberín llega a la interfaz identificada por dicha dirección.
Las direcciones anycast son sintácticamente indistinguibles de las direcciones unicast pero sirven para identificar a un conjunto de interfaces. Un paquete destinado a una dirección anycast llega a la interfaz “más cercana” (en términos de métrica de “routers”). Las direcciones anycast sólo se pueden utilizar en “routers”.
Las direcciones multicast identifican un grupo de interfaces. Un paquete destinado a una dirección multicast llega a todos los los interfaces que se encuentran agrupados bajo dicha dirección.
Nota: Las direcciones IPv4 de tipo broadcast (normalmente xxx.xxx.xxx.255) se expresan en IPv6 mediante direcciones multicast.
Tabla 29-2. Direcciones IPv6 reservadas
Dirección IPv6 | Longitud del Prefijo (Bits) | Descripción | Notas |
---|---|---|---|
:: | 128 bits | sin especificar | como 0.0.0.0 en Pv4 |
::1 | 128 bits | dirección de bucle local (loopback) | como las 127.0.0.1 en IPv4 |
::00:xx:xx:xx:xx | 96 bits | direcciónes IPv6 compatibles con IPv4 | Los 32 bits más bajos contienen una dirección IPv4. También se denominan direcciones “empotradas.” |
::ff:xx:xx:xx:xx | 96 bits | direcciones IPv6 mapeadas a IPv4 | Los 32 bits más bajos contienen una dirección IPv4. Se usan para representar direcciones IPv4 mediante direcciones IPv6. |
fe80:: - feb:: | 10 bits | direcciones link-local | equivalentes a la dirección de loopback de IPv4 |
fec0:: - fef:: | 10 bits | direcciones site-local | Equivalentes al direccionamiento privado de IPv4 |
ff:: | 8 bits | multicast | |
001 (base 2) | 3 bits | direcciones unicast globales | Todas las direcciones IPv6 globales se asignan a partir de este espacio. Los primeros tres bits siempre son “001”. |
La forma canónica que se utiliza para representar direcciones IPv6 es: x:x:x:x:x:x:x:x, donde cada “x” se considera un valor hexadecimal de 16 Bit. Por ejemplo FEBC:A574:382B:23C1:AA49:4592:4EFE:9982
A menudo una dirección posee alguna subcadena de varios ceros consecutivos de forma que se puede abreviar dicha cadena (sólo una vez, para evitar ambigúedades) mediante “::”. También se pueden omitir los ceros a la ceros a la izquierda dentro de un valor “x”. Por ejemplo fe80::1 se corresponde con la forma canónica fe80:0000:0000:0000:0000:0000:0000:0001.
Una tercera forma de escribir direciones IPv6 es utilizando la ya tradicional notación decimal de IPv4 pero sólamente para los 32 bits más bajos de la dirección IPv6. Por ejemplo 2002::10.0.0.1 se correspondería con la representation hexadecimal canónica 2002:0000:0000:0000:0000:0000:0a00:0001 la cual es equivalente también a escribir 2002::a00:1.
A estas alturas el lector debería ser capaz de comprender lo siguiente:
# ifconfig
rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500 inet 10.0.0.10 netmask 0xffffff00 broadcast 10.0.0.255 inet6 fe80::200:21ff:fe03:8e1%rl0 prefixlen 64 scopeid 0x1 ether 00:00:21:03:08:e1 media: Ethernet autoselect (100baseTX ) status: active
fe80::200:21ff:fe03:8e1%rl0 es una dirección link-local autoconfigurada. Se construye a partir de la dirección MAC de la tarjeta de red.
Si quiere saber más sobre la estructura de las direcciones IPv6 puede consultar RFC3513.
Actualmente existen cuatro formas distintas de conectarse con otras máquinas y redes IPv6:
Unirse a la red experimental denominada 6bone
Obtener una red IPv6 a través de nuestro proveedor de acceso a Internet. Consulte a su proveedor de servicios para para más información.
Encapsulación de IPv6 sobre IPv4 (RFC3068)
Utilización del “port” net/freenet6 si se dispone de una de una conexión de marcación por modem.
Vamos a explicar cómo conectarse al 6bone ya que parece ser la forma más utilizada en la actualidad.
En primer lugar se recomienda consultar el sitio web de 6bone para saber cuál es la conexión del 6bone (físicamente) más próxima. Se debe escribir a la persona responsable de ese nodo y con un poco de suerte dicha persona responderá con con un conjunto de instrucciones y pasos a seguir para establecer la la conexión con ellos y a través de ellos con el resto de los nodos IPv6 que forman parte del 6bone. Normalmente esta conexión se establece usando túneles GRE (gif).
Veamos un ejemplo típico de configuración de un de un túnel gif(4):
# ifconfig gif0 create # ifconfig gif0 gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280 # ifconfig gif0 tunnel MI_DIRECCIÓn_IPV4 SU_DIRECCIÓn_IPV4 # ifconfig gif0 inet6 alias DIRECCIÓn_DE-SALIDA_IPv6_DEL_TÚNEL_ASIGNADO
Sustituya las palabras en mayúsculas por la información recibida del nodo 6bone al que nos queremos conectar.
La orden anterior establece el túnel. Compruebe que el túnel funciona correctamente mediante ping(8). Haga un ping6(8) a ff02::1%gif0. Deberíamos recibir recibir “dos” respuestas.
Nota: Para que el lector no se quede pensando en el significado significado de la dirección ff02:1%gif0 le podemos decir que se trata de de una dirección IPv6 multicast de tipo link-local. %gif0 no forma parte del protocolo IPv6 como tal sino que se trata de un detalle de implementación relacionado con las direcciones link-local y se añade para especificar la interfaz de salida que se debe utilizar para enviar los paquetes de ping6(8). Como estamos haciendo ping a una dirección multicast a la que se unen todos los interfaces pertenecientes al mismo enlace debería responder al ping tanto nuestro propio interfaz como el interfaz remoto.
A continuación se configura la ruta por defecto hacia nuestro enlace 6bone; observe que es muy semejante a lo que hay que hacer en IPv4:
# route add -inet6 default -interface gif0 # ping6 -n MI_UPLINK
# traceroute6 www.jp.FreeBSD.org (3ffe:505:2008:1:2a0:24ff:fe57:e561) from 3ffe:8060:100::40:2, 30 hops max, 12 byte packets 1 atnet-meta6 14.147 ms 15.499 ms 24.319 ms 2 6bone-gw2-ATNET-NT.ipv6.tilab.com 103.408 ms 95.072 ms * 3 3ffe:1831:0:ffff::4 138.645 ms 134.437 ms 144.257 ms 4 3ffe:1810:0:6:290:27ff:fe79:7677 282.975 ms 278.666 ms 292.811 ms 5 3ffe:1800:0:ff00::4 400.131 ms 396.324 ms 394.769 ms 6 3ffe:1800:0:3:290:27ff:fe14:cdee 394.712 ms 397.19 ms 394.102 ms
Esta captura de pantalla variará dependiendo de la localización de la máquina. Tras seguir estos pasos deberíamos poder alcanzar el sitio IPv6 de www.kame.net y ver la tortuga bailarina, que es una imagen animada que sólo se muestra cuando se accede al servidor web utilizando el protocolo IPv6 (para ellos se encesita utilizar un navegador web que soporte IPv6, IPv6, por ejemplo www/mozilla o Konqueror, que forma parte de x11/kdebase3, o también con www/epiphany.
Existen dos tipos de registros de DNS para IPv6. No obstante el IETF ha declarado los registros A6 y CNAME como registros para uso experimental. Los registros de tipo AAAA son los únicos estandar a día de hoy.
La utilización de registros de tipo AAAA es muy sencilla. Se asocia el nombre de la máquina con la dirección IPv6 de la siguiente forma:
NOMBREDEMIMÁQUINA AAAA MIDIRECCIÓNIPv6
De igual forma que en IPv4 se utilizan los registros de tipo A. En caso de no poder administrar su propia zona de DNS se puede pedir esta configuración a su proveedor de servicios. Las versiones actuales de bind (versiones 8.3 y 9) y el “port” dns/djbdns (con el parche de IPv6 correspondiente) soportan los registros de tipo AAAA.
Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista
<[email protected]>.
Envíe sus preguntas sobre la documentación a <[email protected]>.