- Una base de datos de geolocalización de IP vincula rangos de IP con país, ciudad, código postal, zona horaria y coordenadas; ipapi.is ofrece bases de datos gratuitas en CSV y comerciales en CSV/MMDB
- La edición gratuita no cubre todo el espacio IPv4 e IPv6 y también tiene menor precisión, pero la edición comercial usa la base de datos completa que alimenta el campo
locationde la API y se actualiza al menos 2 veces por semana - Para construir una por cuenta propia, hay que aprovechar en conjunto
geolocygeofeedde WHOIS, la inferencia de ubicación a partir de los campos de dirección y descripción en WHOIS, y proyectos públicos como RIPE IPmap, geofeed-finder y OpenGeoFeed - La precisión se vuelve inestable cuando una red está distribuida entre varias regiones o cuando las IP se reasignan o arriendan; según RIPE NCC en julio de 2023, la cobertura de
geolocera de 2.3% y la cobertura de URL degeofeedera de 0.17% - Los datos recopilados necesitan enriquecimiento y normalización para encontrar coordenadas a partir de ciudad y país, o la ciudad más cercana a partir de coordenadas; ipapi.is usa archivos de GeoNames con información postal, de ciudades y países
Componentes de una base de datos de geolocalización de IP
- Una IP to Geolocation Database es una base de datos que almacena información de geolocalización por rango de IP
- Una dirección IP puede geolocalizarse con la siguiente información
- País, ciudad, estado, código postal
- Zona horaria
- Latitud, longitud
- La base de datos de ipapi.is se divide en edición gratuita y edición comercial
- La edición gratuita puede descargarse en formato CSV
- La edición comercial se ofrece en formatos CSV y MMDB
- La edición comercial cubre todo el espacio IPv4 e IPv6
- La edición gratuita solo incluye una parte del espacio IPv4 e IPv6
- La base de datos comercial se actualiza al menos 2 veces por semana
Diferencias entre la edición gratuita y la comercial
- La base de datos gratuita de geolocalización de IP tiene menos entradas que la edición comercial y no cubre todo el espacio de direcciones IPv4 e IPv6
- La edición gratuita tiene menor precisión de geolocalización
- Las principales fuentes de la edición gratuita son datos WHOIS y RFC 8805 Geofeeds
- La base de datos comercial es la base completa que se usa en el campo
locationde la API de ipapi.is - La edición comercial calcula la ubicación combinando varias fuentes
- Registros WHOIS
- Mediciones activas de latencia basadas en ping y traceroute
- RFC 8805 Geofeeds
- Consultas DNS inversas
Formatos de base de datos y campo de precisión
- Los archivos de base de datos están en formato CSV o MMDB
- Los campos principales incluyen rango de IP, ubicación, coordenadas y precisión
ip_version: IPv4 es4, IPv6 es6start_ip,end_ip: IP inicial y final del rango de redcontinent,country_code,country,state,city,ziptimezone,latitude,longitudeaccuracy
accuracyindica la precisión estimada de la información de geolocalización en una escala del 1 al 51: precisión muy alta, normalmente confiable a nivel de ciudad2: precisión alta, por lo general confiable a nivel de ciudad3: precisión media, difícil de considerar confiable a nivel de ciudad4: precisión baja, normalmente precisa a nivel de país5: precisión muy baja, se espera precisión solo a nivel de país
Cómo revisar una muestra de MMDB
- La muestra de MMDB puede descargarse con
curl - La muestra puede leerse con mmdbctl
mmdbctl read -f json-pretty 0.239.249.144 locationSample.mmdb
- La salida de ejemplo devuelve la siguiente información para la IP
0.239.249.144- Ciudad
Copenhagen - País
Denmark - Coordenadas
55.67594,12.56553 - Red
0.239.249.144-0.239.249.151 - Fuente
geofeed|https://api.arelion.com/public/v1/geolocation
- Ciudad
Usos y límites de la geolocalización de IP
- La geolocalización de IP es el proceso de mapear una dirección IP a una ubicación geográfica definida por latitud y longitud
- Los negocios y proveedores de servicios en línea usan la información de geolocalización para varios fines
- Publicidad dirigida
- Detección y prevención de fraude
- Localización de contenido
- DRM y cumplimiento normativo
- Seguridad de red
- Analítica e insights
- Hay razones estructurales por las que la geolocalización de IP no siempre es precisa
- Las redes IPv4 e IPv6 asignadas pueden estar distribuidas geográficamente
- Existen redes diseñadas para operar en múltiples regiones, como redes móviles o satelitales
- La ubicación puede cambiar cuando un Regional Internet Registry o una empresa de alquiler de IP reasigna o vuelve a asignar redes IP
- Geolocalizar direcciones IP es complejo, pero puede ofrecer una precisión difícil de ignorar en una API de direcciones IP
Qué se necesita para construirla desde cero
- Cada dirección IP en Internet es propiedad de una organización específica o está administrada por ella
- Los Regional Internet Registry (RIR) como ARIN y APNIC almacenan información de propiedad en bases de datos WHOIS
- Los registros WHOIS no siempre incluyen información de geolocalización de la red asignada
- La organización propietaria de la red puede usar las IP en la ubicación geográfica que quiera, asignarlas a terceros o arrendar bloques de IP
- La recopilación de información de geolocalización se divide en tres grandes enfoques
- Extraer datos directos de geolocalización como
geolocygeofeedde los registros WHOIS - Hacer inferencia indirecta de ubicación a partir de la dirección postal, descripción e información de país en WHOIS
- Aprovechar proyectos públicos como RIPE IPmap, geofeed-finder y OpenGeoFeed
- Extraer datos directos de geolocalización como
Datos directos de geolocalización por RIR
-
RIPE NCC
- Los objetos
inetnumeinet6numde RIPE NCC asignan redes IP a organizaciones - La información de geolocalización puede ofrecerse mediante dos atributos:
geolocygeofeed geoloccontiene latitud y longitud como cadena de texto- Ejemplo:
47.855374 12.132041 - En julio de 2023, la base de datos de RIPE NCC tenía 4,190,644 objetos
inetnumy 819,381 objetosinet6num - De ellos, 114,389 objetos incluían el atributo
geoloc, con una cobertura total de 2.3% geofeedcontiene la URL de un archivo CSV en formato RFC 8805- La URL de geofeed puede registrarse en un atributo
geofeeddedicado o en el atributoremarkscon el formatoGeofeed {URL} - En julio de 2023, RIPE NCC tenía 6,643 URL de geofeed en el atributo
remarksy 2,035 registros WHOIS con atributogeofeed - La cobertura de URL de geofeed es de 0.17%, pero esta cifra puede ser engañosa porque un solo archivo geofeed puede incluir muchas redes
- Los objetos
-
ARIN
- ARIN ofrece información de geolocalización colocando la URL de geofeed en el atributo
Commentdel objetoNetRange - Se solicitó agregar un atributo geofeed dedicado, pero fue rechazado con el argumento de que
CommentoRemarkeran suficientes - A diferencia de RIPE NCC, la base de datos de ARIN no usa el atributo
geoloc
- ARIN ofrece información de geolocalización colocando la URL de geofeed en el atributo
-
LACNIC
- LACNIC es más proactivo que ARIN en el soporte de geolocalización
- LACNIC opera un Geofeed Service que permite a sus miembros proporcionar información de geolocalización de las direcciones IP que poseen
- Los datos públicos están disponibles en milacnic.lacnic.net/lacnic/geofeeds
- La base de datos WHOIS de LACNIC proporciona información de geolocalización a nivel de ciudad por defecto
- La base de datos de LACNIC puede descargarse desde el servidor FTP ftp.lacnic.net/lacnic/dbase/
-
AFRINIC y APNIC
- AFRINIC afirma que no ofrece un servicio de geolocalización ni tiene una relación oficial u operativa con proveedores de geolocalización
- AFRINIC, al igual que RIPE NCC, admite el uso de URL de geofeed en el atributo
remarks - APNIC ofrece soporte de geolocalización casi al mismo nivel que RIPE NCC
- atributo
geoloc - URL de geofeed en el atributo
remarks
- atributo
- APNIC muestra apertura a mejorar su soporte de geolocalización
Cómo inferir la ubicación desde WHOIS
- El propósito principal de WHOIS es proporcionar información del registrante de la organización propietaria de números de Internet como direcciones IP o números AS
- WHOIS suele incluir la dirección postal y el país de la sede o del punto administrativo de la organización
- A veces la dirección postal de la organización coincide con el lugar donde se usan las direcciones IP, pero no siempre
- En organizaciones grandes, la dirección administrativa puede no coincidir con la ubicación de todas sus direcciones IP
-
Inferencia en RIPE NCC
- En los objetos
inetnumeinet6numde RIPE NCC, los atributos aprovechables son los siguientescountry: solo ofrece precisión a nivel de paísdescr: descripción de la red, puede contener ubicación o direcciónnetname: difícil de parsear y de baja confiabilidadaddress: estrictamente es un atributo del objetoroley contiene la dirección postal
- El atributo
countryidentifica un código de país ISO 3166-2, pero no especifica si se trata de la sede, el centro de datos o la ubicación del usuario final - El atributo
descres una descripción de formato libre, pero resulta útil para inferir geolocalización cuando la organización incluye allí la ubicación y la dirección de la red addresspuede dar alta precisión, pero asumir que la dirección postal del objeto de rol coincide con el lugar de uso de la IP puede producir errores
- En los objetos
-
Inferencia en ARIN
- En ARIN, los siguientes atributos WHOIS pueden ser relativamente confiables en organizaciones pequeñas o concentradas en una sola ubicación
AddressCityStateProvPostalCodeCountry
- Organizaciones como universidades, hospitales o dependencias gubernamentales a veces usan las IP del objeto
NetRangeen la misma ubicación que su dirección postal administrativa - En grandes empresas u organizaciones de alcance nacional con muchos
NetRange, la dirección postal administrativa puede no coincidir con el lugar real de uso de las IP - En el ejemplo de Google Fiber, usar la dirección WHOIS ubica la IP en Mountain View, California, pero la mayoría de los proveedores de geolocalización la ubican en San Antonio, Texas
- En ARIN, los siguientes atributos WHOIS pueden ser relativamente confiables en organizaciones pequeñas o concentradas en una sola ubicación
-
LACNIC, AFRINIC y APNIC
- LACNIC proporciona geolocalización en su base de datos WHOIS, por lo que no hace falta inferencia adicional
- AFRINIC usa el mismo formato de base de datos WHOIS que RIPE NCC, así que pueden aplicarse los mismos principios
country,descraddressdel objetorole
- APNIC también usa el mismo formato de base de datos WHOIS que RIPE NCC, por lo que aplica los mismos principios
Proyectos públicos de geolocalización
-
RIPE IPmap
- RIPE IPmap era una API que proporcionaba datos de geolocalización para infraestructura central de Internet
- Parece que ya no recibe mantenimiento y que no ha tenido nuevas contribuciones desde 2019
- RIPE IPmap infería la geolocalización de direcciones IP mediante varios motores
- Los motores
latencyysingle-radiususaban mediciones de RIPE Atlas para ofrecer un radio de latencia de una dirección IP - La medición mínima de RTT proporciona un límite superior de la distancia máxima posible debido a la velocidad de la luz en fibra óptica
- El motor
reverse-dnsextraía geolocalización a nivel de ciudad a partir del nombre de host en registros PTR - La base de datos de RIPE IPmap puede descargarse desde https://ftp.ripe.net/ripe/ipmap/
- Según el sitio web del mantenedor anterior, la precisión y cobertura del proyecto se han deteriorado bastante
-
geofeed-finder
- geofeed-finder es una herramienta open source para descubrir y obtener archivos geofeed desde datos WHOIS
- La herramienta también realiza verificación de propiedad de prefijos, gestión de caché y validación de códigos ISO
- Puede extraer geofeeds desde datos WHOIS conforme a RFC 9092
- Como la cobertura de información geofeed en toda la red es muy baja, su utilidad práctica es limitada
-
LACNIC Geofeeds Service y OpenGeoFeed
- LACNIC Geofeeds Service ofrece información de geolocalización para una parte importante de los miembros de LACNIC
- Los datos pueden descargarse públicamente desde milacnic.lacnic.net/lacnic/geofeeds
- Es un proyecto importante porque permite recopilar información de geolocalización a nivel de RIR
- OpenGeoFeed es un proyecto open source que recopila geofeeds públicos propios conforme a RFC 9092
- OpenGeoFeed ofrece un archivo único con geofeeds públicos conocidos en opengeofeed.org/feed/public.csv
- OpenGeoFeed es prometedor, pero la cobertura de geofeed no parece estar actualizada y es poco probable que sus fuentes de datos se actualicen con frecuencia
Enriquecimiento y normalización de datos
- Los datos fuente de geolocalización recopilados desde varias fuentes pueden ser incompletos o inconsistentes
- Puede haber registros con información de país y ciudad pero sin coordenadas, y también registros con coordenadas pero sin información de país o ciudad
- Si un registro fuente solo incluye el país, la precisión difícilmente superará el nivel país
- Los datos recopilados deben enriquecerse y transformarse a un formato común
- El enriquecimiento de datos se realiza usando bases de datos geográficas open source
- El trabajo de enriquecimiento se divide en dos casos
- Encontrar latitud y longitud a partir del par ciudad-país
- Encontrar la ciudad y el país más cercanos a partir de latitud y longitud
- ipapi.is usa las siguientes bases de datos para enriquecer la información de geolocalización
- GeoNames Postal Code Files: códigos postales de todo el mundo, excluyendo algunos países por razones legales
- cities500.zip: ciudades con más de 500 habitantes
- countryInfo.txt: metadatos de países como capital, población y continente
1 comentarios
Opiniones en Hacker News
Ya leía sus artículos con gusto desde antes de unirme a IPinfo, y en IPinfo ofrecemos servicios de datos de geolocalización IP.
Usamos una metodología más amplia que la descrita aquí; también aprovechamos algunos datasets públicos, pero nuestros datos de ubicación principales provienen de mediciones basadas en ping.
Enviamos pings a direcciones IP desde varios servidores en todo el mundo e identificamos la ubicación mediante multilateración (multilateration). Un ping desde un solo servidor solo da información unidimensional —que está en algún punto dentro de cierto radio—, pero al repetirlo desde varios servidores, la ubicación se vuelve cada vez más precisa.
Con suficientes mediciones se puede llegar a una precisión cercana al nivel de código postal, y actualmente tenemos más de 600 servidores de detección en todo el mundo, número que seguimos aumentando.
Los datos públicos suelen estar desactualizados o no actualizarse con frecuencia, por lo general no son lo bastante precisos para ser útiles, y muchas veces solo ofrecen ubicaciones a nivel de grandes rangos de IP u organizaciones.
Además, los datasets públicos no tienen un proceso de verificación. Con el aumento de las transacciones de IPv4 y los servicios de VPN, hemos visto casos en los que se introduce información incorrecta, así que agradecemos los reportes para corregir ubicaciones IP, pero siempre los verificamos.
Por experiencia operando una red de detección, es mucho más fácil y barato comprar servidores en Nueva York que en cualquier país de África Central. La ubicación de una dirección IP influye mucho en el valor que esa IP puede ofrecer.
También ofrecemos una base de datos gratuita de IP-to-Country ASN que pueden usar en sus proyectos: https://ipinfo.io/developers/ip-to-country-asn-database
La idea de la triangulación por latencia es buena. He usado información de latencia para varios fines, como detección de VPN y proxies, pero no pensé que se pudiera obtener una ubicación tan precisa con eso.
Con 600 servidores, la triangulación por latencia debería dar una aproximación bastante buena, y es impresionante.
Sin embargo, me surgen algunas preguntas: cómo manejan el hecho de que algunos ISP tratan el tráfico ICMP con baja prioridad o degradan su rendimiento; para geolocalizar todo IPv4 habría que estar enviando pings continuamente a miles de millones de direcciones, así que si miden solo una IP aleatoria de cada inetnum/NetRange asignado; y, dado que la mayoría de las direcciones IP no responden a ICMP, si encuentran el router delante del destino y ubican ese router.
También la usamos para proporcionar datos de país en los logs de auditoría de clientes, para prevención de spam y para detección de fraude.
Así se podría copiar el archivo a S3, Google Cloud, etc., y consultarlo directamente con varias herramientas. También se puede hacer con CSV, pero no es tan fluido.
Si no quieres implementarlo tú mismo, puedes hacer que Cloudflare lo haga gratis con un Cloudflare Worker sencillo. Todas las solicitudes de Cloudflare incluyen información aproximada de ubicación IP.
También puedes enviar una solicitud a esta URL operada con un Cloudflare Worker. Debería tener baja latencia a nivel global: https://www.edenmaps.net/iplocation
Está bien usarlo en apps pequeñas; solo pediría que no envíen 10 millones de solicitudes por día.
Vivo en un país donde el idioma local no es mi lengua materna, así que odio mucho los sitios web que infieren el idioma por la ubicación IP y lo imponen.
Aunque el navegador envía el encabezado de idioma de forma muy clara, lo ignoran y deciden el idioma basándose en una suposición perezosa.
En la industria lo llaman “personalización de la experiencia web”, pero es una forma molesta de hacerlo. Nunca le he recomendado a nadie que haga eso.
Si vas a personalizar un sitio web con geolocalización IP, lo mejor sería limitarlo a cosas como impuestos, costos de envío o poner el país del usuario al principio en un desplegable de selección de país.
Fuera de eso, casi no se me ocurre nada. La traducción normalmente no funciona bien y solo estorba. Aunque el sitio web tenga buenas intenciones, crear una versión en el idioma local con Google Translate no es buena idea.
Hay pocas tecnologías que arruinen tanto la experiencia cotidiana de internet como estas bases de datos.
Ojalá simplemente desaparecieran.
En vez de que el sitio web adivine mal cada vez y esconda el flujo de corrección detrás de varios enlaces y cargas de página, podría preguntar el código postal en la primera carga.
Además, no hay forma de corregir la base de datos para obtener una “respuesta correcta” o una “mejor respuesta”, porque casi nunca quiero que el sitio use mi ubicación actual.
Por lo general reviso el inventario de una tienda en el lugar al que voy a ir. Todo este campo está intentando resolver un problema mal definido.
Depende del uso y de la precisión necesaria
La mejor forma de crear un servicio de geolocalización es tener mil millones de dispositivos que reporten simultáneamente su ubicación y su IP. En la práctica, Apple y Google están en esa posición
Como reciben actualizaciones continuas de IP y ubicación, tienen las mejores bases de datos de geolocalización del mundo
La clave es crear una app en la que la gente entregue voluntariamente su ubicación, y lograr que mucha gente la use. Por eso hoy en día todas las apps piden permiso de ubicación
Foursquare iba en la dirección correcta, pero se adelantó demasiado
Para determinar qué endpoint era óptimo para una IP o subred específica, había que usar telemetría de sesión HTTP, y como resultado se creó una base de datos propia similar a GeoIP basada en condiciones reales
Aun así, por motivos de privacidad, había que conservarla solo de la forma más temporal posible. Los resultados de geocodificación inversa de Apple Maps no podían usarse ni registrarse fuera del contexto de una solicitud de usuario en tiempo real, como buscar restaurantes cercanos
Como tema más o menos relacionado, Google Maps puede aprender la ubicación de una IP según qué lugar exploras en el mapa
Si ves una ubicación específica suficientes veces, aunque borres todas las cookies, al abrir Google Maps usa esa ubicación como ubicación predeterminada
Lo descubrí usando Google Maps, y considerando que varias personas pueden compartir la misma dirección IP, el aspecto de privacidad preocupa un poco
Es interesante, pero no creo que el cálculo real de geolocalización se haga así
Los datos de ARIN/RIPE no son lo suficientemente precisos más allá del país, así que no son útiles
La geolocalización comercial correlaciona la IP del cliente con ubicaciones físicas conocidas. Por ejemplo, información de AP WiFi o paquetes enviados al usuario. Al menos eso es lo que he escuchado durante décadas
También existe la geolocalización del dispositivo, pero si el usuario no acepta compartir datos de GPS, para targeting solo se usa la dirección IP. Un proveedor común es MaxMind, que distribuye una base de datos para alojarla localmente y consultarla
Los comentarios tienen un tono bastante cínico, pero a mí personalmente me pareció muy interesante
Me recordó cuando en mi primer trabajo agregaba PostGIS y búsqueda basada en ubicación a la base de datos. En ese entonces se basaba en direcciones y códigos postales
Hace bastante tiempo creé http://www.hostip.info. Era un servicio que recopilaba ubicaciones de direcciones IP de forma comunitaria, con algo como “¿Esta estimación está equivocada? Corrígela”
La última vez que lo revisé fue quizá hace unos 10 años: los países eran casi perfectos, las regiones incompletas y las ciudades estaban mejor que tirar una moneda. Todos los datos son gratuitos
No sé si todavía está en el sitio, pero también había un cubo 3D giratorio que mostraba direcciones conocidas o consultas recientes. x, y, z eran los primeros tres octetos de la dirección, y usaba colores distintos por grupos como país o continente
Era tan viejo que estaba escrito como applet de Java. Si lo volviera a hacer, creo que lo haría con WebGL
Lo vendí hace mucho, pero puse como condición que los datos siempre siguieran siendo gratuitos. Al principio no creí en la oferta que llegó por email porque parecía una estafa, pero todo salió bien a través de escrow.com, y creo que ambas partes quedaron satisfechas. De eso ya hace casi 20 años
Parece una versión moderna del GeoIP basado en ping mencionado antes: https://github.com/Ne00n/yammdb
Me interesan propuestas sobre cómo geolocalizar, aunque sea de forma muy aproximada, IPs de centros de datos
Estoy analizando datos de traceroute y conozco la ubicación de inicio y fin, pero lo que me interesa son los tramos intermedios
Por ejemplo, se puede inferir cierta información a partir de los códigos de aeropuerto incluidos en los nombres de host de los nodos
También parece posible inferir la ubicación con el tiempo RTT promedio, suponiendo que el estado de un nodo específico no sea malo
Algunos ejemplos problemáticos de IP son 193.142.125.129, 129.250.6.113 y 129.250.3.250. Aparecen en traceroutes del Reino Unido y se considera que están en Londres, pero los resultados de geolocalización están dispersos por todo el mundo
Los traceroutes hacia esas IP hacen que la red parezca ir a Londres
La IP de Google no responde a ping, pero las de NTT/Verio sí responden. Si haces ping desde un hosting con base en Londres, probablemente obtengas respuestas de milisegundos de un solo dígito, y con eso puedes fijar un límite superior para la distancia desde Londres
También puedes hacer ping desde otros hostings dentro del Reino Unido y desde el otro lado del canal para verificar si el ping más bajo sale del hosting en Londres. Aun así, podría ser que la conectividad pase por Londres pero la ubicación real esté en otro lugar, así que no se puede saber por completo
Hay que comprobarlo también desde otros puntos de observación para ver si no es anycast. En la mayoría de las redes del mundo, al hacer ping a 8.8.8.8 aparece un punto cercano, pero con estas IP los traceroutes también van a Londres incluso desde la zona de Seattle, así que al menos actualmente es muy probable que no sean anycast
Si no tienes hosting en todo el mundo, puedes buscar algún looking glass público de una red bien conectada que permita hacer este tipo de pings de vez en cuando
Dice que “el objetivo de TULIP es encontrar la ubicación de un host objetivo, identificado por nombre o dirección IP, usando mediciones de demora RTT de ping desde hosts de referencia con ubicaciones bien conocidas hasta el objetivo”
https://tulip.slac.stanford.edu/
Pero el endpoint publicado parece estar caído
El enfoque de obtener RTTs hacia esa IP desde sondas RIPE Atlas de ubicación conocida se acerca a la idea mencionada y, de todos modos, probablemente sea el mejor método
Esos anuncios BGP saldrían por distintos ISP upstream en varias ubicaciones
Si el upstream del anuncio proveniente de una ubicación específica es un ISP regional, se puede estimar hasta cierto punto que ese centro de datos está en esa región. Pero si se trata de un ISP Tier 1 que ofrece conectividad directa global, incluso esa estimación se vuelve difícil
Las relaciones BGP se pueden ver en herramientas de looking glass como bgp.tools: https://bgp.tools/prefix/193.142.125.0/24#connectivity
Si puedes ejecutar traceroute desde varias sondas de ubicación conocida distribuidas por el mundo, puedes triangular observando las IP fijas de las interfaces de los routers intermedios
Sin embargo, si usas una CDN como Cloudflare para anunciar tu bloque de IP desde más de 200 PoP y hacer que el tráfico llegue a centros de datos de todo el mundo a través de su red privada, este método también se rompe