免费注册 查看新帖 |

Chinaunix

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

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

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


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

当然 ...


ShadowStar兄,看到你这个帖子了,呵呵
http://linux.chinaunix.net/bbs/v ... p;extra=&page=1

我要解决的问题说起来其实很简单,不关心tcp握手之类的,因为这只是做一个监控,拷贝这个包的副本,来进行分析,原包不管他往哪里走
这个副本实际上就是到本地。类似与libpcap的功能吧,但我想在Netfilter上来实现。

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



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


如果不做NAT的话,仅仅是监听数据报文,Like IDS。
旁路监听。

PRE-ROUTING点本身有defrag操作;之后才是查找/建立conntrack。

如果不需要重组的话,为什么不直接用RAW socket?libpcap方式。

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


如果不做NAT的话,仅仅是监听数据报文,Like IDS。
旁路监听。

PRE-ROUTING点本身有defrag操作;之后才是查找/建立conntrack。

如果不需要重组的话,为什么不直接用RAW socket?libpcap方式。


不是不需要重组,我是想在重组之前把它分发一份,然后再经过重组。Raw socket上来的包,我就没办法监控了。

论坛徽章:
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
14 [报告]
发表于 2009-03-11 13:11 |只看该作者
拷贝副本我觉得应该用skb_copy吧

论坛徽章:
0
15 [报告]
发表于 2009-03-11 13:13 |只看该作者
原帖由 dreamice 于 2009-3-11 13:07 发表


ShadowStar兄,看到你这个帖子了,呵呵
http://linux.chinaunix.net/bbs/v ... p;extra=&page=1

我要解决的问题说起来其实很简单,不关心tcp握手之类的,因为这只是做一个监控,拷贝 ...


So easy。

我最近也有这样一个需求,但是因为开发工作量问题,暂时搁置了。

skb_clone,然后用netlink丢到应用层去。

这个方式主要的麻烦是,需要在应用层重组。包括连接的重组,和报文的重组。(如果有需要的话)

其他就没什么难度了。对于原始的skb没有影响。

当然,如果考虑效虑的话,也可以暂时丢到一个缓冲区,然后工作队列处理。

评分

参与人数 1可用积分 +15 收起 理由
scutan + 15 我很赞同

查看全部评分

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
16 [报告]
发表于 2009-03-11 13:13 |只看该作者
原帖由 Godbach 于 2009-3-11 13:11 发表
拷贝副本我觉得应该用skb_copy吧


不是拷贝的问题,呵呵,是拷贝了之后,怎样让这个被拷贝的包按预想的路径走下去,看来我表述有问题

论坛徽章:
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
17 [报告]
发表于 2009-03-11 13:14 |只看该作者
原帖由 dreamice 于 2009-3-11 13:13 发表


不是拷贝的问题,呵呵,是拷贝了之后,怎样让这个被拷贝的包按预想的路径走下去,看来我表述有问题


你想让他怎么走,就去对拷贝的报文做相应的修改。

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


So easy。

我最近也有这样一个需求,但是因为开发工作量问题,暂时搁置了。

skb_clone,然后用netlink丢到应用层去。

这个方式主要的麻烦是,需要在应用层重组。包括连接的重组,和报文的重组。( ...


我肯定是需要重组后的包。
有两点不太清楚:
1、应用层对包进行重组需要注意什么?
2、我如果在Netfilter中对包进行重组之前,搞一个复制skb,然后发到local in上,岂不是很省事了?
我还是很想知道问题2的实现。克隆一个包后,如何让这个被克隆的包走下去?

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


你想让他怎么走,就去对拷贝的报文做相应的修改。



你没明白我的问题啊

我可以克隆,可以修改,这是让他走特定路径的前提。但这个包修改了之后需要投递吧?
如果不投递他,它就能走下去了?我是想知道该如何投递这个包。

论坛徽章:
0
20 [报告]
发表于 2009-03-11 13:18 |只看该作者
原帖由 dreamice 于 2009-3-11 13:04 发表


改目的IP,源包怎么让他继续走?
在这个hook里,新包又如何能让他走下去?
这是我想知道的问题的关键


呵呵, 我也正为这问题迷糊呢. ip_rcv进来的时候只有一个skb, 在hook中完了的时候就有了两个skb了. 而对每个包的处理是串行的.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP