【发布时间】:2012-04-11 06:41:00
【问题描述】:
是否可以使用 netfilter 来挂钩所有以太网数据包?
我只能从 ipv4 或 ipv6 获取数据包。
编辑:
上面的代码是我的内核模块。我想让所有到达一个以太网接口的数据包重定向到另一个接口。这个模块只打印数据包到达的设备的名称(仅用于测试)。有了这个钩子,我只得到类型是 ipv4 的数据包,但我想得到所有类型。
我在网上搜索,但没有找到如何配置我的钩子以获取所有绕过以太网接口的数据包。
最好的问候
静态结构 nf_hook_ops nfho;
int hook_func(struct sk_buff * skb)
{ 结构 ethhdr *eth;
printk("设备: %s\n,skb->dev->name);
}
int init_module() {
printk("钩子模块上线!\n");nfho.hook =(nf_hookfn *)hook_func;
nfho.hooknum = NF_IP_PRE_ROUTING;
nfho.pf = PF_INET; nfho.priority =NF_IP_PRI_FIRST;nf_register_hook(&nfho);
返回 0; }
/* 清理例程 */ void cleanup_module() {
printk("结束了!\n"); nf_unregister_hook(&nfho); }
【问题讨论】:
-
对您提出的唯一问题的简短回答是“是”,但如果这是您的全部问题,那么它是最值得关注的(错误的站点 和 一般参考)。如果这不是您的全部问题,您需要更加具体(并且在您这样做之前,这个问题仍然值得关注)。
-
我重新编辑了我的帖子。如果你能帮助我,我将不胜感激。最好的问候!
-
不,您不能为此使用 netfilter。你必须使用bridge-netfilter。
-
嗯。我如何使用网桥网络过滤器?我尝试使用桥来定义钩子,但没有成功。