featured image

Hace unos días publiqué un juego de conceta cuatro en un servidor de Vultr. Daban una opción económica de publicar el servidor solo con IPv6 y decidí probar porque su implantación comenzó en 2011 (hace ya 7 años), ¿crees que nuestros ISP están preparados para IPv6?

En principio no tuve problemas en el acceso desde casa usando una conexión Ziggo desde Almere (Países Bajos). El portátil estaba configurado para obtener una IPv6 desde el router y el router estaba preparado para proveer este tipo de conexión:

ping6 maple02

Tras acceder al servidor y realizar el despliegue decidí probar el sistema desde varios dispositivos. Había probado el portátil con dos ventanas del navegador y funcionaba correctamente. Ahora tocaba el turno a los móviles. Me topé con el problema de que el iPhone 5s que tengo, aún obteniendo una IPv6 no era capaz de conectar con el servidor. ¿Por qué?

¿Cómo funciona (a grandes rasgos) IPv6?

En principio quiero introducir de forma rápida cómo funciona IPv6 y porqué se estableció como la solución para la mayoría de los males de Internet. Por un lado, IPv4 sabemos que es una dirección formada por 4 bytes, lo cual hacen 32 bits de información y un máximo de 4 mil millones de combinaciones o 4 mil millones de IPs disponibles. No obstante no se distribuyen de forma plana. Estas IPs están seccionadas en rangos y algunos rangos están reservados únicamente para uso privado.

Para paliar el problema los rangos reservados y accesibles dentro de una misma red privada pueden repetirse. Es decir, como son direcciones no accesibles desde Internet sino solamente dentro de la propia red y a través de mecanismos establecidos por el router pueden realizar peticiones a otras máquinas empleando la IP pública única del router podemos encontrar dentro de organizaciones grandes la existencia de decenas, cientos y a veces incluso hasta miles de dispositivos accediendo a Internet a través de una única IP pública.

En un estudio Gartner decía que en 2017 habría 8.400 millones de dispositivos conectados a Internet lo cual doblaría la necesidad de direcciones IP si todos estos dispositivos quisieran tener una dirección pública en Internet.

Además IPv4 a través del uso de redes privadas plantea otros problemas cuando queremos realizar conexiones máquina a máquina. Si queremos establecer una comunicación directa entre un dispositivo (como un teléfono IP) hacia otro dispositivo (otro teléfono IP) y cada uno se encuentra dentro de una red privada la conexión entre ellos no es posible. Deben recurrir a técnicas como proxies, configuraciones de NAT dinámicas, ICE, TURN, etc.

La solución a todo esto llegó en 2011 a través de la propuesta de IPv6. En la especificación solucionaban los problemas a través de las siguientes propuestas:

  • ¿Solo 4 mil millones de dispositivos? En IPv6 no solo se dobla, se cuatriplica. Las direcciones IPv6 son de 128 bits separadas en 64 bits para direcciones de redes (permite 18 trillones de redes) y 64 bits para dispositivos dentro de estas redes (18 trillones de dispositivos). En total unos 340 sextillones de dispositivos pueden ser conectados a la red sin colisionar. Cada uno tiene su dirección IP única.
  • ¿Redes privadas y privacidad? En IPv6 hay una red reservada para dispositivos conectados que solo deban ser accesibles dentro de una red privada. Estos dispositivos no serán accesibles por tanto desde fuera de esa red y podrán comunicarse únicamente con el router y los dispositivos dentro de la red. Esto hace que en realidad cada dispositivo dentro de una red tenga dos direcciones IP. Una dirección IP solo para uso local y otra dirección IP para uso en Internet.
  • ¿Necesitamos NAT, ICE, TURN, STUN…? ¡No! Nunca más. Estas tecnologías son parches para poder solucionar los problemas de IPv4. Estos problemas no están presentes en IPv6 y una llamada de un dispositivo a otro puede realizarse directamente a través de su dirección IP única de acceso a Internet.

Hay muchos más detalles de seguridad que también están resueltos de una mejor forma en IPv6. Entonces, ¿por qué no se implantó de forma masiva en Internet y se dejó de usar IPv4?

Algunos comentarios en Internet

He preguntado a través de Quora English y Quora Español sobre cuál puede ser el motivo por el que aún se prefiere emplear IPv4 en lugar de IPv6. Obviamente la mayoría de las respuestas han sido subjetivas pero incluso dentro de su subjetividad apuntan puntos de vista del porqué ellos o en su entorno aún no se ha hecho.

Algunos de los motivos:

  • IPv4 ha sido implantado masivamente en muchos dispositivos y cambiar todos y cada uno de los sistemas que aún no son compatibles con IPv6 daría mucho trabajo de soporte a muchos grupos de usuarios de Internet. Sería frustrante e infructífero.
  • IPv4 es más fácil de configurar y entender para redes locales. O al menos es más fácil porque ya se conoce e integrar o activar IPv6 para muchos de estos usuarios requiere aprender esa nueva tecnología. Volvemos al punto anterior pero con el matiz de agregar en este nivel la enseñanza de las diferencias entre estos protocolos.
  • En realidad IPv6 ya lo están usando la mayoría solo que no lo saben y prefieren pensar que emplean IPv4 porque es más fácil de entender. Enlazado con el anterior pero desde el prisma de la experiencia de ciertos sitios donde IPv6 sí es una realidad, hay muchos dispositivos, redes y usuarios empleándolo y su migración ha sido tan fluida que ni siquiera se han dado cuenta de ello.

En una lista de usuarios de Córdoba (España) pregunté también para comprobar a través de esta página si su ISP (proveedor de Internet), dispositivos y/o portátiles estaban habilitados para soportar IPv6. En principio los dispositivos están preparados. Al menos para soportar de forma local IPv6. El problema es cuando queremos emplear ese protocolo para salir a Internet. Muchos de ellos solo permiten emplear IPv6 para enlace local.

A través de twitter agregué el mismo mensaje para obtener feedback a través del hashtag #ipv6ready donde de momento no ha habido mucho movimiento. Puedes echarle un vistazo al hilo y hacer tu comentario.

Sobre los problemas encontrados en la prueba que realicé para la publicación del juego creo que lo más destacable fueron unos problemas que enumero en las siguientes secciones.

Primer Problema: DNS

Esto es debido a dos problemas principales. En principio la resolución del nombre. Las IPv6 se configuran en los servidores DNS a través de un registro AAAA en lugar del típico A de IPv4. Esto hace que si intentamos resolver:

$ dig cuatro.altenwald.com

; <<>> DiG 9.10.6 <<>> cuatro.altenwald.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33851
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;cuatro.altenwald.com.      IN  A

;; AUTHORITY SECTION:
altenwald.com.      3586    IN  SOA elm.altenwald.com. bombadil.bosqueviejo.net. 2013082610 10800 3600 1209600 38400

;; Query time: 5 msec
;; SERVER: 9.9.9.9#53(9.9.9.9)
;; WHEN: Mon Nov 05 11:50:02 CET 2018
;; MSG SIZE  rcvd: 113

Vemos que no nos da resultado porque intenta solo resolver con A. Podemos hacer la prueba de utilizar AAAA en la línea de comandos, solo por asegurarnos de que funciona correctamente:

$ dig +short cuatro.altenwald.com aaaa
2001:19f0:5001:2865:5400:1ff:febd:e951

Aquí vemos (en short, o versión resumida) que la resolución es correcta. No obstante hay navegadores donde a día de hoy responden aún con el error de no poder resolver el nombre de dominio correctamente.

Segundo problema: routers

Aunque por la noche cuando estuve probando en casa no hubo el más mínimo problema, cuando traté de probar desde la conexión gratuita del tren me topé que tienen IPv6 pero sólo en conexión local con el router e incluso desde la oficina me topé con la imposibilidad de poder obtener una IPv6 de ningún tipo.

Seguramente el problema no sean los routers en sí sino la configuración que hacen en ellos los administradores de sistemas. Creo que por desconocimiento prefieren apagar las características que no controlan o entienden para dejar únicamente las que tienen pleno control de ellas.

Pero también el problema radica en los routers y el software de seguridad, detección de intrusos y actividad maliciosa. Este tipo de software es muy empleado en empresas y se sitúa o instala a nivel de router en medianas y grandes empresas. Por desgracia muchos de estos software o appliances no están preparados aún para asegurar una red que emplea IPv6.

Sin embargo, una red IPv6 es más segura por definición al tener integrado IPSec en el propio protocolo y no permitir la fragmentación y reensamblado de mensajes en routers intermedios. El origen y destino de los paquetes se conoce y no se modifica o altera en su paso por los routers y esto agrega mucha más seguridad para poder diseñar políticas de cortafuegos más eficientes.

Tercer problema: dispositivos

Durante la prueba tuve en mi poder dos dispositivos Android y dos dispositivos de Apple. Los dispositivos Android versiones 7 y 8, el primero Samsung y el segundo Xiaomi me sorprendieron. Incluso teniendo la misma interfaz de configuración ambos y conectados a la misma red. La versión 8 en Xiaomi no tenía opción para solicitar al router una dirección IPv6 para acceso a Internet. Solo permitía el uso local de IPv6.

Por parte de Apple comprobé un hecho extraño. Incluso disponiendo de una IPv6 válida el dispositivo no era capaz de alcanzar la red.

Cuarto problema: proveedores de red

La aplicación desarrollada era una web con websockets donde los clientes se conectan para intercambiar información en tiempo real y jugar al juego. Todo está controlado desde el servidor. El problema está en la inactividad. Si un usuario permanece más de 30 segundos sin hacer ninguna acción ni recibir información a través del websocket, la conexión es finalizada.

Quinto problema: administradores de sistemas

Sí, desgraciadamente la mayoría de profesionales no maneja habitualmente este protocolo y por lo tanto prefieren evitarlo. Muchas de las instalaciones profesionales o empresariales que he revisado tras conectarme recientemente a través de sus redes públicas y/o privadas es la falta de configuración de IPv6. No es que lo hayan dejado configurado solo como enlace local, directamente está inhabilitado para poder ser empleado dentro de esas redes. Y está hecho adrede.

En muchas redes privadas y profesionales donde se realizan muchas conexiones de VoIP la mayoría de problemas de conectividad podría resolverse únicamente estableciendo la comunicación punto a punto a través de IPv6. Pero temen mucho más el problema de la seguridad, de la posibilidad de exponer esos mismos dispositivos a Internet que prefieren cerrar toda posibilidad de tener activo un protocolo que no dominan.

Conclusiones

Depende del lugar donde nos encontremos podemos ver una mayor implicación en la puesta en producción de IPv6 o una menor acogida de esta tecnología. Los proveedores de servicios cobran alrededor de un euro por la adquisición de una IPv4 para la puesta en producción de servicios mientras que las direcciones IPv6 son gratuitas. De hecho incluso para poder obtener varias direcciones IPv4 (por motivos de tener distintos certificados SSL) supone un problema y hay que requerir al proveedor de servicios la dirección IP con un motivo especificado del porqué lo requerimos además de realizar el pago mensual de un euro por obtener esta nueva dirección IP.

No obstante parece que de momento no cabe otra solución debido al nivel de implantación actual. Publicar una página web o disponer de un servicio en Internet para el público no puede estar limitado únicamente al público que tiene la ventaja de ya tener integrado (aún sin saberlo en la mayoría de los casos) esta nueva tecnología frustrando al resto de usuarios que traten de acceder e incluso luchar con sus dispositivos, router e ISP en última instancia para poder acceder al servicio.

¿Cuánto crees que le queda aún a IPv4?, ¿tienes en tu red doméstica y/o laboral IPv6?, ¿has tenido tentación de usarla y no has podido?, ¿tienes alguna historia similar de intento de uso de IPv6?, ¡Déjanos tu comentario!