- CLI que permite estimar una dirección IP a nivel de país, estado/provincia y ciudad usando la latencia
- Usa más de 3000 probes de la red Globalping para realizar mediciones de ping y traceroute para cada IP
- Compara la latencia por etapas, de continente → país → estado/provincia → ciudad, y considera como ubicación real la región con el valor más bajo
- En las pruebas, mostró una precisión consistente con los resultados de ipinfo en lugares como Polonia, Florida y Miami
- Es una herramienta CLI de código abierto que cualquiera puede ejecutar y demuestra la utilidad práctica de la validación de ubicación IP basada en latencia
Resumen de la estimación de ubicación IP basada en latencia
- Se creó una herramienta CLI capaz de interpretar una dirección IP a nivel de país, estado de EE. UU. y ciudad
- Toma como referencia un caso en el que ipinfo demostró que proveedores de VPN registraban datos de ubicación falsos
- ipinfo construyó una gran red de probes para rastrear y hacer pruebas de ping a todas las IP y así verificar su ubicación física real
- Este enfoque permite excluir errores de datos públicos y lograr una determinación de ubicación más confiable basada en latencia y datos de hops
Uso de la red Globalping
- Globalping es un proyecto comunitario de código abierto que permite autoalojar probes en contenedores
- Actualmente hay más de 3000 probes distribuidos en todo el mundo
- Los usuarios pueden ejecutar pruebas de red como ping y traceroute a través de esta red
- La herramienta CLI automatiza el proceso con la librería globalping-ts
- Hace pruebas de ping de la IP ingresada desde varios continentes
- Selecciona el continente con la latencia más baja
- Luego realiza mediciones más detalladas con varios probes dentro de ese continente
Estructura por etapas de la medición
- Paso 1 (detección de continente): prueba de ping con 5 probes por continente
- Ejemplo de resultado: Europa 32.39ms, Norteamérica 137.18ms → se elige Europa
- Paso 2 (detección de país): medición con 50 probes dentro del continente seleccionado
- Resultado: Polonia 7.29ms, Alemania 13.42ms, Lituania 17.65ms → se determina Polonia
- Paso 3 (detección de estado en EE. UU.): prueba con 50 probes dentro de Estados Unidos
- La IP de “Bahamas” de NordVPN se determinó en realidad como Florida (0.45ms)
- Paso 4 (detección de ciudad): medición con 36 probes dentro del estado
- Resultado: Miami (0.00ms), seguida por West Palm Beach y Tampa
Precisión y limitaciones
- El “magic field” de Globalping elige probes aleatoriamente a nivel continental, por lo que algunos países podrían quedar fuera
- Esto puede provocar clasificaciones erróneas en países vecinos
- Para mejorar la precisión, hace falta especificar probes directamente por país o estado y ajustar la cantidad de probes
- Ejemplo: para Norteamérica se recomiendan 200 probes en EE. UU., 20 en Canadá y 10 en México
- La versión actual usa la cantidad mínima de probes para que usuarios no autenticados también puedan ejecutarla
- Con autenticación, se pueden hacer hasta 500 pruebas por hora, y se pueden obtener créditos adicionales mediante hosting de probes o patrocinio en GitHub
Ejecución y uso de la herramienta de código abierto
- Comando:
geolocate $IP
- La opción
–limit permite ajustar la cantidad de probes por etapa
- La documentación en GitHub muestra el uso completo
- Se agradecen propuestas de mejora vía Pull Request
- También se puede solicitar créditos gratuitos y participar alojando probes
Conclusión
- La estimación de ubicación IP basada en latencia es un método preciso y práctico cuando se dispone de suficientes puntos de observación
- Con la red Globalping y una herramienta CLI de código abierto, cualquiera puede verificar fácilmente la ubicación real de una IP
- Se confirman múltiples usos posibles, como validar ubicaciones falsas de VPN, analizar enrutamiento de red y depurar rendimiento
1 comentarios
Comentarios en Hacker News
Es solo una demo sencilla, así que no alcanza para uso real en producción
Para hacerlo bien, se necesitan al menos 500 probes en cada etapa
Se evitó optimizar a propósito para no superar los límites para usuarios anónimos
La idea sería medir 3 veces desde varios continentes al inicio, descartar el probe más lento y agregar nuevos probes cerca de los más rápidos, repitiendo el proceso
Así, en vez de dividirlo en 5 etapas, quizá se podría ir “siguiendo” la ubicación real en tiempo real
La idea es tratar la latencia como un campo potencial escalar y usar su gradiente
Me dio risa que los mensajes de commit fueran de una sola palabra, pero hasta se siente más humano
Por ejemplo, con herramientas como fakeroute se podrían hacer engaños todavía más elaborados
Casi no tendría utilidad práctica, pero es una idea divertida
Como en aquel caso en que The Pirate Bay fingió haberse mudado a Corea del Norte, un AS incluso podría agregar AS falsos a la ruta BGP para que pareciera más creíble
Esto hasta podría convertirse en un juego del gato y el ratón con las VPN
Referencias relacionadas: discusión en Reddit, caso en HN
Incluso en enlaces de 1000/30Mbps se han visto retrasos de hasta 2500ms
Video de la charla
Las limitaciones de la geolocalización basada en ping son estas:
la IP ya tiene información de ubicación en una base de datos, la asimetría de enrutamiento rompe el modelo de distancia, con Anycast/CDN una sola IP puede existir en varias regiones, e ICMP puede estar bloqueado o tener baja prioridad
Yo usé un modelo de latencia HTTP(S) + ML (SVR) en lugar de ping, entrenado con 39 mil datos
En servidores detrás de CloudFront, el error era de unos 600 km
Más que la precisión, lo importante es la detección de sandbox, el malware con geofencing y aportar una señal de ubicación secundaria cuando falla la IP DB
Hace tiempo, hablando con un amigo de Países Bajos, me pasó que desde Reino Unido accedía a contenido de NL con menor latencia
Probablemente se deba a diferencias en la calidad del peering
Estamos colaborando con IXPs y grandes organismos de Internet en proyectos de intercambio de datos de enrutamiento y peering
Hay países que hacen peering directo con IXPs de otros continentes y eso provoca diferencias de latencia equivalentes a miles de km
Incluso hay casos en que el tráfico entre dos operadoras del mismo país sale al extranjero y luego regresa
Estamos corrigiendo estos fenómenos con algoritmos de geoinformación basados en medición
El objetivo final es ayudar a que IXPs, operadoras y organismos de gobernanza de Internet resuelvan estos problemas
En VDSL o DOCSIS puede haber entre 5 y 15ms de retraso solo en un tramo de 1 km
Entre Londres y Ámsterdam son unos 7ms
Antes incluso faltaba fibra óptica en ciudades importantes de Países Bajos
O sea, una distancia inflada más de 8 veces respecto a la real
Un servidor en Reino Unido está más lejos, pero aun así da menor ping
Un enfoque basado en traceroute parece más realista que uno basado en ping
El investigador Calvin va a dar una charla en NANOG96 sobre geolocalización IP basada en mediciones
Enlace de la charla
Ojalá hubiera más proyectos así en HN
Es un enfoque demasiado simple, así que quizá usar triangulación (triangulation) daría más precisión
Con suficientes probes y un poco de suerte, funciona sorprendentemente bien
Claro que hay formas más inteligentes de hacerlo
Por eso, en la práctica, usar la medición individual más cercana suele ser lo más realista
Para obtener datos útiles, se necesitan miles de nodos por ciudad
RIPE IPmap ya mapea con bastante precisión la mayoría de los routers públicos
También recomiendo ping.sx como herramienta de comparación
A menudo el FQDN del último hop incluye un código de aeropuerto o de ciudad, lo que ayuda mucho