ファイアウォールのカウンタは、パケットがルールに一致すると増加します。しかもパケットを保持しません。これだけで、多くの破棄調査における最初の問いに答えられます。そのフローはそもそもこのルールに到達したのか、という問いです。ペイロードのキャプチャは別の問いに答えるもので、実行中にインターフェースを通過する他のすべてを集めます。まずカウンタから始め、カウンタが曖昧なときだけメタデータログに移ってください。

カウンタが最初の問いに答える

一致しうるルールにはすべてカウンタがあり、テストの前後で読めば、トラフィックが届いたかどうかが分かります。これはアーカイブではなく二つの数値の比較であり、保存容量も露出もまったく増えません。

ルールを所有するツールでカウンタを読みます:

iptables -L FORWARD -v -n --line-numbers
nft list ruleset

差分が証拠です。カウンタが動かないルールはそのフローを一度も見ておらず、それはより前の境界を示します。間違ったインターフェース、間違ったテーブル、あるいはパケットをそこへ送らなかったルートです。カウンタが動いてなお破棄するルールは、ポリシーが書かれたとおりに機能していることを示します。

カウンタが教えてくれないこと

カウンタが与えるのは数値であり、理由ではありません。アドレスで一致したパケットとポートで一致したパケットを区別できず、二つの似たルールのどちらがフローを捕まえたかも分かりません。また、そのカウンタを所有するルールを読まない限り、パケットが破棄されたのか、拒否されたのか、受理された後に失われたのかも分かりません。

ここでメタデータログの出番です。そして範囲がすべてです。特定のテストフローについて、インターフェース、方向、アドレス、プロトコル、判定を記録します。これらの項目は、ユーザーが何をしていたかを記録せずに、失敗した境界を特定します。

ペイロードのログは別の問いに答え、しかもインターフェース上の全員について答えます。

範囲を絞ったメタデータログ

テストフローにだけ一致するルールを書き、目立つプレフィックスを付け、プラットフォーム自身の制御の下でレート制限して、通常の再試行がストレージを溢れさせないようにします。プレフィックスがあるからこそ、デバイスが記録する他のすべての中から自分のエントリを見つけられます。

機能があるという理由だけで、ペイロードや無制限のパケットログを有効にしないでください。切り詰めたキャプチャも自動的にペイロードを含まないわけではありません。ヘッダーサイズやパケットのレイアウトはさまざまなので、小さく見えるスナップ長でもアプリケーションのバイトを運ぶことがあります。

どうしてもキャプチャするなら、一本のフローだけを、限られた時間だけ、問いに答える最小のスナップ長でキャプチャしてください。

新しいリクエストを一件だけ照合する

実際のクライアント経路に沿った無害なトラフィックを生成し、その前後で関連するカウンタを比較します。ゲートウェイ上でのローカルテストは転送ルールを完全に見落とすことがあります。パケットが転送経路を通らないからです。確立済みのセッションは新しい接続とは異なる状態処理に一致することもあるので、長寿命のフローは新しいフローの代わりにはなりません。

時間枠を区切り、書き留めます。指定した二分の間に、このクライアントアドレスから、このプロトコルでこの宛先へ、というのが診断です。今朝のどこか、というのは検索です。

一本のフロー、一つの時間枠、一つの境界が、ここでの前進の単位です。

後片付けをして、抜粋だけを残す

調査が終わったら、所有する設定を通じて一時的な診断ルールを削除します。狭いログルールを置き忘れると、意図しない記録システムになり、半年後に誰もその存在理由を覚えていません。

ポリシーが求める場合は元の記録を非公開で保管し、キャプチャ全体ではなくレビュー済みの最小の抜粋を共有します。ペイロードがなくても、アドレス、アカウント識別子、内部トポロジは機密です。抜粋は所有者のいる文書として扱ってください。診断に不要なものはすべて伏せてください。

目的は、特定のリクエストに対する特定の失敗境界です。VPN を使う全員の完全なアーカイブを生み出すものは、診断を超えて別のプロジェクトを始めています。何かを追加する前に、プラットフォームのログのドキュメントで既定で何を記録するかを確認してください。

関連記事