イーサネットフレームをキャッチして決定を下すカーネルモジュールを作成しようとしています:「accept」または「drop」パッケージ(単純なフィルタリング)。ここで説明されている設定でsk_buffとnf_hookfnを使用しましたhttp://fcns.eu/2010/02/15/netfilter-hooks/。
残念ながら、私のモジュールはIPv4/6パッケージでのみ動作します。生のイーサネットフレームを受信しているとき、コールバック関数は起動されません。
生のEthを処理するカーネル空間でフィルターを作成することは可能ですか?フレーム?他に解決策はありますか?パフォーマンスが気になります。不要なフレームをすべてユーザースペースに送信する前に、できるだけ早く拒否したいと思います。
私のLinux:カーネルPREEMPTRT3.6.6を搭載したUbuntu。
1 に答える
0
NetfiltersはL3で動作し、L2の代替はebtablesと呼ばれ、イーサネットブリッジにあります。
ebt_arpがどのように一致ルールを登録するかを見てみましょう。
static struct xt_match ebt_arp_mt_reg __read_mostly = {
.name = "arp",
.revision = 0,
.family = NFPROTO_BRIDGE,
.match = ebt_arp_mt,
.checkentry = ebt_arp_mt_check,
.matchsize = sizeof(struct ebt_arp_info),
.me = THIS_MODULE,
};
static int __init ebt_arp_init(void)
{
return xt_register_match(&ebt_arp_mt_reg);
}
static void __exit ebt_arp_fini(void)
{
xt_unregister_match(&ebt_arp_mt_reg);
}
module_init(ebt_arp_init);
module_exit(ebt_arp_fini);
于 2013-02-12T13:08:02.143 に答える