訪問者が商用VPN経由で接続し、あなたのアプリケーションは出口アドレスを記録する。これは隠された身元ではない。TCP接続が持つ唯一の送信元アドレス、それだけである。人々が検出と呼ぶものの大半は、その一つの事実の上に重ねられた推測にすぎない。

リクエストが実際に運ぶもの

アプリケーションが見るのは、接続の送信元アドレスとポート、完了したハンドシェイク、クライアントが送ると選んだバイト列である。フルトンネルでは、その送信元は出口であり、利用者全員で共有される。スプリットトンネルでは、宛先に応じてトンネルから来ることもローカル接続から来ることもある。クライアントとサーバーが同じVPNの内側にある場合、送信元はクライアントの内部トンネルアドレスであり、これは位置ではなく端点を示す。

通常のリクエストのどのフィールドも、トンネル前のクライアントのアドレスを運ばない。転送ヘッダーはクライアントまたはプロキシの主張であり、省略も偽装もできる。

検出は分類であり、分類は推測である

実用的な手法は、既知のVPN・ホスティング範囲の一覧、主張された地域と合わない遅延、tracerouteの形状、アカウントの振る舞いである。いずれも確率を生む。企業VPNが住宅用に見えるアドレスに載ることもあり、住宅用プロキシが家庭回線に見えることもあり、キャリアNATがホスティング範囲に見えることもある。

共有された出口を遮断すると、その背後にいる無関係な利用者全員を遮断することになり、検出の判断が巻き添えの障害に変わる。信頼スコアは身元ではなく、禁止や返金の判断の唯一の入力であってはならない。

VPNを自分で運用しているなら、検出とは無関係の確実な信号がある。専用プールを割り当て、観測された送信元をそれと照合する。両端を制御し、プールを文書化できるから機能する。ただし、管理していない訪問者には一般化できず、プールが他のサービスと共有された瞬間に信頼できなくなる。

ローカルの証拠とサーバー側の証明

マシンの上ではトンネルは見える。仮想アダプター、トンネルデバイスを指す既定ルート、変わったリゾルバーである。そこで動くコードはインターフェースを列挙し、PPP、TAP、ベンダードライバーを探せる。

ウェブページはそのどれも読めない。よくある回避策は内部ネットワークからのみ配信される資産を読み込み、成功をトンネル利用の証拠とみなす。実際には到達性を試しているだけで、スプリットトンネル、古いキャッシュファイル、傍受プロキシのいずれでも両方の状態で同じ結果になる。ローカルの証拠はローカルにとどまる。

曖昧さに耐えるアクセス制御を選ぶ

アクセス制御は、検証済みの身元、デバイスの健全性、リソースごとの認可の上に築く。これらの述語は誰が問い合わせているか、何に到達できるかを示し、トンネルが関与してもいなくても意味を持つ。リクエストがVPN経由で来たかどうかは弱い信号であり、誤った許可と巻き添えの遮断の両方を生む。証拠と判断を別々のフィールドに保ち、異議のある遮断に検討材料を残す。

IPジオロケーションは複数ある入力の一つであり、ブラウザーの位置情報サービスはトンネルに従わないWi-FiやGPSを使うことがある。訪問者の都市をまだ表示する地図は、位置情報サービスに関する証拠であり、トンネルが失敗した証明ではない。

どの信号が各判断を導いたかを書き留める。顧客が遮断に異議を唱えたとき、その記録がレビューと口論の差になる。

関連記事