Probando IPv6 Parte 1
Llevamos tiempo oyendo sobre IPv6, de cómo se está agotando el espacio de direcciones de IPv4, y que el cambio será inevitable en los próximos años.
En la actualidad hay pocos ISP que den conectividad IPv6 de forma nativa (Telefónica, are you there?), así que la alternativa que tenemos es usar un tunel 6to4 con un ISP. En el caso que voy a comentar, utilicé SixXs.
Antes de embarcarse en esta cruzada, recomiendo encarecidamente leer el artículo sobre IPv6 de la wikipedia, para entender bien los tipos de direcciones, cómo se forman y cómo se enrutan los paquetes:
Escenario
- Router flasheado con OpenWRT White Russian (Con Kamikaze también sirve)
- Tunel IPv6 con un broker (www.sixxs.net)
- Asignación de subred IPv6 para la LAN
Cualquier otra distribución de linux nos servirá… Los pasos a seguir variarán, pero el fondo es el mismo
Pasos previos
Partimos de la base de que tenemos el router funcionando correctamente, con la IP pública (el modem ADSL/cable haciendo bridge, monopuesto).
El tunel utiliza IPV4 para comunicarse con el otro extremo. El payload del paquete IP es el protocolo 41 (no es UDP ni TCP, sino IPv6). Es decir, encapsula IPv6 en un paquete IPv4. Es fundamental que el operador de ADSL enrute estos paquetes. Telefónica lo hace, por suerte.
Esto es importante por dos razones:
- Tenemos que abrir el firewall para permitir la entrada de dichos paquetes
- Tenemos que deshabilitar el conntrack para impedir que eventualmente (si no se usa) el tunel se muera y perdamos conectividad.
Editamos /etc/config/firewall, y añadimos esta línea al principio
accept:proto=41
Para el segundo caso, no he encontrado una forma sencilla de hacerlo sin modificar los scripts de inicio. Editamos /etc/init.d/S35firewall.
Buscamos casi al final del fichero
iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
y lo reemplazamos por
iptables -t nat -A POSTROUTING --protocol ! 41 -o $WAN -j MASQUERADE
Solicitar el tunel
Nos damos de alta en SixXs: https://www.sixxs.net/signup/create/
Este broker trabaja con créditos (ISK). Partimos con 15 créditos. Lo primero que haremos es solicitar un tunel. En mi caso fue un tunel estático, ya que tengo IPv4 fija. La creación del tunel cuesta 5 ISK.
Configurar el tunel
Necesitaremos una versión reciente del paquete aiccu. Podemos descargarla de los backports:
$ cd /tmp $ wget http://downloads.openwrt.org/backports/0.9/aiccu_20070115-1_mipsel.ipk $ ipkg install ./aiccu_20070115-1_mipsel.ipk
Asimismo, necesitaremos los siguientes paquetes:
ipkg install kmod-ipv6 ipkg install ip6tables
Configuramos /etc/aiccu.conf:
username XXXX-SIXXS # El NIC Handle que nos han asignado password XXXXXXXX # Nuestra clave protocol tic server tic.sixxs.net ipv6_interface sixxs tunnel_id TXXXXX # El código del tunel asignado verbose false daemonize true automatic true requiretls false
Renombramos el script de inicio, para que arranque automáticamente
$ cd /etc/init.d $ mv aiccu S91aiccu
Arrancamos el aiccu, y hacemos las comprobaciones básicas. Suponemos que las red de nuestro tunel es 2001:b18:2000:faba::/64. Nuestra IP será 2001:b18:2000:faba::2/64 y la del PoP (Point of Presence, del ISP que nos de la conectividad) 2001:b18:2000:faba::1/64
$ /etc/init.d/S91aiccu start $ ping6 ::1 #Ping a la interfaz local PING ::1 (::1): 56 data bytes 64 bytes from ::1: icmp6_seq=0 ttl=64 time=0.6 ms 64 bytes from ::1: icmp6_seq=1 ttl=64 time=0.5 ms 64 bytes from ::1: icmp6_seq=2 ttl=64 time=0.5 ms 64 bytes from ::1: icmp6_seq=3 ttl=64 time=0.5 ms --- ::1 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 0.5/0.5/0.6 ms $ ping6 2001:b18:2000:faba::2 # Nuestra IP en el tunel PING 2001:b18:2000:faba::2 (2001:b18:2000:faba::2): 56 data bytes 64 bytes from 2001:b18:2000:faba::2: icmp6_seq=0 ttl=64 time=0.9 ms 64 bytes from 2001:b18:2000:faba::2: icmp6_seq=1 ttl=64 time=0.5 ms 64 bytes from 2001:b18:2000:faba::2: icmp6_seq=2 ttl=64 time=0.5 ms 64 bytes from 2001:b18:2000:faba::2: icmp6_seq=3 ttl=64 time=0.5 ms --- 2001:b18:2000:faba::2 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 0.5/0.6/0.9 ms $ ping6 2001:b18:2000:faba::1 # La IP del otro extremo del tunel PING 2001:b18:2000:faba::1 (2001:b18:2000:faba::1): 56 data bytes 64 bytes from 2001:b18:2000:faba::1: icmp6_seq=0 ttl=64 time=122.2 ms 64 bytes from 2001:b18:2000:faba::1: icmp6_seq=1 ttl=64 time=122.1 ms 64 bytes from 2001:b18:2000:faba::1: icmp6_seq=2 ttl=64 time=123.2 ms 64 bytes from 2001:b18:2000:faba::1: icmp6_seq=3 ttl=64 time=122.3 ms --- 2001:b18:2000:faba::1 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 122.1/122.4/123.2 ms $ ping6 ipv6.google.com # Ping a google, la prueba definitiva PING ipv6.google.com(2001:4860:0:1001::68) 56 data bytes 64 bytes from 2001:4860:0:1001::68: icmp_seq=0 ttl=52 time=178 ms 64 bytes from 2001:4860:0:1001::68: icmp_seq=1 ttl=52 time=160 ms 64 bytes from 2001:4860:0:1001::68: icmp_seq=2 ttl=52 time=159 ms 64 bytes from 2001:4860:0:1001::68: icmp_seq=3 ttl=52 time=159 ms --- ipv6.google.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3002ms rtt min/avg/max/mdev = 159.262/164.303/178.165/8.023 ms, pipe 2
Si esto no funciona, podemos parar el servicio aiccu y realizar un test:
$ /etc/init.d/S91aiccu stop $ aiccu test
Solicitar una subred
Como comenté, SixXs trabaja a base de créditos. Partimos con 15, y el tunel nos costó 5. Para poder solicitar la subred, necesitamos tener al menos 15 ISK, por lo que tendremos que tener el tunel activo 1 semana para que nos “ingresen” los 5ISK que nos faltan.
La subred que asignan son de 48 bits, esto quiere decir que tenemos 16 bits (64-48) para hacer nuestras propias subredes… Es decir, podríamos direccionar 65536 redes locales, más que suficiente creo yo
Conclusión
Si todo ha ido bien, tendremos conectividad IPv6 en el router (solamente). El busybox del openwrt es un poco limitado, así que nos conformaremos con hacer ping6 a diferentes sitios y comprobar que funciona. También podéis hacer conexiones por ssh. Lamentablemente, el telnet solo funciona en IPv4.
En el próximo post veremos cómo configurar el router con la subred que nos hayan asignado, para dotar de conectividad IPv6 a nuestra red local, así como la configuración de los equipos.



De telefónica i+d tienes desde hace varios años un tunnel broker.
Yo lo probé allá por segundo de carrera creo
http://194.179.25.45/
Comment by Alberto Sagredo
— 18 July 2008 @ 9:16
Lo encontré buscando en google, pero no me pareció serio… parece un sitio de phishing la verdad. Incluso perdieron el dominio portalv6.com, que ahora está en un parking de dominios con publicidad… Vaya tela.
Comment by julianjm
— 18 July 2008 @ 13:00