首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Linux内核MOdule

Linux内核MOdule
EN

Stack Overflow用户
提问于 2012-03-27 17:25:07
回答 1查看 859关注 0票数 0

是否可以使用netfilter来连接所有以太网数据包?

我只需要从ipv4或ipv6那里得到数据包。

EDit:

上面的代码是我的核心模块。我想要将到达一个以太网接口的所有数据包重定向到另一个interface.This模块,只需打印数据包到达的设备的名称(仅供测试)。WIth这个钩子我只得到包女巫类型是ipv4,但我想得到所有类型。

我在网上搜索,但是我没有找到如何配置我的钩子来获得所有绕过以太网接口的数据包。

诚挚的问候

静态结构nf_hook_ops nfho;

int hook_func(struct sk_buff * skb)

{ *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("Over!\n“);nf_unregister_hook(&nfho);}

EN

回答 1

Stack Overflow用户

发布于 2017-04-09 00:04:25

当然,如果我做得还好,您只是愿意接受所有的以太验证的数据包,并将它们传递到另一个接口。在这种情况下,只需包含内核文件:

代码语言:javascript
运行
复制
#include <linux/if_ether.h>

您可以通过以下方式获得标题:

代码语言:javascript
运行
复制
struct ethhdr *hdr = eth_hdr(skb);
// *skb is a ptr !!

并通过检查ethhdr结构中的一些值来确保以太是有效的。然后由本地主机发送,或者修改地址,如果您希望另一个接口接受它,就像它是他的数据包一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9894520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档