32.2. 接続追跡の概要

Netfilter フレームワークは、ファイアウォールで外部ネットワークからのパケットをフィルタリングします。パケットが到着すると、Netfilter は接続追跡エントリーを割り当てます。接続追跡は、接続を追跡し、それらの接続内のパケットフローを識別する、論理ネットワーク用の Linux カーネルネットワーキング機能です。この機能は、すべてのパケットをフィルタリングして分析し、接続ステータスを保存するために接続追跡テーブルをセットアップし、識別されたパケットに基づいて接続ステータスを更新します。たとえば、FTP 接続の場合、Netfilter は、接続追跡エントリーを割り当てて、FTP 接続のすべてのパケットが同じように機能するようにします。接続追跡エントリーは、Netfilter マークを格納し、新しいパケットタプルが既存のエントリーにマッピングするメモリーテーブル内の接続状態情報を追跡します。パケットタプルが既存のエントリーにマップされない場合、パケットは、同じ接続のパケットをグループ化する新しい接続追跡エントリーを追加します。

ネットワークインターフェイス上のトラフィックを制御および分析できます。tc トラフィックコントローラーユーティリティーは、qdisc 規則を使用してネットワーク内のパケットスケジューラーを設定します。qdisc カーネルで設定されたキューイング規則は、パケットをインターフェイスのキューに入れます。qdisc を使用することにより、カーネルはネットワークインターフェイスがトラフィックを送信する前にすべてのトラフィックを取得します。また、同じ接続に属するパケットの帯域幅レートを制限するには、tc qdisc コマンドを使用します。

接続追跡マークからさまざまなフィールドにデータを取り出すには、ctinfo モジュールと connmark 機能を備えた tc ユーティリティーを使用します。パケットマーク情報を格納するために、ctinfo モジュールは、Netfilter マークと接続状態情報をソケットバッファー (skb) マークメタデータフィールドにコピーします。

物理メディア上でパケットを送信すると、パケットのすべてのメタデータが削除されます。パケットがメタデータを失う前に、ctinfo モジュールは、Netfilter マーク値をパケットの IP フィールドにある Diffserv コードポイント (DSCP) の特定の値にマッピングしてコピーします。

関連情報

  • tc (8) および tc-ctinfo (8) の man ページ