VPNの国ラベルが出口のアドレスではない理由
一覧の項目、経路のアドレス、アプリの見解は食い違うことがある。出口を誤表示だと決める前に、どれを読んでいるのかを見極めたい。
国を選んで接続すると、別の国のウェブサイトが迎えてくれる。一覧のラベルは、あなたが抜けるアドレスについて何も約束していなかった:それは誰かが公開した項目で、あなたが見ていない方法で導かれたもの。その項目をアドレスとして扱うところから混乱が始まる。
三つの別々のものが国の値を持ち、誰も嘘をつかないまま食い違うことがある。それらを区別すれば、ずれは謎ではなく診断できるものになる。
国のラベルを持つ三つの別物
一つ目はディレクトリ自身の項目で、運営者が自己申告したもの、アドレスデータベースから推測したもの、登録時に単にコピーしたものが考えられる。二つ目はアドレスそのもので、それを告知するネットワークに属し、RFC 8805で示された形式の公開マッピングデータを使って地理位置検索が答えるのはこの点である。三つ目はアプリが表示を決めるもので、別のデータベース、アカウント設定、端末で与えた許可から来ることがある。ネットワークの事実なのは二つ目だけで、それも観測ではなく検索である。
その三つの間に一貫性があれば心地よいが、どこにも要求されていない。ずれは、それぞれが別の方法で導かれた証拠にすぎない。
旗ではなくアドレスを確かめる
役に立つ問いは、あなたの通信が実際にどの公開アドレスから出ていくかである。これはクライアントから答えられ、一覧の項目に依存しない。答えを期待したプレフィックスと、地理位置検索がそれについて言うことの両方と比べ、二つの結果はメモで分けておく。期待した国と検索の差は経路やデータベースの問題であり、検索とアプリの見解の差はまたデータベースの問題である。
その地域に出口が複数あるなら、確認を二度行う。アドレスのプールは連続する接続で別々のアドレスを渡すことがあり、一つのサンプルはそのうち一つを説明するだけである。
地図上の近さはネットワーク上の近さではない
近い国が遠い国より長い経路になることがあるのは、光ファイバーの経路が国境に沿わないからだ。遅延のためにノードを選ぶとは、いちばん近い旗を選ぶことではなく、気にかける宛先を測ることである。同じ論理は容量にも当てはまり、二国離れた負荷の軽い出口が隣の飽和した出口に勝つことがある。まず測り、次に決め、両方の数字は動くので時刻を書き留める。
場所は、保存期間についても、端点を誰が運用しているかについても何も言わない。それには独自の根拠が要り、国の列には収められない。
出口のアドレスを自分で確かめる
クライアントと外部サービスに自分のアドレスがどう見えるかを尋ね、次にローカルの経路表にその経路がどう選ばれたかを尋ねる。下のコマンドは三つとも行い、三つ目は人が飛ばしがちなものだ。インターフェース名は自分のトンネルデバイスに置き換える。
curl -sS https://api.ipify.org; echo
curl -sS --interface tun0 https://api.ipify.org; echo
ip route get 1.1.1.1
ip -6 addr show dev tun0
最初の二行は一致するはずで、一致しないなら、あると思っている経路は通信を運んでいる経路ではない。経路検索は、カーネルがある宛先に使うインターフェースと送信元アドレスを示し、それが出口アドレスの背後にある仕組みである。IPv6の行が重要になるのは、機械が一方のファミリーにトンネル、他方に直接経路を持てるからだ。国のラベルはそうした事例をどれも自力では覆わない。
観測したアドレス、データベースの見解、アプリの表示を三つの別々のメモとして書く。そうすれば次に遭遇するずれも原因をたどりやすい。