2

我们使用带有 ETH_P_ALL 的 dev_add_pack 来获取 eth1 接收到的所有以太网帧的 sk_buff 副本。有没有一种方法可以阻止 eth1 将所有以太网帧转发到 TCP/IP 层,同时仍然让它捕获所有帧并将其传递给我们的可加载内核模块?

4

1 回答 1

2

你最好的选择是创建一个 netfilter 钩子。而不是 dev_add_pack,它获取 sk_buff 的副本(从而允许原始 sk_buff 传播到 TCP/IP 堆栈,netfilter 挂钩将在遍历堆栈时为您提供指向原始 sk_buff 的指针,并且您的代码实际执行作为堆栈本身的回调 - 因此您可以选择阻止数据包,声明模块的所有权,或者做几乎任何您想做的事情。

于 2013-04-05T10:48:44.843 回答