ipinfo zu Hause nutzen: So findet man den Standort einer IP per Latenz in der CLI
(blog.globalping.io)- Ein CLI-Tool, das mithilfe von Latenz eine IP-Adresse auf Länder-, Bundesstaat-/Provinz- und Stadtebene schätzen kann
- Nutzt mehr als 3000 Probes im Globalping-Netzwerk, um für jede IP Ping- und Traceroute-Messungen durchzuführen
- Vergleicht die Latenz schrittweise über Kontinent → Land → Bundesstaat → Stadt und bewertet die Region mit dem niedrigsten Wert als tatsächlichen Standort
- Tests zeigen eine Genauigkeit, die mit den Ergebnissen von ipinfo übereinstimmt, etwa für Polen, Florida und Miami
- Als Open-Source-CLI-Tool für alle ausführbar und ein Nachweis für die Praxistauglichkeit latenzbasierter IP-Standortprüfung
Überblick über die latenzbasierte IP-Standortbestimmung
- Es wurde ein CLI-Tool entwickelt, das IP-Adressen auf Länder-, US-Bundesstaat- und Stadtebene auflösen kann
- GitHub-Repository: jimaek/geolocation-tool
- Ausgangspunkt war ein Fall von ipinfo, der belegte, dass VPN-Anbieter falsche Standortdaten registrieren
- ipinfo baut ein großes Probe-Netzwerk auf und verfolgt sowie pingt alle IPs, um ihren tatsächlichen physischen Standort zu verifizieren
- Dieser Ansatz schließt Fehler in öffentlichen Datenquellen aus und ermöglicht eine verlässliche Standortbestimmung auf Basis von Latenz- und Hop-Daten
Nutzung des Globalping-Netzwerks
- Globalping ist ein Open-Source-Community-Projekt, bei dem sich containerisierte Probes selbst hosten lassen
- Derzeit sind mehr als 3000 Probes weltweit verteilt
- Nutzer können über dieses Netzwerk Netzwerktests wie Ping und Traceroute durchführen
- Das CLI-Tool automatisiert dies mit der globalping-ts-Bibliothek
- Führt für die eingegebene IP Ping-Tests von mehreren Kontinenten aus
- Wählt den Kontinent mit der geringsten Latenz
- Führt danach innerhalb dieses Kontinents detailliertere Messungen mit mehreren Probes durch
Aufbau der einzelnen Messstufen
- Stufe 1 (Kontinenterkennung): Ping-Test mit je 5 Probes pro Kontinent
- Beispielergebnis: Europa 32.39ms, Nordamerika 137.18ms → Europa gewählt
- Stufe 2 (Ländererkennung): Messung mit 50 Probes innerhalb des gewählten Kontinents
- Ergebnis: Polen 7.29ms, Deutschland 13.42ms, Litauen 17.65ms → als Polen bewertet
- Stufe 3 (US-Bundesstaatenerkennung): Test mit 50 Probes innerhalb der USA
- Die „Bahamas“-IP von NordVPN wurde tatsächlich als Florida (0.45ms) eingestuft
- Stufe 4 (Stadterkennung): Messung mit 36 Probes innerhalb des Bundesstaats
- Ergebnis: Miami (0.00ms), danach West Palm Beach und Tampa
Genauigkeit und Grenzen
- Das „magic field“ von Globalping wählt Probes auf Kontinentebene zufällig aus, wodurch einzelne Länder fehlen können
- Dadurch sind Fehleinstufungen in Nachbarländer möglich
- Für höhere Genauigkeit sollten Probes pro Land oder Bundesstaat gezielt angegeben und die Anzahl der Probes angepasst werden
- Beispiel: Für Nordamerika werden 200 US-, 20 kanadische und 10 mexikanische Probes empfohlen
- Die aktuelle Version verwendet die minimale Probe-Anzahl, damit sie auch ohne Authentifizierung nutzbar ist
- Mit Authentifizierung sind 500 Tests pro Stunde möglich; zusätzliche Credits lassen sich durch Probe-Hosting oder GitHub-Sponsoring erhalten
Ausführung und Einsatz des Open-Source-Tools
- Befehl:
geolocate $IP- Mit der Option
–limitlässt sich die Anzahl der Probes pro Stufe anpassen
- Mit der Option
- Die vollständige Nutzung ist in der GitHub-Dokumentation beschrieben
- Verbesserungsvorschläge per Pull Request sind willkommen
- Kostenlose Credits anfragen und sich am Probe-Hosting beteiligen ist möglich
- Probe-Hosting: jsdelivr/globalping-probe
Fazit
- Latenzbasierte IP-Standortbestimmung ist bei genügend Beobachtungspunkten eine genaue und praxisnahe Methode
- Mit dem Globalping-Netzwerk und dem Open-Source-CLI-Tool kann praktisch jeder den tatsächlichen Standort einer IP einfach verifizieren
- Geeignet unter anderem für die Prüfung gefälschter VPN-Standorte, die Analyse von Netzwerk-Routing und Performance-Debugging
1 Kommentare
Hacker-News-Kommentare
Es ist nur auf Demo-Niveau und für den produktiven Einsatz unzureichend.
Um es richtig zu nutzen, bräuchte man in jedem Schritt mindestens 500 Probes.
Um die Limits für anonyme Nutzer nicht zu überschreiten, wurde bewusst auf Optimierung verzichtet.
Anfangs würde man auf mehreren Kontinenten jeweils dreimal messen, dann die langsamste Probe verwerfen und in der Nähe der schnelleren neue Probes hinzufügen, wiederholt als Iteration.
So könnte man den tatsächlichen Standort womöglich in Echtzeit „verfolgen“, statt ihn in fünf Stufen einzugrenzen.
Die Idee ist, Latenz als skalares Potentialfeld zu betrachten und dessen Gradienten zu nutzen.
Die Commit-Messages mit nur einem Wort waren lustig, wirkten aber gerade dadurch menschlich.
Mit Tools wie fakeroute ließen sich zum Beispiel noch ausgefeiltere Täuschungen umsetzen.
Praktisch wäre das kaum, aber es ist eine interessante Idee.
Wie in dem früheren Fall, als The Pirate Bay so tat, als wäre es nach Nordkorea umgezogen, könnte ein AS auch gefälschte AS-Einträge in den BGP-Pfad einfügen, um es glaubwürdiger wirken zu lassen.
Solche Techniken könnten zu einem Katz-und-Maus-Spiel mit VPNs führen.
Dazu: Reddit-Diskussion, HN-Beispiel
Selbst bei 1000/30Mbps-Anschlüssen treten bis zu 2500ms Verzögerung auf.
Vortragsvideo
Die Grenzen ping-basierter Standortbestimmung sind folgende:
IPs haben oft bereits Standortdaten in Datenbanken, Routing-Asymmetrie zerstört Distanzmodelle, durch Anycast/CDNs kann eine einzelne IP in mehreren Regionen existieren, und ICMP wird blockiert oder niedrig priorisiert.
Ich habe statt Ping ein Modell mit HTTP(S)-Latenz + ML(SVR) verwendet und mit 39.000 Datensätzen trainiert.
Bei Servern hinter CloudFront lag der Fehler bei etwa 600 km.
Wichtiger als Präzision sind Sandbox-Erkennung, Geofence-Malware und ein zusätzliches Standortsiganl, wenn IP-Datenbanken versagen.
Ich hatte früher einmal mit einem Freund in den Niederlanden gesprochen, und von Großbritannien aus hatte ich teils geringere Latenz zu NL-Inhalten.
Vermutlich lag das an Unterschieden in der Peering-Qualität.
Wir führen gemeinsam mit IXPs und großen Internetinstitutionen ein Projekt zum Teilen von Routing- und Peering-Daten durch.
In manchen Ländern gibt es direktes Peering mit IXPs auf anderen Kontinenten, wodurch die Latenz um Tausende Kilometer abweichen kann.
Es gibt tatsächlich Fälle, in denen Verkehr zwischen zwei Providern desselben Landes über das Ausland umgeleitet wird.
Solche Phänomene korrigieren wir mit messbasierten Geolokalisierungsalgorithmen.
Langfristig wollen wir IXPs, Provider und Internet-Governance-Organisationen dabei helfen, solche Probleme zu lösen.
Bei VDSL oder DOCSIS entstehen auf nur 1 km bereits 5–15ms Verzögerung.
London–Amsterdam liegt bei ungefähr 7ms.
Früher gab es selbst in großen niederländischen Städten nicht genug Glasfaserkabel.
Die Distanz wird also auf mehr als das Achtfache der Realität aufgebläht.
Ein Server in Großbritannien ist weiter weg, hat aber trotzdem einen niedrigeren Ping.
Ein traceroute-basierter Ansatz ist realistischer als Ping.
Unser Forscher Calvin wird auf der NANOG96 einen Vortrag über messbasierte IP-Geolokalisierung halten.
Link zum Vortrag
Solche Projekte würde ich auf HN gern öfter sehen.
Das ist ein zu simpler Ansatz; mit Triangulation müsste es genauer sein.
Mit genügend Probes und etwas Glück funktioniert es überraschend gut.
Natürlich gibt es deutlich schlauere Methoden.
Deshalb ist es realistischer, einfach den einzelnen nächstgelegenen Messwert zu verwenden.
Um brauchbare Daten zu bekommen, braucht man auf Stadtebene Tausende Nodes.
RIPE IPmap hat bereits die meisten öffentlichen Router korrekt kartiert.
Als Vergleichstool wird auch ping.sx empfohlen.
Im FQDN des letzten Hops stehen oft Flughafencodes oder Stadtkürzel, was hilfreich sein kann.