免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-11 10:48 |只看该作者 |倒序浏览
请教各位牛人一个问题:
这样一种需求如何实现:比如说想在Netfilter的pre routing点上实现一个hook,克隆这个skb,让原skb走他原来的路径——也就是ACCPT他,而克隆的包我让它按我的意愿走,比如说走input。

谢谢指导!

论坛徽章:
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-03-11 10:49 |只看该作者
原帖由 dreamice 于 2009-3-11 10:48 发表
请教各位牛人一个问题:
这样一种需求如何实现:比如说想在Netfilter的pre routing点上实现一个hook,克隆这个skb,让原skb走他原来的路径——也就是ACCPT他,而克隆的包我让它按我的意愿走,比如说走input。
...


呵呵,你不是已经说出如何实现了吗?

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
3 [报告]
发表于 2009-03-11 10:49 |只看该作者

回复 #1 dreamice 的帖子

我在想把克隆的包,经过一定的修改后,调用ip_routeme_harder(),不知道这样是否可行

论坛徽章:
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
4 [报告]
发表于 2009-03-11 10:50 |只看该作者
原帖由 dreamice 于 2009-3-11 10:49 发表
我在想把克隆的包,经过一定的修改后,调用ip_routeme_harder(),不知道这样是否可行


可以了解一下你对clone的包要做什么工作吗?这个API之前没用过,呵呵

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
5 [报告]
发表于 2009-03-11 12:11 |只看该作者

回复 #4 Godbach 的帖子

克隆的包就是分发一下,让他走与原包不同的路径

论坛徽章:
0
6 [报告]
发表于 2009-03-11 12:32 |只看该作者
So easy.

这个处理,没有任何问题。

不过要注意,后续的处理可能有问题。
例如需要记录报文内容的话,需要考虑数据包重组的问题;如果做了NAT的话,TCP的三次握手应该会失败的。


刚刚遇到类似的需求,不过否掉了这种做法。

[ 本帖最后由 ShadowStar 于 2009-3-11 12:37 编辑 ]

论坛徽章:
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
7 [报告]
发表于 2009-03-11 12:46 |只看该作者
原帖由 dreamice 于 2009-3-11 12:11 发表
克隆的包就是分发一下,让他走与原包不同的路径


恩,那可以实现啊。如果本机接收的话,把报文的目的IP改一下就可以了吧。

论坛徽章:
0
8 [报告]
发表于 2009-03-11 13:02 |只看该作者
原帖由 Godbach 于 2009-3-11 12:46 发表


恩,那可以实现啊。如果本机接收的话,把报文的目的IP改一下就可以了吧。


如我上面所说的,这种涉及到NAT的操作,会有些问题。
TCP的话,三次握手会失败。除非不考虑三次握手,直接hack socket,上传数据。
UDP的话,conntrack会有冲突(与原始的skb所属的conntrack)。

当然,都是可以解决的,从技术角度讲。

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
9 [报告]
发表于 2009-03-11 13:02 |只看该作者
原帖由 ShadowStar 于 2009-3-11 12:32 发表
So easy.

这个处理,没有任何问题。

不过要注意,后续的处理可能有问题。
例如需要记录报文内容的话,需要考虑数据包重组的问题;如果做了NAT的话,TCP的三次握手应该会失败的。


刚刚遇到类似的需 ...



请指教该如何做分发?我想在报文重组之前做,不做NAT。

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
10 [报告]
发表于 2009-03-11 13:04 |只看该作者
原帖由 Godbach 于 2009-3-11 12:46 发表


恩,那可以实现啊。如果本机接收的话,把报文的目的IP改一下就可以了吧。


改目的IP,源包怎么让他继续走?
在这个hook里,新包又如何能让他走下去?
这是我想知道的问题的关键
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP