Es tan simple como encontrar en qué subred cae una IP

No es magia de CSI, es fácil obtener información de ubicación desde una dirección IP. Internet se divide en fragmentos, llamados subredes, que se distribuyen por todo el mundo. Obtener una ubicación es tan simple como encontrar en qué subred cae una IP.

¿Cómo funciona esto, de todos modos?

Las subredes se definen mediante la notación CIDR, que es solo una forma concisa de representar un rango de direcciones IP. Por ejemplo, 192.168.1.0/24 representa el rango de 192.168.1.0 a 192.168.1.255. El número que sigue a la barra indica cuántos bits se utilizan para la dirección (en este caso, los primeros 24 bits, que componen los primeros 3 bytes) y el resto se asignan a los dispositivos (en este caso, los 8 últimos bits, que forman el último número de la dirección).

Las partes más grandes son asignadas por la Autoridad de Números Asignados de Internet (IANA). IANA se encarga de asignar el primer número de una dirección IP, desde 0.XXX.XXX.XXX hasta 255.XXX.XXX.XXX. La asignación de direcciones en esos bloques se da más a agencias locales.

Por ejemplo, la dirección IP 173.79.255.255 es parte del bloque 173.0.0.0/8, que se le dio en 2008 al Registro Americano de Números de Internet (ARIN). Dentro de ese bloque, 173.64 a 173.79 se asignó a Verizon para su uso en el área del norte de Virginia, que es donde cae nuestra dirección IP de ejemplo.

búsqueda en Arin

No podrás rastrear a alguien hasta su casa como lo hacen en las películas, pero puedes obtener fácilmente información sobre la ciudad o la región. Todo esto es público y en línea, y puedes verificar tu propia dirección usando las herramientas de búsqueda de ARIN.

Entonces, lo único real que tienes que hacer para obtener información de ubicación de una dirección IP es tener una tabla de todas las diferentes asignaciones que han realizado IANA, ARIN y otros; luego, simplemente puedes buscar en la tabla como cualquier otra base de datos.

Toda la información está disponible públicamente, por lo que si deseas buscarla tu mismo en el sitio web de ARIN, puedes hacerlo, pero hay personas que ya han compilado bases de datos de ubicación de IP y han facilitado mucho el proceso.

Consultar una base de datos de ubicación de IP

Hay muchos de estos sitios en línea, y muchos de ellos son completamente gratuitos. KeyCDN ejecuta una herramienta de búsqueda gratuita, completa con una API desde la que puedes acceder. Simplemente escribe la dirección IP y te mostrará toda la información que tiene. Este sería el resultado para mi actual IP:

localizar una IP en KeyCDN

Tener acceso a esta información desde una API es particularmente útil cuando deseas encontrar una ubicación mediante programación. Por ejemplo, si deseas verificar la ubicación de las IP problemáticas que llegan a tu servidor, puedes tomar la dirección IP de los archivos de registro y ejecutarla mediante una API. Si es extranjero o proviene de un lugar extraño, puede ser malicioso.

Puedes acceder a la API de KeyCDN desde la siguiente URL, con una utilidad como curl:

curl https://tools.keycdn.com/geo.json?host=173.79.254.254

O desde un lenguaje de programación como PHP:

$IP = '173.79.254.254';
$json = file_get_contents('https://tools.keycdn.com/geo.json?host=' . $IP);
$obj = json_decode($json);

Esta API en particular devuelve un objeto JSON con la información. Por ejemplo, puedes encontrar el código postal de una dirección con response.data.geo.postal_code:

{
"status": "success",
"description": "Data successfully received.",
"data": {
"geo": {
"host": "173.79.254.254",
"ip": "173.79.254.254",
"rdns": "pool-173-79-254-254.washdc.fios.verizon.net",
"asn": 701,
"isp": "MCI Communications Services, Inc. d/b/a Verizon Business",
"country_name": "United States",
"country_code": "US",
"region_name": "Virginia",
"region_code": "VA",
"city": "Alexandria",
"postal_code": "22309",
"continent_name": "North America",
"continent_code": "NA",
"latitude": 38.719,
"longitude": -77.1067,
"metro_code": 511,
"timezone": "America/New_York",
"datetime": "2019-08-22 17:30:48"
}
}
}

La API tiene una tasa limitada de tres solicitudes por segundo, lo que debería estar bien para un uso normal.

Si deseas realizar muchas solicitudes muy rápidamente, necesitarás tu propia base de datos. Estas también están disponibles públicamente; IP2Location ofrece una versión "Lite" de su base de datos de forma gratuita, aunque también puedes comprar una tabla con entradas más precisas. Esto viene en forma de CSV, que puedes cargar fácilmente en MySQL u otra solución de base de datos y acceder mediante programación.