33.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 ページ