免费注册 查看新帖 |

Chinaunix

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

[C] 请教一个netfilter的问题!!毕业设计!!急!!谢谢各位大哥了!! [复制链接]

论坛徽章:
0
31 [报告]
发表于 2009-03-02 16:47 |只看该作者
原帖由 Godbach 于 2009-3-2 16:40 发表


恩,在清茶确实见到过这个头像好几次。

羡慕兄台不用再考虑技术的问题了,工作肯定轻松多了。

技术肯定要考虑的嘛  毕竟是吃这碗饭的。 只不过能应付应付就行啦

论坛徽章:
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
32 [报告]
发表于 2009-03-02 16:49 |只看该作者
原帖由 故哈 于 2009-3-2 16:47 发表

技术肯定要考虑的嘛  毕竟是吃这碗饭的。 只不过能应付应付就行啦


呵呵,也是。

OK,欢迎兄台有时间的时候,去内核版给大家指点指点啊。

论坛徽章:
0
33 [报告]
发表于 2009-03-02 23:47 |只看该作者
哈哈哈

论坛徽章:
0
34 [报告]
发表于 2009-03-03 16:25 |只看该作者
好久没有搞这个了,提几个小建议:
  1.         printk("data out\n");
  2.         if (*((u_short *)(sb->mac.raw + 12)) != 0x0008)
  3.                 return NF_ACCEPT;
  4.         if (sb->nh.iph->protocol != IPPROTO_TCP)
  5.                 return NF_ACCEPT;
  6.         tcp_buff = (struct tcphdr *)(sb->data + sb->nh.iph->ihl * 4);
复制代码


1、应用层协议没有判断,就直接取端口值??至少得确定协议为TCP/UDP才能这样做吧?很多协议是没有端口的!
2、确认一下,在OUT链的FIRST位置Hook,nh.iph是否已经被正确地初始化。(我搞忘了,内核应该已经做了,我这样说,只是以防万一)
3、取传输层首部,内核有专门的API

LZ要实现把数据请求重定向到本机,并通过本地回应之,Netfilter的redirect插件模块是一个现成的例子,可以参考之。不过看到LZ在OUT链修改数据包,似乎又像是要在桥上实现syn proxy,慢慢来,别心急,呵呵,这个要求稍有点高,考虑到连接跟踪处理的话,LZ这样做是完全不可行的。最好还是熟悉内核编程和内核的网络栈及Netfilter架构再说。

[ 本帖最后由 独孤九贱 于 2009-3-3 16:27 编辑 ]

论坛徽章:
0
35 [报告]
发表于 2009-03-03 17:05 |只看该作者
同一网段的数据中间设备可以抓到包?

论坛徽章:
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
36 [报告]
发表于 2009-03-03 19:08 |只看该作者
似乎又像是要在桥上实现syn proxy,慢慢来,别心急,呵呵


桥上实现syn proxy比较有难度啊。

论坛徽章:
0
37 [报告]
发表于 2009-03-03 22:56 |只看该作者
我感觉楼主的问题貌似可以使用iptables重定向解决。
在 PREROUTING 的 NAT 表上加一条规则应该就可以了。

论坛徽章:
0
38 [报告]
发表于 2009-03-04 13:35 |只看该作者

回复 #1 laughmetal 的帖子

add more conditions when trying to capture http packets.

struct sk_buff *sb = *skb; // point to pointer skb;
.
.   printk( "%p\n", sb);
.   printk( "%p\n, skb);      // print out both pointer address before u modify socket buffer.
.
sb = skb_copy(sb, 1);  // 1 means get_free_page to sk_buff sb, critical error. *sb are pointing to pointer *skb.
                                    // try kmalloc another sk_buff before you copy skb,  and free sk_buff before u NF_ACCEPT or NF_DROP

*skb = sb;                       // ]

[ 本帖最后由 oasisfai 于 2009-3-4 14:20 编辑 ]

论坛徽章:
0
39 [报告]
发表于 2009-03-04 14:09 |只看该作者
原帖由 laughmetal 于 2009-3-1 23:21 发表
直接修改可以的吗?我看网上的很多文档都说不能直接修改的,必须copy一下,而且我前面入口的代码是没有问题的,我猜想是不是一些深层次的原因,比如锁或者和brctl有冲突,或者内核堆栈不够?



NF_IP_XXXXXX, the five hooks in IP layer cannot captures bridge frames. there is no conflict between NF_IP and NF_BR.

论坛徽章:
0
40 [报告]
发表于 2009-03-05 09:16 |只看该作者
原帖由 故哈 于 2009-3-2 14:18 发表
别的不说 单说你这段代码
     printk("data out\n";
        if (*((u_short *)(sb->mac.raw + 12)) != 0x000
                return NF_ACCEPT;
        if (sb->nh.iph->protocol != IPPROTO_TCP)
...


CU这种装B的还不在少数啊,经常可以碰到!!!
谁没有出错的时候,谁没有菜的经历
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP