Facebookfacebook Twitter Emailmail Imprimirprint
Jueves 18 de abril de 2024
Santoral:
Wladimir
Otros:
Semana:
16
Día año:
109/366 (30%)
U.F.:
Sin información
IPC:
Sin información
Dolar:
Sin información
Euro:
Sin información
Bitcoin:
U$ {bitcoin}
mindicador.cl

Cuidados en el desarrollo de aplicaciones compatibles con IPv6

Seleción de la librería correcta y validaciones

Introducción

Se ha dicho muchas veces que los IP se están agotando, pero ahora si es efectivo, y de hecho ya se agotaron para Estados Unidos y Canadá. Paulatinamente se verá un aumento en el uso de IPv6 a niver corporativo y personal, por lo que prontamente será requisito para cualquier desarrollo de software.

Ya debemos contemplar en el desarrollo de nuestra aplicaciones y/o servicios su compatibilidad con IPv6, más aun cuando se trata de aplicaciones con orientación de Internet de las Cosas (IoT).

Cuando configuramos una aplicación con una conexión remota utilizando su nombre DNS, dejamos en manos del Sistema Operativo decidir si utilizará IPv6 o IPv4. Por lo general intenta primero con IPv6, y si falla intenta con IPv4.

Podemos en algunos casos requerir exlusivamente del uso de IPv6, con lo cual la aplicación deberá reconocer y aceptar

Para el caso de los Servicios contamos con conexiones entrantes, para registrar o validarlas debemos contemplar IPv6 además de IPv4 en ambientes Dual Stack.

Principales Cuidados

Selección de librería de Sockets

Muchos lenguajes proveen de librerías para el uso de Sockets IP, por lo cual habrá que identificar la librería disponible para el uso de IPv6 y verificar los cambios que requiere en la programación.

Veremos en el caso de Perl, se cambia el uso de la librería IO::Socket::INET por IO::Socket::IP, la cual es totalmente compatible, por lo que muchas veces solo basta con el reemplazo de la librería. Igualmente se recomuenda actualizar Perl a la versión 5.14. Veamos el ejemplo que dado en la documentación de la librería:

#!/usr/bin/perl
#
#

use IO::Socket::IP;

 my $sock = IO::Socket::IP->new(
    PeerHost => "www.google.com",
    PeerPort => "http",
    Type     => SOCK_STREAM,
 ) or die "Cannot construct socket - $@";

 my $familyname = ( $sock->sockdomain == PF_INET6 ) ? "IPv6" :
                  ( $sock->sockdomain == PF_INET  ) ? "IPv4" :
                                                      "unknown";

 printf "Connected to google via %s\n", $familyname;

El script genera una conexión hacia el puerto http (80) de www.google.com. El sistema operativo brindará la conexión por medio de IPv6 o IPv4, al utilizar un nombre, se intenta primero con IPv6 y luego con IPv4. Finalmente se imprime por pantalla la versión de IP utilizada.

En el caso de JavaScript, utilizando ajax o websockets, no se requiere de ningún cambio al referir el servidor por su nombre, solo tener el cuidado cuando se utiliza un IP directamente, donde la URL IPv6 debe ser dada de la forma http://[2001:db8:3213::7]:80 (como se usa en un navegador), o ws://[2001:db8:3213::7]:1771 para websocket.

Validaciones

Podemos comenzar por validar el formato del IPv6, tanto al servicio que queremos conectar o para el cliente que origina la conexión, deberemos contemplar caracteres de 0 al 9, 'a' a la 'f' y el caracter ':' (dos puntos) en un máximo de 8 grupos de a 4 dígitos (hexadecimanles) separados por un máximo de 7 caracteres ':', donde solo una vez pueden haber 2 juntos. Es bastante probable que la librería a utilizar se encargue de la validación sintáctica del IP.

Para el caso de validaciones de seguridad para aceptar una conexión entrante, podemos tomar en cuenta:

Registro

Si nuestra aplicación guarda registro de los IP de origen de las conexiones en una base de datos, deberemos considerar un tamaño a lo menos de 39 caracteres (32 dígitos hexadecimales y 7 separadores ':')

Escrito por: Luis Hernán de la Barra, 03/08/2016
Si tiene interés por alguno de éstos servicios u otro similar, por favor llene el formulario de contacto

Generado por Sistema y almacenado en cache

Wyzer
Luis Hernán de la Barra
Teléfono:   +56995451689
WhatsApp:   +56995451689
E-Mail:info@wyzer.cl
Web:www.wyzer.cl