0

イーサネットフレームをキャッチして決定を下すカーネルモジュールを作成しようとしています:「accept」または「drop」パッケージ(単純なフィルタリング)。ここで説明されている設定でsk_buffとnf_hookfnを使用しましたhttp://fcns.eu/2010/02/15/netfilter-hooks/
残念ながら、私のモジュールはIPv4/6パッケージでのみ動作します。生のイーサネットフレームを受信して​​いるとき、コールバック関数は起動されません。

生のEthを処理するカーネル空間でフィルターを作成することは可能ですか?フレーム?他に解決策はありますか?パフォーマンスが気になります。不要なフレームをすべてユーザースペースに送信する前に、できるだけ早く拒否したいと思います。

私のLinux:カーネルPREEMPTRT3.6.6を搭載したUbuntu。

4

1 に答える 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 に答える