- Cómo y por qué se comparten las IP
- NAT: la técnica más usada para compartir una IP
- Posibles soluciones
Tomar la dirección IP de un cliente para tratar de individualizarlo es un método muy usado por la mayoría de los programas de Internet. Este método (que funcionó muy bien durante varios años), en el escenario actual de Internet ya no funciona, dando lugar a grandes confusiones.
Este artículo describe detalladamente las razones de este cambio de escenario, y presenta las soluciones que pueden adoptar los programadores y webmasters para recobrar la exactitud perdida.
Uno de los fundamentos técnicos de Internet consiste en que cada dispositivo u ordenador que se conecta a la red de redes debe poseer una única dirección IP (Internet Protocol) que lo identifique.
Basados en esta afirmación, muchos programas en la web intentan identificar a sus visitantes usando la IP que éstos muestran en sus cabeceras de petición HTTP (lo que el explorador envía al servidor para indicarle: "quiero ver tal página"):
- Muchos sistemas de encuestas (polls) no dejan votar más de una vez al día a una determinada IP, para evitar que un usuario pueda manipular los resultados votando muchas veces.
- Muchos sistemas de estadísticas se basan en la IP del usuario para determinar si las visitas que recibe un sitio provienen de diferentes clientes, y cuántas visitas repetidas nos generan algunos clientes en particular.
- Muchos sistemas de estadísticas usan nuestra propia IP para evitar contabilizar nuestros propios accesos a nuestro sitio web, y de esta forma mostrarnos sólo la actividad de los clientes reales.
- Muchos sistemas de intercambio de tráfico (tops, CJs, ad-Servers y rotadores de banners) leen la IP del cliente para determinar si una visita es "unica" o "raw": es decir, si se trata de un cliente que nos visita por primera vez en el día, o si es un "click" repetido, ya sea de alguien que está entrando de nuevo a un link que ya visitó, o está recargando la página, o retrocediendo en el historial del navegador.
- Todos estos "controles" basados en la IP del cliente están asumiendo ingenuamente que cada PC conectada a Internet tiene una IP única que lo identifica, tal como decían los libros hace unos pocos años. Pero esto ya no es así, desde que Internet comenzó su expansión masiva y las direcciones IP comenzaron a escasear. Hoy nos encontramos con un escenario algo cambiado: es posible encontrar cientos, e incluso miles de PCs que comparten una misma IP. Pero el software que no se ha adaptado a estos cambios seguirá considerando que todo ese enorme conjunto de máquinas es un solo cliente, aunque en realidad se trate de todo un pueblo o una pequeña ciudad…
- Entonces el mecanismo de encuestas dejará votar a una sola persona de esa ciudad (al primero que se levante a votar ese día). Los demás vecinos no podrán votar en el sistema de encuesta, que les dará el mensaje: "usted ya ha votado hoy".
- Los sistemas de estadísticas nos estarán marcando que tenemos una menor cantidad de visitantes individuales, pero a su vez nos indicará que los mismos mantienen una intensa actividad dentro de nuestro sitio web.
- Si compartimos nuestra IP con otros vecinos, y configuramos nuestro sistema de estadísticas para que no registre nuestra propia actividad, entonces tampoco estará registrando las visitas provenientes de los demás usuarios con que compartimos nuestra IP. Y éstos pueden ser decenas, cientos, o miles.
- Los sistemas de intercambio de tráfico estarán considerando que las visitas de un número creciente de personas son "raw", o repetidas. Y en algunos casos puede penalizarse un intercambio (y bajar su posición en el top o en las listas de enlaces) si se reciben muchas visitas desde las mismas ciudades o pueblos (o al menos desde clientes que se conecten mediante un mismo proveedor de Internet).
Cómo y por qué se comparten las IP
Cuando hace 10 años yo era consultor de una empresa que contrató un enlace permanente a Internet de 64 Kbps, el proveedor de Internet nos asignó un bloque de 32 direcciones IP. "Una dirección IP por cada 2 Kbps" era la norma prácticamente en todo el mundo. En esa empresa había unos 25 puestos de trabajo para conectarse a Intenet. De forma que asigné una IP para cada máquina.
El año pasado asesoré a otra empresa para conectar sus sistemas a Internet. Se contrató una línea de 2 Mbps, y el proveedor nos asignó 2 direcciones IP (una IP por cada 1 Mbps) 500 veces menos que hace 10 años! (en aquel entonces nos hubiesen asignado 1024 direcciones IP). Esto es porque los anchos de banda (las velocidades de transmisión de datos) han aumentado, pero el número de posibles direcciones IP sigue siendo exactamente el mismo desde que se inventó Internet. Los investigadores han diseñado un nuevo protocolo llamado IPv6 (IP versión 6, a diferencia del que está actualmente en uso que es IP versión 4). Pero el IPv6 aún está lejos de ser usado mundialmente, a pesar de que los sistemas operativos avanzados (como Linux) ya lo traen desde hace tiempo. Cuando el IPv6 esté en uso mundialmente, ya no existirán las situaciones problemáticas a que hago referencia en este artículo.
Pero por el momento, los proveedores de acceso a la red están usando soluciones que posibilitan el acceso a mucha más gente al Intenet, pero por otro lado complican al webmaster y al administrador de servidores en la tarea de identificar a los clientes que acceden a los sitios web.
NAT: la técnica más usada para compartir una IP
El NAT (Network Address Translation) permite que muchos clientes usen una misma IP, y funciona de la siguiente forma: La red de clientes tiene en cada una de las computadoras una IP interna que no es válida en Internet (a estas IP se les llama direcciones de red privada, y son 192.168.x.x para la clase C; 172.16.x.x para la clase B, y 10.x.x.x para la clase A).
Todas las máquinas de la red privada están configuradas para usar como puerta de enlace (o gateway) a una máquina o router que sí tiene su propia IP real. Este dispositivo de enlace tiene entonces 2 direcciones IP: una interna, que es la que ven el resto de las máquinas cliente (y que a la vez la usan como puerta de enlace), y una IP externa real, que es la que se ve desde Internet.
Cuando una máquina de la red interna quiere acceder a un sitio en Internet, entonces hace la solicitud a su puerta de enlace. Y la puerta de enlace (el router NAT) repite la solicitud desde su conexión a Internet, como si la estuviese generando él mismo. Cuando el NAT recibe la respuesta desde el sitio de Internet, la copia a la red interna, enviándola a la máquina que generó la petición inicialmente. Es entonces un "intermediario" para toda la actividad de sus clientes. Un router NAT, visto desde Internet, parece ser una máquina normal, pero con una actividad muy intensa.
El NAT no es la única técnica de acceso a Internet que invalida el viejo concepto de "1 cliente <–> 1 IP" que muchos programas pretenden usar como mecanismo de control. También exiten proxys anónimos, IPs dinámicas, etc. Pero a efectos de este artículo, trataremos el NAT como principal problema, sabiendo que las soluciones son las mismas para los diferentes escenarios técnicos.
Esquema de una red conectada a Internet mediante NAT
La reivindicación de las cookies: las cookies son parte del protocolo HTTP. Son un pequeño puñado de datos que el servidor es capaz de almacenar en la PC del cliente: un número de usuario o de sesión, preferencias de idioma, etc. Su uso es muy seguro tanto para el ciente como para el servidor. Pero el problema es que el usuario tiene la posibilidad de borrar las cookies de su PC (o directamente puede configurar su navegador para que no las acepte). Pero en más de un 95% de los clientes, las cookies harán su trabajo maravillosamente bien.
La "huella" de la PC: es el método más nuevo y el menos conocido y usado, pero también el más exacto. Consiste en obtener un sumario de las caracterísitcas de la máquina del ciente que establece una conexión. A su IP se suma el tamaño de su pantalla, la profundidad de color de su tarjeta de video, la versión del sistema opertaivo, el modelo y versión del explorador, si tiene instalado flash, quicktime, shockwave, Real Player, etc, etc.
Leyendo la "huella" de los usuarios, aunque los veamos conectarse desde una misma IP, sabremos por sus características que se trata de máquinas diferentes, y es posible identificarlas con gran precisión. Aún si todas las máquinas fueran iguales (dentro de una empresa, por ejemplo), pronto los usuarios les instalan plugins de software que modifican la huella de cada máquina. El sólo hecho de modificar el tamaño de pantalla modifica la huella también: de modo que en pocas horas, en un parque de máquinas e^xactamente iguales y que comparten una IP, se estaría en condiciones de individualizar la actividad que provenga de cada máquina.
En el estado actual de la tecnología, la combinación de cookies y "huella" del computador nos da una visión razonablemente precisa sobre la actividad de nuestros visitantes en los sitios web. Y la identificación de usuarios por su IP ya debería ser descartada por su inexactitud (que va en aumento).
Por Ing. Eduardo González González