トンネルインターフェースで 1400 バイトのパケットをキャプチャし、物理インターフェースでもう一度取ると、数字がどうしても合わない。アドレスは違い、サイズも違い、二つ目のファイルは別の会話のように見える。壊れているわけではない。二つの異なるパケットが二つの異なる層にあり、その差はトンネルがトラフィックにしていることそのものだ。MTU のせいにする前に、両方の見え方を読んでほしい。

二つの視点と、それぞれが見せるパケット

トンネルインターフェースで取ったキャプチャは、保護がかかる前の元の送信元と宛先を運ぶアプリケーションのペイロード、つまり内側のパケットを見せる。物理インターフェースのキャプチャは、IP ヘッダー、トランスポートヘッダー、カプセル化、そしてペイロードとしての暗号化された内側のパケット、つまり外側のパケットを見せる。同じ会話でも、別のオブジェクトである。ファイルにどちらが入っているか名づければ、不一致は謎ではなくなる。

サイズの差はオーバーヘッドで、アドレスの差は設計であり、逆に考えれば混乱は予測できる。人は内側の 1400 バイトのパケットと外側の 1450 バイトのパケットを比べ、何かがおかしいと決めつけ、決して原因ではなかった MTU 設定を変え始める。ファイルにはインターフェースと層をラベルづけしてほしい、それは読み手が最初に必要とするものであり、人が最初に省くものでもある。

キャプチャを始める前に層を決める

最初のパケットが書かれる前に、どの層が問いに答えるかを決める。MTU の問いは通常、ヘッダーが積み上がり経路の限界が現れる外側の見え方を必要とする。アプリケーションの問いは通常、気にしているペイロードがまだ存在する内側の見え方を必要とする。計画なしに両方を取ると、二つのファイルと結論ゼロが残る。

無害で許可されたテストを使い、関心のある送信元、宛先、時刻で絞り込む。収集の前にキャプチャツールのインターフェースとフィルターの選択肢を読むこと、メタデータで足りることが多く、ペイロードよりはるかに共有しやすいからだ。内側のキャプチャは既定で機微なものとして扱う、平文のアプリケーションデータを含み、それは経路の先でようやく保護されるからだ。

サイズ差には実際に何が入っているか

外側のパケットは余分なヘッダーと保護の材料を運び、その量はプロトコルとそのオプションに依存する。経路での断片化、集約、並べ替えは、内側の一つのパケットとそれを運ぶ外側のパケットの見かけの一対一関係を壊すので、サイズごとの比較が常にできるとは限らない。MTU の故障を疑うなら、サイズのフィードバックとトラフィックが止まる点を探し、それをアプリケーションの報告と比べる。返信のない再送パターンは、次ホップのサイズを運ぶ ICMP エラーとは別の信号だ。

ホストを出た一つのパケットは、遠端が受け取ったかどうかを何も証明しない。キャプチャが自分のインターフェースで終わるなら、カーネルが何かを出したことしか示しておらず、それは経路について得られる最も弱い証拠だ。キャプチャは、同じ宛先・同じ操作・同じサイズで変数を一つだけ変えて二回実行する、再現可能な症状と組み合わせる。

オフロードを数字に読み込む

ホスト側のセグメンテーションなどのオフロードは第二の歪みを加え、ローカルのキャプチャが回線と食い違う原因になる。ローカルのキャプチャは、アダプターが後で分割するバッファを見せることがあるので、リンク上のフレームはファイルが示すより小さく、数も多い。だからキャプチャファイルの大きなバッファは、巨大なフレームがすべてのリンクを渡った証拠にはならない。サイズが結論に関わるなら、キャプチャをどこで取り、そのインターフェースでオフロードが有効だったかを記録する。

そうしなければ、経路の振る舞いではなくホストの都合を測っていることになる。インターフェースとオフロード状態を記した二つのファイルがあれば、こうした議論のほとんどは一分で片づく。

キャプチャが証拠でなくなる場所

暗号化された外側のパケットが見えることは、この試験条件の下で保護の境界が存在することを示すだけで、端末上の他のアプリケーション、事業者の取り扱い、エンドポイント自身の状態については何も言わない。トンネル内に平文が見えることも、トンネルが壊れている証拠ではない、暗号化の地点より上で取ったということであり、そこは見るべき正当な場所だ。キャプチャは場所についての証拠であって、システムについての判決ではなく、チケットもそう書くべきだ。報告に範囲の一文を残してほしい、それが一つの観察を監査の主張に変えるのを止めるからだ。

各ファイルにはインターフェース、フィルター、タイムスタンプを付けて名づけ、調査が終わったら削除する。tcpdump のマニュアルには、ここで使ったインターフェースとフィルターのフラグが、キャプチャを小さく保つものも含めて記されている。

証拠を共有しなければならないなら、ペイロードではなくサイズ、タイムスタンプ、フラグを共有する。問いはパケットサイズについてであり、答えが誰かのデータを必要とすることはほとんどない。

関連記事