Privacy Proxy は、実際の IP アドレスを公開せずにユーザーの位置情報を維持します。プライバシーを保ちつつ、位置情報に依存するサービスが正しく動きます。
多くのオンラインサービスは、IP アドレスからユーザーの位置を判断します。
- 検索エンジンは、その地域に関連する結果を返します。
- コンテンツ提供者は、地域のライセンス制限を適用します。
- EC サイトは、現地の価格と配送オプションを表示します。
- ニュースサイトは、地域向けのコンテンツを表示します。
従来の VPN やプロキシでは、ユーザーの実際の位置から遠いデータセンターからトラフィックが出るため、これらのサービスが壊れることがよくあります。Privacy Proxy は、ユーザーの地理的な地域に合う egress IP アドレスを選ぶことで、この問題を解消します。
Privacy Proxy は geohash を使い、正確な座標を明かさずに位置を維持します。
geohash ↗ は、緯度と経度のコンパクトな表現です。階層的なエンコーディングを使い、文字列が長いほど位置の精度が上がります。
| Geohash の長さ | おおよその範囲 |
|---|---|
| 1 文字 | 約 5,000 km |
| 2 文字 | 約 1,250 km |
| 3 文字 | 約 150 km |
| 4 文字 | 約 40 km |
| 5 文字 | 約 5 km |
Privacy Proxy は精度を下げた geohash(通常は 4〜5 文字)を使い、正確な位置を特定せずに都市や地域レベルまでユーザーを特定します。
クライアントが Privacy Proxy に接続すると、次の処理が行われます。
- クライアント(またはダブルホップ構成の first-hop プロキシ)が、ユーザーのおおよその位置を判定します。
- クライアントは
sec-ch-geohashヘッダーで geohash を送ります。 - Privacy Proxy は geohash を検証し、その地理的エリアに登録されたプールから egress IP アドレスを選びます。
- 宛先サーバーは egress IP を見て、ユーザーを正しい地域に位置付けます。
sec-ch-geohash ヘッダーには、geohash と国コードが含まれます。
sec-ch-geohash: xn76c-JP形式は <geohash>-<country_code> です。国コードは、geohash が国境をまたぐ場合の判定に使います。
Cloudflare は、世界数百都市に egress IP プールを用意しています。egress IP を位置情報データベースに登録すると、特定の場所に対応します。
Privacy Proxy の精度は次のとおりです。
- デフォルトは 都市レベルの精度 です。ユーザーは地域に関連する検索結果を得られます。
- 都市レベルが使えない場合は、フォールバックとして 国レベルの精度 になります。
より粗い位置情報(国とタイムゾーンのみ)を選ぶこともできます。
位置情報の精度を確認する簡単な方法は、プロキシ経由で「近くのピザ」を検索することです。遠くのデータセンターではなく、ユーザーの実際の都市のピザ店が出れば、位置情報は正しく動作しています。
Privacy Proxy は IPv6 のほうが位置情報の精度が高くなります。オリジンサーバーが IPv6(AAAA DNS レコード)に対応している場合、プロキシは IPv6 の egress アドレスを優先します。IPv6 は IPv4 相当より細かい地理情報で登録されています。
ユーザー向けの位置情報精度を最大化するには、サービスを IPv6 で到達可能にしてください。
ダブルホップ構成 では、運用する Proxy A が geohash の判定と転送を担当します。
- Proxy A がクライアントの IP アドレスから位置を判定します。
- Proxy A は、適切な精度の geohash に変換します。
- Proxy A は、Proxy B へ転送する CONNECT リクエストに geohash を含めます。
- Proxy B(Cloudflare)は geohash に基づいて egress IP を選びます。
geohash は暗号で保護されており、クライアントが位置を偽装できないようになっています。
- Geo-egress: Improving WARP user experience on a larger network ↗ — Cloudflare が位置情報を考慮した egress を実装する方法です。