免费注册 查看新帖 |

Chinaunix

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

nf_conntrack_core如何获取tcp连接和断开的信息 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-19 21:18 |只看该作者 |倒序浏览
想利用nf_conntrack_core何获取tcp连接和断开的信息,
保持到自己的数据中,
推断是在nf_conntrack_proto_tcp.c的tcp_packet函数里
1,下面的条件表示有一条新的tcp
(new_state == TCP_CONNTRACK_ESTABLISHED) && (old_state == TCP_CONNTRACK_SYN_RECV)
2,TCP_CONNTRACK_FIN_WAIT/TCP_CONNTRACK_CLOSE_WAIT/TCP_CONNTRACK_TIME_WAIT/TCP_CONNTRACK_CLOSE
tcp断开连接。

可是统计的tcp条数总是对不上,请各位大侠指点。

还有death_by_timeout是不是有事件的话,表示tcp断开

论坛徽章:
0
2 [报告]
发表于 2012-04-20 10:35 |只看该作者
linux-2.6.39.4
希望各位大侠指点,也希望九践大侠指点

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
3 [报告]
发表于 2012-04-20 11:27 |只看该作者
回复 1# xhsdxhsd1212
你到底想得到什么?就是获取内核的tcp连接信息吗?

   

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
4 [报告]
发表于 2012-04-20 11:28 |只看该作者
回复 1# xhsdxhsd1212
你看看conntrack-tools吧,我想这个东西应该会给你提供帮助。

   

论坛徽章:
0
5 [报告]
发表于 2012-04-20 12:26 |只看该作者
谢谢 瀚海书香
我想在内核统计每台计算机的tcp连接数,
如果超过了的话,限制该台计算机的TCP

conntrack-tools
谢谢,先看一下

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
6 [报告]
发表于 2012-04-20 12:33 |只看该作者
回复 5# xhsdxhsd1212
我想在内核统计每台计算机的tcp连接数,
如果超过了的话,限制该台计算机的TCP

这个功能通过iptables -m connlimit就可以实现的啊,不需要自己写模块的。
   

论坛徽章:
0
7 [报告]
发表于 2012-04-20 13:14 |只看该作者
本帖最后由 xhsdxhsd1212 于 2012-04-20 13:15 编辑

谢谢。

connlimit的话,
他要在自己的hash表里查询,没有对每台计算机的统计信息记入下来,这样速度很慢。
现在的想法是:对每一台计算机,来一个connect,累加上去,close的时候,减下来。

连接限制时,可以按计算机查询,因为计算机不是很多,所以速度快些。

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
8 [报告]
发表于 2012-04-20 18:43 |只看该作者
回复 7# xhsdxhsd1212
连接限制时,可以按计算机查询,因为计算机不是很多,所以速度快些。

如果总连接数不多的话,没必要担心效率的问题。
如果总连接非常多的,查询的效率也需要考虑一下了
   

论坛徽章:
0
9 [报告]
发表于 2012-04-20 20:06 |只看该作者
谢谢回答

现在没有办法,需要考虑

论坛徽章:
0
10 [报告]
发表于 2012-04-21 09:11 |只看该作者
本帖最后由 独孤九贱 于 2012-04-21 09:11 编辑
xhsdxhsd1212 发表于 2012-04-20 20:06
谢谢回答

现在没有办法,需要考虑


这个问题有很多解决方式,最简单的一个就是写个用户态daemon,监控netfilter的会话事件:包括new和destroy,楼上提到的conntrack-tools自身就带这个功能,你也可以使用netfilter提供的API,自己实现一个。我想这就是你要的吧……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP