VPN の設定が Pi に載ったあと、いくつかのインターフェースの同一性がずれたように見えることがある。昨日の Ethernet アドレスは今日の一覧と一致せず、結論はひとりでに書かれる。VPN が MAC を変えたのだ、と。たいていは違う。物理アップリンクをブリッジや仮想アダプターと比べるのは比較ではなく、最初の仕事は自分が実際どちらの対象を見ているのかを決めることだ。

インターフェースと観測者を名指しする

デバイス名、インターフェースの種類、現在のリンク層アドレス、それを所有するマネージャーを書き留める。タイムスタンプも添える。起動時に変わった表示は、トンネルが上がったときに変わった表示とは別の出来事だからだ。

接続という出来事の前と後で、同じインターフェースについてこれを行う。一つの対象を二度観測すれば証拠になる。二つの対象を一度観測したものは、物語を貼り付けた偶然にすぎない。その違いが調査のすべてだ。対象を取り違えれば、その後の測定はすべて無駄になる。

DHCP の予約が問題の一部なら、割り当て側が実際に受け取ったクライアント同一性を記録する。デスクトップの一覧、ブリッジの同一性、古いリースの項目は三つの別の記録であり、ルーターが見たのはそのうちの一つだけだ。

TUN、TAP、アップリンクは別の対象である

カーネルは二つの仮想型の間に固い線を引く。TUN は IP パケットを運び、Ethernet の同一性をまったく持たない。TAP は Ethernet フレームを運ぶので、それを持つ。

つまり TAP 側のアドレスは物理アップリンクのアドレスではなく、ルーティングされた TUN のアドレスは Wi-Fi の MAC の代わりにはならない。同じ機械の別の層なのだ。

ブリッジは三つ目の対象だ。ブリッジは自分自身のリンク層アドレスを持ち、それは接続されたポートとは独立に導出または設定される。だからブリッジが上がると、ハードウェアに触れずに一覧の表示が変わることがある。ポートはその下で自分のアドレスを保つ。アドレスを明示的に設定することもでき、その場合ハードウェア由来の部分は何も残らない。

本物の変化を実際に所有しているのは誰か

同じ物理インターフェースが本当にアドレスを変えるなら、原因を決める前に有効な接続プロファイルを見る。プライバシー設定、クローン設定、作り直された仮想デバイスはどれも VPN を介さずにその症状を生む。

時間的な近さは因果ではない。トンネルの開始とプロファイルの再適用は、片方が他方を引き金にしたために同じ秒に起きることが多く、アドレスの変化はプロファイルに属する。トンネルのログを読む前にプロファイルを読む。

作り直されたインターフェースと既存のデバイスも区別する。永続的な設定と実行時のインターフェースは関連する対象であり、どちらも恒久的なハードウェア同一性ではない。

マネージャーのクローン値が意味するもの

NetworkManager の Ethernet 設定のリファレンス は、明示的に割り当てられたアドレスを preserve、permanent、random、stable といった特別な値から区別しており、コマンドラインと D-Bus インターフェースでは綴りが異なる。

これらの値は一つのマネージャーが支える機能だ。このイメージがそのマネージャーを動かしている証拠でも、このプロファイルがランダム化を使った証拠でも、VPN のプロセスが NIC を書き換えた証拠でもない。答えられるのはこのホストの有効な設定だけだ。

設定を利用可能にするために二つ目のマネージャーを入れるのではなく、その設定の持ち主を確認する。一つのインターフェースを巡って二つのマネージャーが争うと、人が後でトンネルのせいにする不安定さがそのまま生まれる。

直すべきは表示ではなく同一性の要件だ

ローカルの予約が必要な場所では、割り当て側自身のクライアント同一性の仕組みに従い、インターフェースの設定と一致させる。一覧を安定して見せるために無関係なブリッジやトンネルのアドレスを固定しても何も解決しない。誰も記録していない二つ目の同一性を作るだけだ。

遠隔のルーティング VPN は自分のピアを認証し、自分のモデルでアドレスを割り当てる。LAN のアドレスを凍結してもそのピアは登録されず、固定のトンネル割り当ても生まれない。

承認された同一性の変更の前に、以前の設定を復元できる状態にしておく。とくに歩いて行けない画面のない機械ではそうだ。そのうえで再接続のあと、同じインターフェースと同じローカルサービスを確認する。

書き留める価値があるのは、どの対象が変わり、誰がそれを設定し、それが意図した同一性の契約に反しているかどうかだ。それより広いものは結論の服を着た推測にすぎない。狭い発見もまたレビューに耐える。

関連記事