概要
- IPアドレスの物理的な位置情報(国、州、都市)を特定するCLIツールの開発経緯
- VPN業者がIPジオロケーション情報を偽装する手法の解説と、その検証方法
- Globalpingを活用した、レイテンシとトレースルートによる高精度な位置特定アプローチ
- 実際の計測手順と精度向上の工夫、今後の課題
- オープンソースで公開中、誰でも利用・改良可能
IPアドレスのジオロケーション検証ツール開発
- CLIツール を作成し、IPアドレスから 国・州・都市 まで特定可能
- ipinfo などの既存サービスと比較し、精度を確認済み
- VPN業者 がARINやRIPE、Geo DBプロバイダに 偽の位置情報 を提供する実態を解説
- ipinfoは 大規模プローブネットワーク と レイテンシ・ホップ解析 による独自手法で物理位置を特定
- 公開データに頼らず、 実測値 から信頼性の高いジオロケーションを実現
GlobalpingとCLIツールの仕組み
- Globalping はオープンソースのプローブネットワークで、世界中に 3000台以上のプローブ を展開
- pingやtraceroute を使い、IPアドレスの物理的な位置を推定
- CLIツールは globalping-tsライブラリ を利用し、下記の流れで自動判定
-
- 入力されたIPに対し、各大陸から数回pingして 大陸特定
-
- 特定した大陸内の複数プローブからpingし、 最小レイテンシの国 を判定
-
- 米国の場合は州レベルまで同様に判定
-
- さらに都市レベルまで絞り込み
-
計測手法と工夫
- ICMP ping は多くのネットワークでブロックされるため、最終的に traceroute を採用
- tracerouteの 最終ホップのレイテンシ から物理的な距離を推定
- より精度を高めるには、 複数手法・複数ポート の組み合わせやASN情報の重み付けも有効
- 現状は 最小限のプローブ数 で高速・簡易に動作する設計
- 精度向上にはプローブ数や選定ロジックの最適化 が今後の課題
実際の測定例と精度
- 大陸判定 :5プローブで極めて高精度(例:ヨーロッパIP→32.39ms)
- 国判定 :50プローブで十分な精度(例:ポーランド7.29ms、ドイツ13.42ms)
- 州判定 :米国IPを州レベルで特定(例:Florida 0.45ms)
- 都市判定 :最小レイテンシのプローブから都市を推定(例:Miami 0.00ms)
- 注意点 :プローブ選定ロジックの都合で、対象国にプローブが割り当てられない場合もある
精度向上の工夫と今後の展望
- 全大陸・全州ごとにプローブを明示的に指定 することで、精度や一貫性向上が可能
- プローブ数の配分(例:米国200台、カナダ20台、メキシコ10台)が精度に大きく影響
- カバレッジが薄い地域 では精度が低下する可能性
- シンプルな設計 で未認証ユーザーでも利用可能、精度向上にはプローブ数の増加が有効
オープンソース・活用方法
- ツールはオープンソース でGitHubに公開:https://github.com/jimaek/geolocation-tool
- コマンド例:
geolocate $IP --limitオプションでプローブ数を調整可能(全フェーズに適用されるため注意)- GlobalpingのAPI制限 :未認証で250回/時、認証で500回/時まで利用可能
- プローブホストやGitHub Sponsorsによる寄付でテスト回数増加
- ドキュメントや改善PR歓迎、問い合わせや無料クレジット提供も可能(d@globalping.io)
- プローブ設置も簡単 (コンテナ起動のみ):https://github.com/jsdelivr/globalping-probe
まとめ
- レイテンシベースのジオロケーション は十分なプローブ数とカバレッジがあれば高精度
- 未認証でも手軽に試せるツール として公開中
- ネットワークルーティングやパフォーマンス解析 など多用途で活用可能
- 今後の課題 はプローブの分布拡大と選定アルゴリズムの最適化