免费注册 查看新帖 |

Chinaunix

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

请教netfliter 与tcpdump冲突的问题; [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-20 13:35 |只看该作者 |倒序浏览
我有一个网络分析的程序, hooknum 是  NF_IP_PRE_ROUTING  如下:
    pfho.hook      = hook_func;
    pfho.hooknum   = NF_IP_PRE_ROUTING;
    pfho.pf        = PF_INET;
    pfho.priority  = 200;
   
    要实现的功能是将 网络的数据报文接受到 做分析,  接收到的结构:sk_buff  中的报文信息, 读取 到程序中做处理,然后将处理完的数据包调用:return NF_ACCEPT;  没有网数据包中写的操作.


    现在遇到的问题是,程序运行没问题, 但是在运行过程中 调用 tcpdump -i eth1  抓取流量上来的网卡时  系统就会 crash掉.

    分析了很久没找到答案, 大家遇到类似情况的吗?

论坛徽章:
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 [报告]
发表于 2011-09-20 14:08 |只看该作者
回复 1# mtx99
你给的这些信息不够全面,不太好判断

论坛徽章:
0
3 [报告]
发表于 2011-09-20 14:15 |只看该作者
程序做的就是分析 sk_buff  把 报文信息记录下来,通过ring送到用户态程序处理.

程序并不改变sk_buff 的内容.做的是只读操作.

但是tcpdump抓取 有流量的网卡数据包时 ,机器就死掉了. 没有报错.啥信息也没有.所以没找到原因.


内核版本:linux-2.6.18.i686

论坛徽章:
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 [报告]
发表于 2011-09-20 14:34 |只看该作者
回复 3# mtx99
可以先试一下 不通过 PF_RING 传数据包,看看机器还会不会挂起

论坛徽章:
0
5 [报告]
发表于 2011-09-20 14:40 |只看该作者
实验过了.  机器死掉的地方 操作有 memcpy 将 sk_buff的内容拷到函数内部变量时 容易发生..

看memcpy语句没啥问题. 单独执行也没啥问题.  不过运行过程中 tcpdump 抓包就不行了

论坛徽章:
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
6 [报告]
发表于 2011-09-20 14:46 |只看该作者
回复 5# mtx99
你怎么 memcpy 的,skb 的数据不一定是线性的,这个你做判断或者处理了吗

论坛徽章:
12
2015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之同曦
日期:2017-03-17 19:13:162016科比退役纪念章
日期:2016-11-07 08:28:12luobin
日期:2016-06-17 17:46:36wusuopu
日期:2016-06-17 17:43:4515-16赛季CBA联赛之福建
日期:2016-01-14 12:49:22程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2015-06-08 22:20:00程序设计版块每日发帖之星
日期:2015-06-08 22:20:002015年亚洲杯之科威特
日期:2015-03-24 14:21:272015年迎新春徽章
日期:2015-03-04 09:57:092016科比退役纪念章
日期:2018-04-10 16:20:18
7 [报告]
发表于 2011-09-20 14:49 |只看该作者
这回我猜中了.有进步.

论坛徽章:
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
8 [报告]
发表于 2011-09-20 14:53 |只看该作者
回复 7# VIP_fuck

不带这样潜水的啊。

我也只是猜测,还是需要验证。

BTW,其实还是建议大家有什么观点,不要担心对与错,尽量及时交流出来,明辨之后,互相进步的才会更快。

论坛徽章:
0
9 [报告]
发表于 2011-09-20 14:56 |只看该作者
比如这个函数:中的memcpy  就是将上一个hook函数中 穿过来的 tuple指针 拷贝到一个局部变量中.

static int handle_tcp_udp_node(struct sk_buff *pskb,
                        char* tcp,
                        TcpTuple* tuple)
{
    TcpUdpInfo tinfo;

    memset(&tinfo, 0, sizeof(TcpUdpInfo));
   
    memcpy(&tinfo.tuple, tuple, sizeof(TcpTuple));
   
    如果用memcpy  运行中调用tcpdump就死机

如果换成一下逐个变量赋值 这个点上就不会出问题;
   
    tinfo.tuple.srcIP  =tuple->srcIP  ;
    tinfo.tuple.desIP  =tuple->desIP  ;
    tinfo.tuple.srcPort=tuple->srcPort;
    tinfo.tuple.desPort=tuple->desPort;

不知道为什么这个程序运行中 再调用  tcpdump 会导致死机

论坛徽章:
12
2015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之同曦
日期:2017-03-17 19:13:162016科比退役纪念章
日期:2016-11-07 08:28:12luobin
日期:2016-06-17 17:46:36wusuopu
日期:2016-06-17 17:43:4515-16赛季CBA联赛之福建
日期:2016-01-14 12:49:22程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2015-06-08 22:20:00程序设计版块每日发帖之星
日期:2015-06-08 22:20:002015年亚洲杯之科威特
日期:2015-03-24 14:21:272015年迎新春徽章
日期:2015-03-04 09:57:092016科比退役纪念章
日期:2018-04-10 16:20:18
10 [报告]
发表于 2011-09-20 14:59 |只看该作者
回复 8# Godbach


    我这点能耐可不敢乱说.猜中了就得瑟下.哈哈.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP