IP ジオロケーション(IP Geolocation)
概要
IP ジオロケーション(IP Geolocation) は、IP アドレスから地理的な位置情報(国、地域、都市、ISP など)を推定する技術です。IP アドレスの割り当て情報や BGP ルーティングデータを組み合わせて、そのアドレスが使われている物理的な場所を特定します。
IP ジオロケーションには主に 4 つの用途があります。
- CDN のルーティング最適化 — ユーザーに最も近いエッジサーバーへトラフィックを誘導し、レイテンシを削減する
- コンテンツのローカライゼーション — アクセス元の国や地域に応じて言語・通貨・価格表示を自動で切り替える
- 不正アクセス検知 — ログイン元の地理的な異常(不可能な移動速度、登録国と異なる国からのアクセス等)を検出する
- 法規制への対応 — GDPR 同意バナーの出し分けや、データレジデンシ要件に基づくルーティング制御を行う
RFC 8805(2020 年発行)は、ネットワーク事業者が自らの IP アドレスプレフィックスに対して位置情報を公開するためのフォーマット(geofeed)を定義しています。Google はこのフィードをジオロケーションデータパイプラインに取り込んでおり、多くの ISP が自社プレフィックスの位置情報修正に利用しています。ただし RFC 8805 は Independent Submission であり、IETF 標準ではありません。
仕組み
IP ジオロケーションは単一の技術ではなく、複数のデータソースと推定手法を組み合わせて位置情報を導き出します。
データソース
位置情報の推定に使われるデータソースは、大きく 4 種類に分かれます。
| データソース | 内容 | 精度 |
|---|---|---|
| RIR WHOIS データベース | ARIN、RIPE NCC、APNIC、LACNIC、AFRINIC が管理する IP アドレスブロックの割り当て情報 | 国レベル |
| BGP ルーティングデータ | 自律システム(AS)間のルーティング経路情報。IP アドレスブロックがどの AS に帰属するかを示す | 国〜地域レベル |
| Geofeed(RFC 8805) | ネットワーク事業者が自ら公開する IP プレフィックスと位置情報のマッピング | 事業者の申告精度に依存 |
| アクティブ計測 | レイテンシ計測やトレースルートによる物理的な距離の推定 | 都市レベル(条件次第) |
RIR の WHOIS データベースは最も基本的なソースです。IP アドレスブロックは IANA から 5 つの RIR(地域インターネットレジストリ)へ割り当てられ、さらに LIR(ローカルインターネットレジストリ)や ISP を経て利用者に委任されます。WHOIS にはブロックの登録者情報(組織名、所在地)が記録されていますが、登録者の本社所在地が記録されているだけで、実際に IP アドレスが使われている場所とは異なる場合があるため、国レベルの精度にとどまります。
推定の流れ
ジオロケーションデータベースの構築は、次のような手順で行われます。
- RIR の WHOIS から IP アドレスブロックの割り当て先組織と登録住所を取得する
- BGP ルーティングテーブルから、各 IP プレフィックスがどの ASN に帰属しているかを照合する
- RFC 8805 の geofeed が公開されている場合は、事業者が申告した位置情報で上書きする
- アクティブ計測(複数地点からのレイテンシ測定やトレースルート)で物理的な距離を三角測量し、都市レベルの推定を補強する
- rDNS(逆引き DNS)のホスト名に含まれる地名コード(
nrt= 成田、lax= ロサンゼルス等)をヒントとして利用する
この結果が MaxMind GeoIP2、IP2Location、IPinfo などの商用データベースとして提供されます。
精度の限界
IP ジオロケーションの精度は地理的粒度によって大きく異なります。
| 粒度 | 精度の目安 |
|---|---|
| 国レベル | 95〜99% |
| 地域・州レベル | 75〜85% |
| 都市レベル | 55〜80% |
| 郵便番号レベル | 25〜50% |
MaxMind の公表データでは、GeoIP2 の国レベル精度は 99.8% とされています。一方、米国内の都市レベル精度は 66%(50km 圏内)まで低下します。
精度が低下する主な要因は次の通りです。
- VPN・プロキシ — トラフィックが中継サーバーを経由するため、実際のユーザーの位置ではなく中継サーバーの位置が返る
- キャリアグレード NAT — モバイルネットワークで多数のユーザーが同一の IP アドレスを共有し、個別の位置特定ができない
- IP アドレスの再割り当て — ISP が IP アドレスプールを再配分すると、データベースの更新が追いつかず古い位置情報が返る
- クラウドサービスの分散インフラ — AWS、GCP などのクラウド IP はデータセンターの所在地を返すが、実際のユーザーの位置とは無関係
IP ジオロケーションは特定の世帯や個人の住所を特定できる精度を持たない技術です。位置情報はあくまでネットワーク単位の推定であり、IP アドレスの利用者そのものの位置を示すわけではありません。
具体例
RFC 8805 の geofeed による位置情報公開と、商用 API のレスポンスフォーマットを示します。
Geofeed(RFC 8805)の記述例
ネットワーク事業者が自社の IP プレフィックスに対して位置情報を公開する geofeed は、CSV 形式で記述します。
# 自社 IP プレフィックスのジオロケーション情報
# フォーマット: prefix,country_code,region_code,city,postal_code
192.0.2.0/24,JP,13,Tokyo,
198.51.100.0/24,US,CA,San Francisco,94105
2001:db8::/32,DE,BE,Berlin,
各フィールドは ISO 3166-1 alpha-2(国コード)と ISO 3166-2(地域コード)に準拠します。この CSV ファイルを Web サーバーで公開し、WHOIS の Geofeed フィールドまたは inetnum オブジェクトの remarks で URL を参照する形式をとります。
ジオロケーション API のレスポンス例
商用の IP ジオロケーション API は、一般的に次のような情報を返します。
{
"ip": "203.0.113.50",
"country": "JP",
"country_name": "Japan",
"region": "Tokyo",
"city": "Chiyoda",
"latitude": 35.694,
"longitude": 139.754,
"isp": "Example Internet Services",
"asn": "AS2497",
"organization": "Internet Initiative Japan Inc."
}
国コード、緯度経度、ISP 名、ASN などが含まれます。緯度経度は都市の中心付近を指す概算値であり、ユーザーの正確な座標ではありません。
確認方法
特定の IP アドレスがどの ASN に帰属しているかを確認するには、WHOIS コマンドを使います。
# IP アドレスの WHOIS 情報を確認する
whois 8.8.8.8
出力の OrgName(組織名)、Country(国)、NetRange(ネットワーク範囲)から、その IP がどの組織のどの地域に割り当てられているかがわかります。
# ASN 情報を Team Cymru の DNS サービスで確認する
dig +short TXT 8.8.8.8.origin.asn.cymru.com
"15169 | 8.8.8.0/24 | US | arin | 2023-12-28"
この結果から、8.8.8.8 が AS15169(Google)に帰属し、ARIN に登録されていることがわかります。
逆引き DNS のホスト名からもネットワークの所在地を推測できます。
dig -x 8.8.8.8
;; ANSWER SECTION:
8.8.8.8.in-addr.arpa. 7118 IN PTR dns.google.
PTR レコードに地名コードが含まれている場合(例: nrt20s21-in-f14.1e100.net の nrt は成田)、その IP がどのデータセンターから応答しているかの手がかりになります。
外部の視点からも確認したい場合は、Labee Dev Toolbox の IP API を使うと、外部の視点から見た結果を取得できます。
curl "https://labee.dev/api/ip?ip=8.8.8.8"
レスポンスは次の形式で返ります。
{
"success": true,
"data": {
"ip": "8.8.8.8",
"type": "IPv4",
"isPrivate": false,
"ptr": "dns.google"
},
"error": null,
"meta": { "responseTime": 42 }
}
data.type で IPv4 / IPv6 の判定、data.isPrivate でプライベート IP かどうかの判定、data.ptr で逆引き結果を確認できます。ジオロケーション情報は現在の API レスポンスには含まれていませんが、PTR レコードのホスト名から所在地を推測する手がかりが得られます。
よくある問題
IP ジオロケーションの精度低下は、データベースの更新遅延、VPN・プロキシの利用、CDN やモバイルネットワークの特性に起因します。
ジオロケーションが実際の位置と異なる
IP ジオロケーションが誤った位置を返す最も一般的な原因は、データベースの更新遅延です。ISP が IP アドレスブロックを別の地域に再割り当てしても、ジオロケーションデータベースへの反映には数週間から数か月かかることがあります。ネットワーク事業者側の対策としては、RFC 8805 に基づく geofeed を公開することで、MaxMind や Google などのデータ利用者に正しい位置情報を通知できます。
VPN 利用者のジオロケーションが不正確
VPN を使用しているユーザーの IP アドレスは VPN サーバーの所在地を返します。これは IP ジオロケーションの仕組み上、回避できない制約です。不正アクセス検知の文脈では、IP ジオロケーション単体ではなく、VPN・プロキシ検出データベースと組み合わせて判定します。ただし、住宅用プロキシ(residential proxy)や未知の VPN プロバイダーは検出が困難であり、検出率は完全ではありません。
CDN のエッジサーバー IP が返る
Cloudflare や Fastly などの CDN を利用しているサイトにアクセスすると、ジオロケーション結果は CDN のエッジサーバーの位置を示します。これはオリジンサーバーの位置ではなく、ユーザーに最も近いエッジの位置です。オリジンサーバーの位置を知りたい場合は、CDN を経由しない直接の IP アドレスを確認する必要があります。
モバイルネットワークの精度が低い
モバイルキャリアはキャリアグレード NAT(CGN)を使用しており、多数のユーザーが同一の IP アドレスを共有します。ジオロケーション結果はキャリアのゲートウェイ設備の位置を返すため、実際のユーザーの位置から数十〜数百 km のずれが発生することがあります。この問題は IPv4 アドレスの枯渇に伴い、キャリアが CGN を拡大するにつれて悪化する傾向にあります。
地理的制限の回避に悪用される
IP ジオロケーションに基づくコンテンツのアクセス制限(ジオブロッキング)は、VPN やプロキシで容易に回避できます。コンプライアンス上の理由でアクセス制限が必要な場合は、IP ジオロケーションだけに依存せず、決済情報の国コードやユーザーの登録住所など、複数のシグナルを組み合わせて判定することが推奨されます。