2 ポイント 投稿者 GN⁺ 2026-02-02 | 1件のコメント | WhatsAppで共有
  • レイテンシ(latency) を活用して、IPアドレスを 国・州・都市単位で推定 できる CLIツール
  • Globalpingネットワークの3000以上のプローブ を利用し、各IPに対して pingとtraceroute測定 を実行し
  • 大陸 → 国 → 州 → 都市 の段階ごとにレイテンシを比較し、最も低い値を持つ地域を実際の位置と判断する
  • テスト結果では、ポーランド・フロリダ・マイアミ などでipinfoの結果と一致する精度を示した
  • オープンソースのCLIツール として誰でも実行可能で、レイテンシベースのIP位置検証方式の実用性 を実証した

レイテンシベースのIP位置推定の概要

  • IPアドレスを 国、米国の州、都市レベル で特定できる CLIツール を作成した
  • ipinfoがVPNプロバイダーによる 虚偽の位置データ登録 を立証した事例を参考にした
    • ipinfoは 大規模なプローブネットワーク を構築し、すべてのIPを追跡してpingテスト を行うことで実際の物理的位置を検証している
  • このアプローチは 公開データの誤りを排除 し、レイテンシとホップ(hop)データ に基づいて信頼性の高い位置判定を可能にする

Globalpingネットワークの活用

  • Globalping はオープンソースのコミュニティベースのプロジェクトで、コンテナ型プローブをセルフホスト できる
    • 現在 3000以上のプローブ が世界中に分布
    • ユーザーはこのネットワークを通じて ping、tracerouteなどのネットワークテスト を実行できる
  • CLIツールは globalping-tsライブラリ を使って自動化されている
    • 入力されたIPを複数の大陸からpingテスト
    • 最も低いレイテンシを示す大陸を選択
    • その後、該当する大陸内の複数のプローブで詳細測定を実施

測定段階ごとの構造

  • 第1段階(大陸検出) : 各大陸ごとに5つのプローブでpingテスト
    • 例の結果: ヨーロッパ 32.39ms、北米 137.18ms → ヨーロッパを選択
  • 第2段階(国検出) : 選択した大陸内の50プローブで測定
    • 結果: ポーランド 7.29ms、ドイツ 13.42ms、リトアニア 17.65ms → ポーランドと判定
  • 第3段階(米国の州検出) : 米国内の50プローブでテスト
    • NordVPNの「バハマ」IPが実際には フロリダ(0.45ms) と判定された
  • 第4段階(都市検出) : 州内の36プローブで測定
    • 結果: マイアミ(0.00ms)、West Palm Beach、Tampa の順

精度と限界

  • Globalpingの「magic field」 は大陸単位でプローブをランダムに選ぶため、特定の国が漏れることがある
    • このため 隣接国への誤判定 が発生する可能性がある
  • 精度を高めるには 国・州ごとにプローブを直接指定 し、プローブ数を調整 する必要がある
    • 例: 北米の場合、米国200、カナダ20、メキシコ10プローブを推奨
  • 現在のバージョンは 未認証ユーザーでも実行可能 にするため最小限のプローブ数を使用している
    • 認証時は1時間あたり500回のテストが可能で、追加クレジットは プローブのホスティングまたはGitHubスポンサー で確保できる

オープンソースツールの実行と活用

  • コマンド: geolocate $IP
    • –limit オプションで段階ごとのプローブ数を調整できる
  • GitHubドキュメント で使い方全体を確認できる
  • Pull Request による改善提案を歓迎
  • 無料クレジットのリクエスト および プローブホスティングへの参加 が可能

結論

  • レイテンシベースのIP位置推定 は、十分な観測地点を確保できれば 正確で実用的な方法 である
  • GlobalpingネットワークとオープンソースCLIツール により、誰でも簡単にIPの実際の位置を検証できる
  • VPNの位置偽装の検証、ネットワークルーティング分析、性能デバッグ など、さまざまな活用可能性が確認された

1件のコメント

 
GN⁺ 2026-02-02
Hacker Newsのコメント
  • Globalpingのようなサービスを使って 地理的位置推定 が可能か試した小さなプロジェクトとのこと。
    単なるデモレベルなので実運用には不十分。
    きちんと使うには各段階で最低500個のprobeが必要。
    匿名ユーザーの制限を超えないようにするため、最適化はあえて避けたとのこと。
    • probe数を減らしつつ効率を上げる gradient descent方式 を試せそう。
      最初に複数の大陸で3回ずつ測定し、最も遅いprobeを捨てて速い側の近くに新しいprobeを追加する、というのを繰り返す。
      こうすれば5段階に分ける代わりに、実際の位置をリアルタイムで「追跡」できそう。
      latencyを スカラー潜在場 と見なし、その勾配を使う発想。
    • 理論上は3つのprobeで十分では?
  • AIなしで作られている点が印象的。
    コミットメッセージが一語だけで笑ったが、むしろ人間味を感じる。
    • コードに「══════」の区切り線があって、一部は Claude が生成したのではと思った。
  • 測定対象サーバーが送信元IPに応じて 人為的な遅延 を追加し、位置をごまかせるのか気になる。
    • 十分可能。
      たとえば fakeroute のようなツールでもっと巧妙に偽装できる。
      実用性はほとんどないが、面白いアイデア。
    • 不可能ではないが、単にpingに応答しないほうがずっと簡単。
    • traceroute自体が解釈の難しいツールなので、偽装は非常に容易
      以前The Pirate Bayが北朝鮮に移転したふりをした事例のように、ASがBGP経路に偽のASを追加してもっともらしく見せることもできる。
      こうした技術がVPNとの いたちごっこ につながるかもしれない。
      関連参考: Redditの議論, HNの事例
    • 米国の一部地域ISP(Xfinity、Charterなど)は Bufferbloat のせいで、すでに人為的な遅延が発生している。
      1000/30Mbps回線でも2500msまで遅延する。
  • DEFCON 31で発表された「You Can’t Cheat Time」という研究と似たアプローチを見たことがある。
    発表動画
    pingベースの位置推定の限界は次の通り。
    IPにはすでにDB上の位置情報があり、ルーティングの非対称性 が距離モデルを壊し、Anycast/CDNにより1つのIPが複数地域に存在し、ICMPは遮断されたり優先度が低かったりする。
    自分はpingの代わりに HTTP(S)遅延 + ML(SVR) モデルを使い、3.9万件のデータで学習した。
    CloudFront配下のサーバーを基準にすると約600kmの誤差だった。
    精度より重要なのは サンドボックス検知ジオフェンス型マルウェアIP DBが失敗した際の補助的な位置シグナルの提供
    • 追跡を避けたいなら、全パケットに ランダム遅延 を加えるか、ping送信元ごとに意図的な遅延ルールを作って望む場所に見せることもできる。
  • 遅延時間の変動が大きいのに、こうした方法が機能するのは驚き。
    以前オランダの友人と話していたとき、自分は英国にいながらNLコンテンツにもっと低い遅延でアクセスできたことがあった。
    おそらく ピアリング品質 の差だと思う。
    • IPinfoで働いている。
      IXPや主要なインターネット機関と協力して ルーティング・ピアリングデータ共有プロジェクト を進めている。
      国によっては別の大陸のIXPと直接ピアリングしていて、遅延が数千km分違うこともある。
      実際、ある国では2つの通信事業者間のトラフィックが国外を経由して戻ってくる例もある。
      こうした現象を 測定ベースのジオロケーションアルゴリズム で補正している。
      最終的な目標は、IXP、通信事業者、インターネットガバナンス機関がこうした問題を解決できるよう支援すること。
    • 単に ローカル回線の遅延 が原因かもしれない。
      VDSLやDOCSISでは1km区間だけで5〜15msの遅延が出る。
      ロンドン–アムステルダム間は約7msほど。
    • おそらく近くのPoPでキャッシュされたコンテンツを受け取っていたのだろう。
      以前はオランダの主要都市でも光ファイバーが不足していた。
    • 自分の都市からフランスのサーバーまでは直線距離で250kmだが、pingから計算すると2000kmになる。
      つまり実際より 8倍以上に膨らんだ距離
      英国のサーバーのほうが遠いのに、むしろpingは低くなる。
      tracerouteベースのアプローチのほうがpingより現実的。
  • Dimitryに感謝。IPinfoチーム全体が言及に感謝している。
    研究者のCalvinがNANOG96で 測定ベースのIPジオロケーション に関する発表を行う予定。
    発表リンク
  • 本当に素晴らしいアイデアと実行力。
    こういうプロジェクトがHNにもっと増えてほしい。
  • 記事を見る限り、単に 最短のping を位置として選ぶ方式のようだ。
    これはあまりに単純なので、三角測量(triangulation) を使えばもっと正確になりそう。
    • 記事でも触れられている通り、目標は単純な proof of concept だった。
      十分なprobeと多少の運があれば、意外とうまく動く。
      もちろんもっと賢いやり方はたくさんある。
    • ただし パケットは直線では移動しない ので、単純な距離計算には意味がない。
  • 実サービス環境でこうした技術を使った経験の共有。
    1. インターネットルーティングでは 三辺測量(trilateration) はほとんど通用しない。
      そのため最も近い単一の測定値を使うのが現実的。
      有用なデータを得るには都市単位で数千ノードが必要。
    2. こうした測定は既存の位置データの 検証 用としてのほうが適している。
    3. tracerouteのhopはルーター位置の特定に有用。
      RIPE IPmapはすでに公開ルーターの大半を正確にマッピングしている。
    4. インフラやサーバーIPにはよく機能するが、一般ユーザーのネットワークには限界がある。
      比較ツールとして ping.sx もおすすめ。
  • 逆方向経路のIP route を見ると、州レベルまではかなり正確に当たることが多い。
    最後のhopのFQDNに 空港コードや都市コード が含まれていることが多く、役に立つ。