VPNのペイロードが暗号化されているとき、ルーターのログは何を示すか
暗号化が隠すのはペイロードであり、フローではない。家庭のゲートウェイが記録する内容と上流の観測者が保持する内容を比べ、最後に自分のカウンターを確認しよう。
暗号化はパケットの中身を読めるかどうかを決めるもので、パケットの存在、サイズ、時刻が記録されるかどうかについては何も語らない。暗号化されたトンネルを転送するルーターは、届けなければならないフローを見ており、そのフローを数え、時刻を付け、帰属させることができる。家庭のゲートウェイが記録する内容と、上流のネットワークが記録する内容を比べると、違いはどちらがどのフィールドを残す理由を持つかという点に行き着く。
有用なのはこの比較である。プライバシーの議論では二つの記録がしばしば混同されるからであり、両者は別の問いに答えており、保存される期間も異なる。
二人の観測者、二つの異なる記録
あなたの境界にあるゲートウェイは、そのフローがどのローカルインターフェースを使ったか、自分でアドレスを配る場合はその時点でどの機器がそのアドレスを持っていたかを知っている。どのリゾルバーに問い合わせ、どのエンドポイントに接続したかも見えることがある。上流では同じトラフィックが変換されて届くため、別のネットワークには世帯全体が共有する一つの公開アドレスが見え、それは RFC 3022 で説明されている機能である。どちらの観測者もペイロードを読んでおらず、どちらの記録も他方を含んでいない。
バイトの合計もこの分類に入る。容量カウンターは、トラフィックが通過したことだけを記録し、それが何だったかは記録しない。
実際に痕跡を残すフィールド
ある機器が何を保存するかは何が有効になっているかで決まるため、普遍的な主張には疑いの目を向けるべきだ。表は、実際に重要なフィールドとそれぞれが意味することを挙げている。
| Field | Home gateway | Upstream observer |
|---|---|---|
| VPN endpoint address | Yes, as a destination | Yes |
| Local device mapping | Only where it assigns the address | No |
| Byte and packet counts | If statistics are enabled | Usually |
| Flow start and end | If connection logging is on | Usually |
| DNS queries | If the resolver is local | Only if the resolver is theirs |
| Payload contents | No | No |
表は、行ごとに支える結論が違うため、列ではなく行で読むべきだ。エンドポイントのアドレスはトンネルが存在することを示すが、何を運んだかは示さない。ローカル機器の対応付けは、フローを人に結びつける行であり、家庭のゲートウェイが保持し、上流の観測者が通常は保持しない行である。
ペイロードの行はどちらの列でも同じで、これが暗号化が実際に保証する部分である。それ以外はすべて記録の選択次第だ。
トンネルを終端するルーターはより多くを見る
他人の暗号化トラフィックを転送するゲートウェイと、自分でトンネルを運用するルーターは立場が異なる。後者はトンネルの状態と鍵を保持するため、内部アドレスやトンネル内の宛先を見ることができる。そのルーターが内部ネットワークのアドレスも変換するなら、ログは一つの記録の中で機器と内部の宛先を結びつけられる。これは外側のフローとは別の開示であり、同じ箱が生み出している。
これを、普通のゲートウェイの後ろにあるノートPCのクライアントと比べると、ゲートウェイは外側のフローを記録し、クライアント自身のログは内側の詳細を保持する。絵のどちらの半分を誰が持つかを問うほうが、ネットワークが暗号化を通して見えるかを問うより生産的だ。二つ目の問いへの正直な答えは「いいえ」であり、それはあなたの露出を決める問いでもない。
自分の機器が何を記録しているか確認する
他人の機器を論じる前に、自分の機材を見よう。以下のコマンドは、カウンターを持つファイアウォール規則、まだ生きている接続エントリ、接続に言及するログ行を一覧する。Linuxベースのルーターに当てはまるもので、ほとんどの家庭用ファームウェアはそこから派生している。
nft list ruleset | grep -A2 counter
conntrack -L 2>/dev/null | grep 1194
logread | grep -iE 'vpn|1194' | tail -n 20
cat /proc/net/nf_conntrack | wc -l
カウンター付きの規則セットは、その機器が何を数える気があるかを教えてくれるが、接続テーブルは履歴ではなく現在のフローを示す。ログ行は、ファームウェアが接続イベントをそもそも書き込むかを確認させ、議論の大半を決着させる。四つのコマンドすべてで出力が空なら、その箱は記録せずに転送しているということで、これもまた一つの答えだ。 そのログが絵のもう半分を保持しているので、クライアント側でも同じ確認を繰り返そう。
有効になっている機能と保持設定を出力の横に記録しておく。同じハードウェアでも、今日は沈黙していて、テレメトリーを有効にするファームウェア更新の後にはおしゃべりになることがある。