iftop の画面は、指示したインターフェースを通じてどのホストの組がバイトをやり取りしているかという、一度に一つの問いに答えます。すべてのアプリが VPN ポリシーに従っているかは答えませんし、画面が空だからといって漏えいがなかった証明にもなりません。この二つの言明の間の隙間こそ、漏えい試験の議論がほとんど間違える場所です。表示が実際に何を意味するかは三つの条件で決まり、その三つはすべて使ったコマンドラインに現れています。

三つの条件が画面の意味を決める

条件とは、どのインターフェースを表示しているか、フィルターとツール自体が何を隠しているか、試験が実際に何を動かしたかです。この順に答えてください、最初を間違えれば残り二つは無意味になるからです。

インターフェースの条件が重要なのは、トンネルの表示と物理的な表示が同じ通信の別の層を見せるからです。トンネルのインターフェースを見ればトンネル内部の流れが見え、物理インターフェースを見ればトンネルの運び手に加えて、そのリンクを共有する正当な設定・制御・ローカルの通信が見えます。どちらの表示も誤りではなく、どちらも全体像ではありません。どちらを見ているかを名指すことが、証拠と印象の違いになります。

条件その一:どのインターフェースを表示しているか

iftop は -i でインターフェースを明示的に受け取り、指定しない場合の挙動もマニュアルに記しています。その場合にトンネルではなく外側に見える機器を選ぶことがあり、その既定は帯域ツールには妥当でも漏えい試験には不適切です。

インターフェースは必ず渡し、結果の横に書き留めてください。インターフェース名のないスクリーンショットは再現できません。

条件その二:フィルターとツールが何を隠しているか

iftop はフィルター式を受け付けており、フィルターが除いた流れは存在しないからではなく作りによって見えません。またこのツールは既定でアドレスにラベルを付けるためにホスト名の照会を行い、その照会自体が観察するつもりのなかった DNS 通信を生みます。-n は照会を無効にして表示を数値にしますが、あとから DNS の行を隠すことは問い合わせを生成しないこととは違います。

この区別は他のツールにも現れるので、率直に言う価値があります。ある活動の表示を抑えることはその活動を防ぐこととは違い、DNS 照会が試験の一部なら、照会を切った状態で試験を実行して観察が観察者に汚されないようにしてください。

条件その三:試験が実際に何を動かしたか

一つのアプリから、一つの宛先へ、一つのアドレスファミリーで送る一つの要求は、その要求について何かを証明します。別のアプリ、別の宛先、もう一方のアドレスファミリーについては何も証明せず、まさにこの種の確認で最も忘れられるのが IPv6 です。

ですから始める前に、無害な宛先へ、気にしているアプリから、気にしているファミリーで、トンネルを承認済みの状態にして行うという要求を定義します。次に受信側かクライアント自身の診断を確認します、遠端は届いたものをローカルの画面にはできない形で知っているからです。次に承認済みの「トンネルが使えない」場合を動かし、通信が止まるかを見ますが、要件が実際に問題にしているのは通常この挙動です。

DNS には独自の観察が必要です。問い合わせの受け手と、問い合わせが通った経路は二つの事実であり、帯域の画面はどちらも示しません。

iftop を補助的な証拠として使う

そのとき初めて iftop は、しかも裏付けとして価値を加えます。sudo iftop -i wg0 -n -B -P -f "host 203.0.113.9" は、期待した流れが期待したインターフェースに現れるかどうかを、アイドル状態の主張を検証可能にするバイト数とともに示します。

これをソケット層の表示のための ss -tnp と、カーネルが選ぶ経路のための ip route get と比べれば、一つの機械についての一つの印象ではなく、一つの要求について三つの観察が得られます。iftop のマニュアルは、インターフェースの選択、フィルターの構文、照会の挙動を記録しており、漏えい試験が依存する三つの事柄はこれです。帯域の画面は活動の所在を示し、経路・例外・失敗時の挙動がその活動が要件を満たすかを決めます。

関連記事