Kernel(2.6)の実装に関するメモ書きフィルタカーネルのnetfilter機能により、パケットフィルタやIPマスカレードを行なうことができる。フック処理フィルタ関連の処理を行うためにLinuxではプロトコル層にフック処理を登録できるようになっている。フック処理はnf_hooks[pf][hook]に登録され、NF_HOOK()によりプロトコル層から呼び出される。nf_hook_ops)をリスト形式で登録している。IPv4では表1に示すHook種別がある。Trackingに関する処理など様々なものが登録されるが、これらのフック処理はお互いに関連があることが多く処理順序を制御できないとまずい。このため、各フック処理には優先度があり、フック処理の順番を制御できるようになっている。nf_hooks[][]には優先度順にソートされてエントリがチェーンされている。既定の優先度には表2に示すようなものがある。Trackingのフック処理が行われることになる。IPパケット受信してルーティングテーブルを検索する前に呼び出される。受信したパケットが自システム宛だった場合に呼び出される。自システム宛かどうかはルーティングテーブルを引いて判断されるので、このHookのタイミングはNF_IP_PRE_ROUTINGの後になる。受信したパケットが中継対象だった場合に呼び出される。自システムからパケットをう送信するときに呼び出される。パケット送信時にルーティングテーブルを検索後に呼び出される。値が小さいほど先に処理される。okfn)pf,hookで指定したフック処理を優先度順に実行していく。各フック処理がNF_ACCEPTを返せばokfnを呼び出す。nf_register_hook(reg)フック処理を登録する。nf_hooks[][]の指定Hookにエントリ(reg)がチェーンされる。フック処理の登録フィルタ処理では表3に示すフック処理を登録してフック処理を行う。表3に示したように、自システム宛および中継パケットのフィルタ処理はipt_hook()で行い、自システムから送信するパケットのフィルタ処理はipt_local_out_hook()で行う。コマンドとのインタフェースユーザ空間のコマンド(iptables)がカーネルにエントリを設定したり、カーネルからエントリを取得するのにはsetsockopt(),getsockopt()で行なう。IPPROTO_RAW))を使用する。setsockopt(),getsockopt()で指定するlevelはIPPROTO_IP,IP6。オプション名は表4に示すものがある。管理リンクその他のWikiとみぞーノートXnuメモ会社(有)ビットハイブ受託開発やってます。