Blackhold

Túnel 6to4 mikrotik

Posted on octubre 26th, 2012 by admin

Pues tras luchar unos cuantos días ya tenemos el túnel 6to4 funcionando y el router anunciando ipv6 (globales) a las maquinas de la red local.

En el hackmeeting del año pasado al montar la red me quedó el gusanillo de enrutar todo el mundo por un túnel 6to4 pero me quedó pendiente la parte de la asignación de ips a la red local, por fin hoy tras un año y poco, lo hemos conseguido y por supuesto no habría sido posible sin la inestimable ayuda de Ramon Roca y Miquel Martos de guifi.net (ah! si el link no funciona es que no estáis preparados para ipv6!).

Primero de todo quiero adentrar un poco el tema para todos aquellos que habéis oído algunas campanas sobre ipv6, la cosa es que ipv4 se diseñó hace un porrón y medio de años, pero en aquel entonces nadie pensó en qué acabaríamos llevando un ordenador en el bolsillo, lo de internet era mas bien elitista y un ordenador era un gadget además de bastante grande y pesado y realmente poco asequible para la gran mayoría de bolsillos del planeta.
Hace ya unos años, con el boom de internet, el número de asignaciones de direcciones ipv4 ha ido creciendo, hasta que viendo el crecimiento se tuvo que plantear una “chapuzilla” para no gastar tantas, el NAT, que es lo que hace que en nuestras redes locales tengamos redes del estilo 192.168.1.x. Esto al mismo momento es como una forma para no tener nuestras maquinas directamente expuestas a internet y digo que es como una forma, porque algunos gusanos, virus o incluso programas como skype entre otros han sabido como saltarse dicha barrera y llegar finalmente a los ordenadores que están “ocultos” tras una ipv4 (pública). Así que si realmente queremos tener nuestras maquinas protegidas, no hay nada mejor que un buen firewall.


Como todas las “chapuzillas”, son temporales y a la larga se tiene que buscar una solución “definitiva”, y esta se llama ipv6, se llama así porqué se planteó un sistema no-IP, sino ST que se llamaba ipv5, pero quedó meramente en el estado de experimentación.
Poco a poco, también han ido saliendo servicios que el NAT es mas bien un estorbo, como puede ser VoIP, juegos, televisión interactiva, etc. así que ipv6 se está diseñando, y digo se está diseñando porque no hay una versión final de ipv6, siempre habrá cambios, siempre buscando la compatibilidad con versiones anteriores, pues sin NAT, es decir, las máquinas estarán directamente expuestas a internet y viendo esto, la repentina frase de “la seguridad tiene que estar en los ordenadores, no en la red”, aunque en los routers “cabecera” siempre es recomendable tener algunas reglas de firewall para protegerse de los ataques más típicos DoS, DDoS, ping of death, escaneo de puertos, etc.

Tras esta breve introducción, no voy a entrar con mucho mas detalle sobre ipv6, quedaros básicamente con qué tenemos un porrón y medio de ips, si no me equivoco, podrías asignar una ipv6 a cada átomo de nuestro planeta durante 80 años ¡y esto sólo con la primera de las 7 versiones de ipv6! ¿aún existirá tcp/ip dentro de 80 años?

Alguno de los usos que se le está dando ya a ipv6, es, por ejemplo, el tema del control de casas domóticas, cada una de las bombillas, cameras ip, persianas, etc. con su propia ipv6 y controlable directamente desde internet. O imaginaos algún uso futuro, un coche tiene su rango de ipv6 y cada uno de los componentes del coche una ipv6 asignada, luego cuando alguno de estos componentes falla, podría ponerse en contacto con el fabricante, este pedir la pieza y sincronizarse con tu agenda para que x día, si tienes que ir a aquella reunión, en lugar de aparcar el coche en el párking, lo dejases en el taller. Al terminar la reunión tendrías el coche reparado y la factura cargada en tu cuenta.
En fin ¡y la de cosas que no somos capaces de imaginarnos aún!

Os dejo algunos links que pueden ser de interés para ahondar mas con ipv6:

http://pad.marsupi.org/curs-ipv6: Unos apuntes que tomamos junto con algunos compañeros del proyecto guifi.net en la charla de ipv6 que se hizo hace unos cuantos meses en Barcelona
http://www.consulintel.es/pdf/ipv6paratodos.pdf: Libro ipv6 para todos, los básicos de ipv6 sobre sistemas operativos (y es que incluso windows XP ya está preparado para ello, aunque tengas que activarlo expresamente! con GNU/Linux, desde el kernel 2.4 ya es nativo)

En el primer link, podéis encontrar el vídeo de la charla.

Pues vamos al lío!

En este caso he usado un túnel contra uno de los routers que se encuentran en Gurb, pero hay otras alternativas como hurricane electric.

No hace ni dos meses, en este mismo blog publiqué como configurar una RB750 sobre la conexión de fibra de Telefónica. Así que vamos a trabajar sobre este router con dicha configuración.

Para poder trabajar con ipv6 con los routers mikrotik, es preciso activar el paquete ipv6 (por lo menos hasta la versión 5.21), para ello vamos a System > Packages, lo activamos y reiniciamos el router.

Lo siguiente será crear un túnel sit. Vamos a Interfaces > Interface > + > 6to4 Tunnel:

Con hurricane electric, te dan el código para pegarlo a la mikrotik y que funcione!

Una vez hecho esto, añadimos la ipv6 del túnel (IPv6 > addresses > +):

Es importante en el túnel no activar la opción advertise, ya que esta opción es la que las maquinas “buscan” para autoconfigurarse con ipv6 (en ipv6 hay distintas formas de configurar las ips y una de ellas es esta).

La ip que me han asignado es esta:

2a00:1508:1000:fb::2/64

En este momento si vamos a tools > ping, ya podríamos hacer ping a 2a00:1508:1000:fb::1, que es la IP del router que está en el otro lado del túnel 6to4, pero no podremos hacer ping a nada mas, porque será necesario añadir la default route.
Para ello vamos a IPv6 > routes > +

Si nos fijamos, en la tabla de rutas, en la captura hay 3 líneas, 1 estática (S) que es la que acabamos de añadir y dos dinámicas (D), en este paso sólo tendréis una dinámica, la del túnel. En la captura tengo otra, asignada a la ether2, así que vamos a ella.

En este punto, tendriáis que poder hacer ping a 2a00:1508::5, que es la ipv6 de guifi.net

Y ahora queda la parte en la que me atasqué :) la de asignar IPv6 a los equipos de la red local.

La gente de guifi me asignaron un rango de IPv6:

2a00:1508:1006::/48

Pero a las maquinas les vamos a destinar /64, uno de los porque, es que es un múltiplo de 32, 32bits, 64bits, precisamente la arquitectura de nuestros procesadores. No he probado aún ipv6 en arquitecturas de 32bits, pero imagino que hasta el momento todo lo que puedo ver, la gestión de ipv6 la hace el propio sistema operativo. Desconozco hasta qué punto interviene el kernel.

Pues lo que tendremos que hacer, es asignar una IP /64 del rango /48 a la interfaz donde cuelga la red local de mi casa, la ether2. Así que volvemos a IPv6 > Addresses > +:

Y aquí si que activamos “Advertise”.

A partir de ahora, si hacemos un dhclient con nuestro ordenador ya tendría que aparecer una ipv6 del rango /48 que se nos ha asignado:

root@salnitre:/# ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 00:21:6a:a5:21:78  
          inet addr:192.168.1.6  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: 2a00:1508:1006:0:221:6aff:fea5:2178/64 Scope:Global
          inet6 addr: fe80::221:6aff:fea5:2178/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:533333 errors:0 dropped:0 overruns:0 frame:0
          TX packets:394531 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:413274471 (394.1 MiB)  TX bytes:63811484 (60.8 MiB)

Si habéis leído el pad, fe80::221:6aff:fea5:2178/64 vendría a ser una IP local, como las 169.x.x.x cuando no hay asignación de IPs. Ya el propio ifconfig nos dice lo que es cada IP.

Lo siguiente es probar si hacemos ping a una ipv6, pero con ping6!

root@salnitre:/# ping6 guifi.net
PING guifi.net(2a00-1508--5.ip6.guifi.net) 56 data bytes
64 bytes from v6.guifi.net: icmp_seq=1 ttl=61 time=53.5 ms
64 bytes from 2a00-1508--5.ip6.guifi.net: icmp_seq=2 ttl=61 time=53.1 ms
64 bytes from v6.guifi.net: icmp_seq=3 ttl=61 time=56.4 ms
64 bytes from 2a00-1508--5.ip6.guifi.net: icmp_seq=4 ttl=61 time=49.4 ms
64 bytes from v6.guifi.net: icmp_seq=5 ttl=61 time=52.4 ms
^C
--- guifi.net ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 49.450/53.014/56.469/2.263 ms

Tengo algunas dudas de porque a veces responde la inversa v6.guifi.net y a veces 2a00-1508–5.ip6.guifi.net, pero esto fijo que ya es configuración del DNS y las inversas de la IP.

Con IPv6 a diferencia de lo que pensaba, también existe DHCP, la configuración del DHCP en IPv6 es bastante similar a IPv4, incluso mas sencilla, en IPv6 > Pool creas el pool (es meter directamente el rango) y luego en IPv6 > DHCP Server donde quieres que se lanze la petición DHCP.
Parece que ambos protocolos se aceptan, pero el que mas “deprisa va” es el de autoconfiguración a partir del RA (Advertisment), el DHCP puede servir por ejemplo para algunas aplicaciones, ya que por ejemplo podemos hacer que unas aplicaciones salgan con una IPv6 u otra, pero el problema está en que casi ninguna de las aplicaciones que usamos hoy en día, está preparada para este comportamiento. Ponemos por el caso un banco, tienen la herramienta de gestión del banco, la conexión a internet, la telefonía IP, etc. pues en este caso se podría a llegar una subred IPv6 para cada uno de estos servicios.

Cuando estaba haciendo las configuraciones en un momento me ha funcionado y luego ha dejado de funcionar de golpe, así que lo que he tenido que hacer ha sido reiniciar la RB750GL y bajar y volver a subir mi interfaz de red, tras esto ya he podido hacer bien las pruebas, una de ellas esta:

http://test-ipv6.com

Lo curioso ha sido ver, cuando he empezado a navegar, que las webs que si disponen de IPv6 generaban tráfico en el túnel ya de forma automática sin tener que reiniciar el navegador :)

Ahora el siguiente paso es pues, generar unas buenas reglas del firewall para proteger un poco los ordenadores de la red! Pero esto lo dejo para otro post :)

¡Y esto es todo amigos! disculpad las aberraciones técnicas que pueda haber metido, toda aclaración, propuesta de mejora, corrección (también linguística hehe), será bienvenida!

Muchas gracias y a ipeuveseisear! :D

« »

guy fawkes