免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: meijusan123
打印 上一主题 下一主题

linux netfilter hook中自己构造skbuff,发送全新数据包 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-05 16:45 |显示全部楼层 |倒序浏览
linux netfilter hook中自己构造skbuff,发送全新数据包!
大虾可以给点思路

如果自己申请skbuff内存,最后,到底怎么让其释放掉~

论坛徽章:
0
2 [报告]
发表于 2009-11-06 17:46 |显示全部楼层
原帖由 godbach 于 2009-11-5 16:54 发表
我以前总结过这样一篇文章,LZ可以参考一下:
http://blog.chinaunix.net/u/33048/showart_2043789.html

至于数据包的释放,数据包最终由网卡发出去的时候,系统会将其释放的。



谢谢楼主,你的文章写了很好。但,我有些疑问想提一下!
就是在hook中我手动封装一个数据包,包括对mac,ip,tcp头和数据段,最后通过dev_queue_xmit()发送,是可以实现的,我试验过。
如果,我手动封装一个数据包只封装了ip,tcp和数据段,最后还是通过dev_queue_xmit()发送出去,中途怎么让系统自己动给我封装一个mac头?

论坛徽章:
0
3 [报告]
发表于 2009-11-06 17:47 |显示全部楼层

回复 #4 kwest 的帖子

参考过,是可以实现。
但,他是        NF_HOOK(PF_INET6, NF_IP6_LOCAL_OUT, nskb, NULL, nskb->dst->dev,
                dst_output);
一个过程,而不是直接dev_queue_xmit(),哪,mac头是怎么封装的

论坛徽章:
0
4 [报告]
发表于 2009-11-06 17:48 |显示全部楼层

回复 #3 故哈 的帖子

是呀,我看了dev_queue_xmit()里面,是实现了kfree_skb()的过程!~

论坛徽章:
0
5 [报告]
发表于 2009-11-07 08:28 |显示全部楼层

回复 #8 lyl19 的帖子

难道 ,是在硬件驱动中实现释放的过程?

论坛徽章:
0
6 [报告]
发表于 2009-11-07 08:31 |显示全部楼层
原帖由 godbach 于 2009-11-6 22:41 发表


同样是我的总结的那文章说的一种方式,封装数据包之后让它进行路由。


我试着使用ip_route_output_key(&rt, &fl) 这个接口函数去手动路由,再触发dev_queue_xmit(skb)去发送数据包,但,tcpdump没抓到此包,可能是没有路由成功,没有帮我添加好MAC头,所有,中途丢弃了!

版主,你的意思“封装数据包之后让它进行路由”是怎么实现的?能不能说详细些,让我了解下 谢谢啦

论坛徽章:
0
7 [报告]
发表于 2009-11-09 14:18 |显示全部楼层
原帖由 godbach 于 2009-11-7 16:18 发表

我的意思就是封装之后,你要手动路由吧,这个可以参考ipt_REJECT.c中的send_reset函数操作的路由方式,然后让数据包接着走NF框架的处理流程啊。


谢谢,版主,问题解决了。

可以,手动封装数据包,再手动路由,继续使用它路由过的hh结构,取出已经帮你填好的mac部分,再把skb放到dev_queue_xmit(skb)上,ok。抓包,可以抓到了!

论坛徽章:
0
8 [报告]
发表于 2009-11-10 10:24 |显示全部楼层

回复 #16 VIP_fuck 的帖子

先看书!
ldd3,或一些内核开发相关,不然,一下子没理论知识,到处碰壁的。

论坛徽章:
0
9 [报告]
发表于 2009-11-10 11:12 |显示全部楼层

回复 #15 godbach 的帖子

对呀,但,你必须还手动把路由过后涉及到的hh_cache结构mac头自己手动加上,最后调用dev_queue_xmit发送出去。

为什么呢?
因为,按我们以前的hook流程或是NF_HOOK流程,系统都帮你处理了mac头的添加。所以,现在如果调用dev_queue_xmit,就必须自己手动添加下已经获得mac头就行啦!

论坛徽章:
0
10 [报告]
发表于 2009-11-10 11:14 |显示全部楼层

回复 #18 VIP_fuck 的帖子

晕,我不是什么大牛啦,我也是刚搞kernel 协议栈不久,需要大量实践和学习的啦!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP