免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: dreamice

请教:有关Netfilter的问题 [复制链接]

论坛徽章:
0
发表于 2009-03-11 14:56 |显示全部楼层
原帖由 dreamice 于 2009-3-11 14:43 发表



这帖招来这么多牛人,呵呵

因为今年牛年嘛!

希望大家都越来越牛!

论坛徽章:
0
发表于 2009-03-11 14:58 |显示全部楼层
用户态太恶心了~~~
要考虑用户各种可能的输入情况

另外,最近做的一个功能模块,用了红黑树+区间树,快把我自己转晕了~~

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
发表于 2009-03-11 14:59 |显示全部楼层
原帖由 platinum 于 2009-3-11 14:56 发表

因为今年牛年嘛!

希望大家都越来越牛!


我的问题感觉大家都没有说到点子上啊,都在谈论相关的东西。
再简单描述一遍吧:

挂一个hook,clone这个skb,(修改一些这个clone的skb的参数)然后把这个skb继续往下投递,最关键的就是这个投递,该调用什么样的函数

论坛徽章:
0
发表于 2009-03-11 15:01 |显示全部楼层
原帖由 dreamice 于 2009-3-11 14:59 发表


我的问题感觉大家都没有说到点子上啊,都在谈论相关的东西。
再简单描述一遍吧:

挂一个hook,clone这个skb,(修改一些这个clone的skb的参数)然后把这个skb继续往下投递,最关键的就是这个投递,该调 ...


取决于你往哪里投递啊~~

论坛徽章:
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
发表于 2009-03-11 15:01 |显示全部楼层
原帖由 dreamice 于 2009-3-11 14:59 发表


我的问题感觉大家都没有说到点子上啊,都在谈论相关的东西。
再简单描述一遍吧:

挂一个hook,clone这个skb,(修改一些这个clone的skb的参数)然后把这个skb继续往下投递,最关键的就是这个投递,该调 ...


你不修改数据报文的内容吗?
ip_rcv_finish不行吗?

论坛徽章:
0
发表于 2009-03-11 15:07 |显示全部楼层
原帖由 dreamice 于 2009-3-11 14:59 发表


我的问题感觉大家都没有说到点子上啊,都在谈论相关的东西。
再简单描述一遍吧:

挂一个hook,clone这个skb,(修改一些这个clone的skb的参数)然后把这个skb继续往下投递,最关键的就是这个投递,该调 ...


可以先试试ip_rcv_finish. 因为在hook结束的时候也是会走这个函数的. 就像是这样:

skb2 = skb_clone(skb)
ip_rcv_finish(skb2) // 在这个地方对skb2包进行处理, 走完网络协议栈的所有流程.
return ACCEPT

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
发表于 2009-03-11 15:07 |显示全部楼层
原帖由 ShadowStar 于 2009-3-11 15:01 发表


取决于你往哪里投递啊~~



本地投递

论坛徽章:
0
发表于 2009-03-11 15:08 |显示全部楼层
我觉得这个问题应该分成三个子问题来考虑
1、如何把 1 个包弄成 2 个包?
2、如何让其中一个包按自己的意愿走?
3、以上两者是否存在耦合性?(即是否可能存在相互干扰的成分)

我想,“1” 并不难,“2” 要看具体如何实现,比如送到 INPUT 里,那么 DST 是 localhost 吗?如果是,可能比较麻烦,2.6.28 有针对这个功能的集成
对于 “3” 来说,就要考虑 ShadowStar 提到的分片和序号问题了

我觉得问题的重点,是要弄清要如何 “随意控制数据包”,首先,直接修改这个数据让其随意是否可以,其次再考虑如何兼顾两个包之间的耦合问题

论坛徽章:
0
发表于 2009-03-11 15:09 |显示全部楼层
原帖由 dreamice 于 2009-3-11 15:07 发表



本地投递


老兄是想把转发的包都交到自己的用户态去, 那使用普通的tcpdump方式的可以不呢?

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
发表于 2009-03-11 15:10 |显示全部楼层
原帖由 Godbach 于 2009-3-11 15:01 发表


你不修改数据报文的内容吗?
ip_rcv_finish不行吗?


首先,ip_rcv_finish是一个static的函数
其次,我前面也说到,我想在碎片重组之前做这个clone,所以,直接调这个函数,投上去,包是没有重组的;

所以,调这个函数绝对有问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP