VPN を通してもローカルネットワークがまだ見ているもの
トンネルが隠すのは中身であり、あなたの存在ではありません。アクセスネットワーク、管理された端末、VPN 事業者が何を学ぶかを、一つで全部を覆えると決める前に比べてください。
誰かが VPN で通信が隠れるのかと尋ねるたび、三人の観測者が一つの問いに折り畳まれます。接続しているネットワーク、手元の機械、そしてトンネルの運営者です。それぞれが学ぶことは違い、トンネルはそのどれもを別々の仕方で変えます。逆向きに考え、立てられている主張から始めるのが役に立ちます。検証に耐えなければならないのは主張そのものだからです。必要な主張を決め、それから道具をその主張と比べてください。
主張その一:誰も通信を読めない
最も狭い主張から始めます。中身は読めないままです。経路上の受動的な観測者は TLS セッションの内側を見られないので、すでに HTTPS を使うサイトにトンネルが加えるものはわずかで、両端に対しては何も加えません。この主張を崩すのは端末を管理する側です。検査用プロキシが接続を終わらせ、機械がすでに信頼しているルートで署名し直すからです。証明書の連鎖にそのルートを入れた組織の名前が載っていても、鍵のマークが表示され続けるのはそのためです。
security find-certificate -a -p /Library/Keychains/System.keychain | openssl crl2pkcs7 -nocrl -certfile /dev/stdin | openssl pkcs7 -noout -print_certs | grep subject
certutil -store Root
macOS ではそのパイプラインが、ウインドウを開かずに機械のキーチェーンにある証明書ごとに件名の行を一つ出力します。Windows では certutil -store Root が、certlm.msc が図で示すのと同じ保管場所を一覧します。学校や勤務先、ネットワーク製品のルートが、探すべき項目です。一つ見つかるのは傍受が可能だという証明にすぎず、起きている証拠ではありません。
それについて何ができるかは技術ではなく方針の問いです。自分のものでない機器からプロファイルや検査用ルートを外すのは、たいてい利用規約に反し、管理システムはそれに気づいて再適用する傾向があるので、端末の所有者に通信を読ませないという要件には別の設定ではなく別の端末が要ります。
主張その二:誰も行き先を見られない
行き先はより難しい主張です。ページが読み込まれる前に二つの開示が起きるからです。問い合わせはシステムが使うよう設定されたリゾルバーに届き、その答えは運ぶネットワークから見えます。次に TLS ハンドシェイクが、両端で Encrypted Client Hello が使えない限り、要求したサーバー名を平文で運びます。どちらの開示にも復号は含まれないので、トンネルはどちらにも効きません。
resolvectl status | grep -A2 "Link"
nslookup example.com
実際にどのリゾルバーが使われているかが露出を決め、それは論じるのではなく測れます。Linux では resolvectl status がリンクごとに DNS サーバーを出力し、その結果はサイト側のリゾルバーが答えているのか、押し付けられたものが答えているのかを教えてくれます。Windows は同じ問いに nslookup example.com で答え、その出力の最初の塊が応答した DNS サーバーです。
ノート PC がトンネルの上がる前にサイト側のリゾルバーへ問い合わせる場合や、プロファイルが代替サーバーなしで届いて古いものが使われ続ける場合、管理者は何も復号せずにホスト名を集め続けます。ブラウザーの暗号化 DNS は、押し付けられたリゾルバーを迂回するか、まったく遮断されて閉じたまま失敗します。出口の事業者は同じ名前を自分の側から見ます。だからリゾルバーを変えても、その開示はトンネル提供者から離れません。
主張その三:誰も接続したことを知らない
第三の主張はトンネルが支えられないものです。パケットはいまもローカルネットワークを渡っているからです。そのネットワークは端点のアドレス、およその量、時刻、そして長く続く暗号化セッションが一つあることを学びます。それだけで遮断も制限も、ただ気づくことさえできます。パケットを読めない防火壁でも、通すのを拒むことはできます。見られていることは誰にも見られていないこととは違い、観測者を移したのであって消したのではありません。
分割トンネルや、押し付けられた経路を無視するアプリケーションは、トンネルの外に以前とまったく同じに見える流れを作ります。注意深い観測者が最初に気づくのはその流れであり、クライアントの経路表はどの宛先が除外されているかを示します。
反対側の事業者はその眺めの鏡像を持っています。出口のアドレス、時刻、量、そしてたいていはサイトの名前です。提供者が視点を持つ側になり、これは不可視性とは別の取引です。信頼できる提供者を選ぶことは実際の判断ですが、結果を見られていないと呼ぶのはそうではありません。
必要な主張を決める
クライアントに触れる前に要件を一行で書いてください。中身を隠すのか、行き先を隠すのか、そもそも接続したかどうかを隠すのか。中身は HTTPS とトンネルがすでに扱い、行き先にはサイトの設備を完全に迂回するリゾルバーと経路が要ります。
第三の要件が厄介なのは、暗号化されていてもいなくても、どこかで何かが目に見えて接続しているからです。どのクライアント設定もそれを変えません。要件と方針が食い違うなら、その隙間は方針を持つ人との会話に属し、クライアントの選択肢には属しません。それに答えられるのは方針を書いた人です。