是否可以使用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);}
发布于 2017-04-09 00:04:25
当然,如果我做得还好,您只是愿意接受所有的以太验证的数据包,并将它们传递到另一个接口。在这种情况下,只需包含内核文件:
#include <linux/if_ether.h>
您可以通过以下方式获得标题:
struct ethhdr *hdr = eth_hdr(skb);
// *skb is a ptr !!
并通过检查ethhdr结构中的一些值来确保以太是有效的。然后由本地主机发送,或者修改地址,如果您希望另一个接口接受它,就像它是他的数据包一样。
https://stackoverflow.com/questions/9894520
复制相似问题