モバイルIPで市区町村レベルの位置情報が崩れやすい理由
CGNAT、国単位のゲートウェイ、キャリアのルーティングを理解すれば、市区町村レベルの誤判定の多くは説明できます。モバイルトラフィックでも破綻しにくいルール設計を考えます。
# モバイルIPで市区町村レベルの位置情報が崩れやすい理由
消費者向けWebトラフィックの半分以上はいまやモバイルです。そして、単純な位置情報ルールが最も崩れやすいのも、このモバイル領域です。
Carrier-grade NAT
通信キャリアは、加入者全員に十分な数のIPv4アドレスを割り当てられるわけではありません。そのため、数千台もの端末が1つのパブリックIPを共有することがあります。このIPアドレスが存在するのはキャリアのゲートウェイであり、多くの場合、実際の利用者の所在地とは関係なく大都市に置かれています。地方にいるユーザーが、首都からアクセスしているように見えることは珍しくありません。
実務上、次のような影響が出ます。
- 市区町村レベルで数百キロ単位の誤差が出るのは普通であり、必ずしもデータ不備ではありません。
- IP単位のレート制限は、無関係な多数の正規ユーザーを巻き添えにします。
- IP単位のレピュテーションスコアは公平ではありません。1人の悪用者が共有IP全体の評価を汚してしまいます。
ローミングとゲートウェイの固定化
ローミング中の加入者は、滞在先の国ではなく、契約元キャリアのネットワーク経由で外に出続けることがあります。たとえば、イタリアにいるドイツ契約のスマートフォンが、1週間ずっとドイツからのトラフィックとして見えることもあります。国の変化だけでルールを発火させる設計にしていると、ローミング中の正規ユーザーが何度も引っかかってしまいます。
IPv6で状況は変わる
IPv6では、各端末が通常、/64または/56プレフィックスから個別のアドレスを受け取ります。個々のアドレスではなく/64単位でレート制限しなければ、端末が同じプレフィックス内でアドレスを切り替えるだけで、すぐに回避されてしまいます。IPv6のモバイル通信では集約が少ないため、位置情報の精度がIPv4より良いケースもあります。ただし、プレフィックスのカバレッジはキャリアによってばらつきます。
それを前提に設計する
- 接続タイプを使います。
mobileの場合、市区町村は参考情報に格下げし、国レベルの判定を重視します。 - モバイルネットワークでは、IPではなくアカウントやデバイスIDを軸にレート制限します。
- モバイルトラフィックに対して、市区町村間の距離を不正検知シグナルとして使わないようにします。
- 既存アカウントで国が変わった場合は、即時拒否ではなく追加認証でリスクを吸収します。
Guardaがすべてのルックアップで接続タイプを返すのは、まさにこうした分岐を実装しやすくするためです。考えるべきルールは、「このIPはどこにあるか」ではありません。「その“どこ”を、どの程度信頼してよいか」です。
