DNS の国ラベルが VPN の漏えいを証明しない理由
テストはアドレスを国に結び付けるだけで、経路についてはほとんど語りません。何かを変える前に、リゾルバー、転送の連鎖、ポリシーを確認しましょう。
海外に見えるリゾルバーのアドレスは DNS テストの結果にしばしば現れ、そこから人々が導く結論はいつも同じです。クエリがトンネルの外へ漏れたに違いない、というものです。実際に漏れていることもあります。しかし多くの場合、報告が示しているのは、どの再帰サービスが応答したか、そのアドレスをデータベースがどこにあると見なしているかであり、それはあなたのパケットではなくインフラについての記述です。観測と推測を切り分けるには、誰が応答したか、名前がどう旅したか、実際にどんなポリシーを設定したかという三つの事実が必要です。
テストが実際に観測した内容を読む
ほとんどのテストページは同じように動きます。クライアントに固有のホスト名を解決させ、どのリゾルバーがそれを取得したかを見るか、クライアントが報告するリゾルバーのアドレスをそのまま返すだけです。これで分かるのは再帰サービスと、クエリがクライアントのサブネット情報を運んでいた場合にはおおよそのネットワーク上の位置です。クエリがデバイスを出てトンネルの外を通ったことは証明できませんし、すべての名前で同じ経路が使われたことももちろん証明できません。一回の検索の一回の観測が、すべての通信についての主張へと一般化されているのです。
リゾルバーのアドレスを示すテストは、アドレスをクライアントが実際に受け取ったリゾルバーの一覧と比較できるため、国のバッジより有用です。
anycast と転送がほとんどの驚きを説明する
大規模な公開リゾルバーは同じアドレスを多数の拠点から告知しており、ネットワークは各クエリを経路的に最も近い拠点へ振り向けます。そのうえで地理位置データベースがそのアドレスを一つの場所に割り当てますが、それは別の大陸にある企業の登録住所であったり、応答した拠点ではないデータセンターであったりします。RFC 4786 は anycast サービスの運用慣行と、そうしたアドレスを一つの物理的な場所に結び付ける難しさを扱っています。地図は経路決定の単純化であり、警鐘を鳴らす結果が生まれる方向へ単純化します。
転送は第二の層を加えます。ローカルのスタブリゾルバー、ルーター、ISP のリゾルバーがクエリを上位のサービスへ渡すことがあり、テストに現れる名前はその連鎖の最初ではなく最後の運用者を反映します。クライアントのサブネット拡張は、上位からの応答をあなたのネットワークに合わせる一方で、報告される位置を一度も行ったことのない場所のように見せることができます。
したがって、設定されたリゾルバーが正しくても海外に見える結果を生むことがあり、自分の国のリゾルバーが、選んでいない当事者のものだからという理由で誤っていることもあります。
誰が名前を受け取り、どの経路を通ったか
実務的な部分には二つの問いが答えます。クライアントはどのサーバーを使っているのか、そのサーバーにはトンネル経由で到達しているのか。経路について結論を出す前にリゾルバーの一覧とテスト結果のアドレスを比べ、そのうえでそのアドレスへのクエリがトンネルのインターフェースから出ていることを確認します。二つのアドレスが異なるなら、興味深い発見は、何かが意図したリゾルバーを書き換えたか迂回したということであり、国の名前より注意深く見る価値があります。
resolvectl query example.com
resolvectl status | grep -A3 'DNS Servers'
dig +short TXT whoami.akamai.net
最初のコマンドはどのサーバーが名前に対して応答したかを示し、二番目は設定された一覧とその範囲を示し、三番目は公開サービスから見たリゾルバーのアドレスを報告します。三つが一致していれば、国のラベルが何と言おうと、ポリシーは設定どおりに動いています。
自分が選んだポリシーと比較する
リゾルバーを押し付ける VPN、独自の暗号化 DNS を使うよう設定されたブラウザー、そして一方のインターフェースの設定を優先するオペレーティングシステムは、それぞれ単独では正しくても、全体としては矛盾します。現代のブラウザーは暗号化された転送でブラウザー内で選んだプロバイダーへクエリを送ることがあり、これはシステムのリゾルバー一覧を意図的に迂回します。これは壊れたトンネルという意味での漏えいではなく、どこか別の場所で選ばれたポリシーであり、それがどこで選ばれたかを見つけることが本当の作業です。
仕事用の端末はドメインごとの規則を追加します。内部の名前は組織のリゾルバーへ送る必要がある一方で、それ以外はすべて既定に従います。テストページが予期しない国を示したからといってその取り決めを置き換えると、チーム全体で内部の名前が解決できなくなります。
テストは狭く安全に保つ
内部のホスト名について公開のテストサービスへ問い合わせると、その名前を関係のない相手に開示してしまい、答えはリゾルバーの一覧を手元で読む以上のことを何も教えてくれません。
代わりにインフラを明らかにする名前を使い、リゾルバーのアドレス、範囲、使用したインターフェースを記録し、その記録を文書化された意図と比べます。地図のラベルは会話のための文脈であり、合格か不合格かの結果ではなく、判決のように扱うと診断ではなく設定の変更を生みます。