免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 12296 | 回复: 27
打印 上一主题 下一主题

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

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

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

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2009-11-05 16:54 |只看该作者
我以前总结过这样一篇文章,LZ可以参考一下:
http://blog.chinaunix.net/u/33048/showart_2043789.html

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

论坛徽章:
0
3 [报告]
发表于 2009-11-06 09:10 |只看该作者
原帖由 meijusan123 于 2009-11-5 16:45 发表
linux netfilter hook中自己构造skbuff,发送全新数据包!
大虾可以给点思路

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

有些封包接口会自己释放 不需要你释放

论坛徽章:
2
巨蟹座
日期:2014-03-09 21:37:25射手座
日期:2014-04-16 16:23:03
4 [报告]
发表于 2009-11-06 10:24 |只看该作者
参考ipt_REJECT模块代码!

论坛徽章:
0
5 [报告]
发表于 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
6 [报告]
发表于 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
7 [报告]
发表于 2009-11-06 17:48 |只看该作者

回复 #3 故哈 的帖子

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

论坛徽章:
0
8 [报告]
发表于 2009-11-06 20:17 |只看该作者

回复 #7 meijusan123 的帖子

没有吧,我认为转发的skb最终的释放不是在dev_queue_xmit中,而是在硬件发送完成,触发的软中断中

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
9 [报告]
发表于 2009-11-06 22:41 |只看该作者
原帖由 meijusan123 于 2009-11-6 17:46 发表



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


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

论坛徽章:
0
10 [报告]
发表于 2009-11-07 08:28 |只看该作者

回复 #8 lyl19 的帖子

难道 ,是在硬件驱动中实现释放的过程?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP