免费注册 查看新帖 |

Chinaunix

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

通过netfilter的钩子函数拦截数据包实现转发的问题????????????????? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-18 21:56 |只看该作者 |倒序浏览
1: 如果通过钩子函数注册进netfilter内核模块的话,那这个新加的钩子代码
   要加在linux源码中的哪个目录下,是在net/netfilter中吗?
2: 拦截下来的数据包中如果要将目的IP地址改成要转发的IP地址,是否是在
   PRE_ROUTING的HOOK点拦截?是直接将目的地址修改了就好了吗,要重
   新算校验和吗?
3: 另外这个钩子函数应该要怎么测试呢?有点不明白啊?

麻烦大牛们帮忙解答一下谢谢。。。

论坛徽章:
0
2 [报告]
发表于 2011-10-18 22:23 |只看该作者
我也刚刚接触netfilter,感觉如果是不加过滤的全部修改的话,在pre_routing修改就好了吧,需要重新计算校验和的吧。如果不算的话,就算你送到了目的ip,它也会丢弃吧……不知道对不对,如果有错,求大牛指正……

论坛徽章:
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 [报告]
发表于 2011-10-19 08:54 |只看该作者
回复 1# LYZC11

1: 如果通过钩子函数注册进netfilter内核模块的话,那这个新加的钩子代码
   要加在linux源码中的哪个目录下,是在net/netfilter中吗?

这样看你的代码针对ipv4,还是ipv6,还是ipv4和ipv6都适用。
2: 拦截下来的数据包中如果要将目的IP地址改成要转发的IP地址,是否是在
   PRE_ROUTING的HOOK点拦截?是直接将目的地址修改了就好了吗,要重
   新算校验和吗?

要修改目的地址的话,应该在PRE_ROUTING点。 需要重新计算校验和。
3: 另外这个钩子函数应该要怎么测试呢?有点不明白啊?

加载上钩子函数后,发送到IP1的数据。钩子函数中将目的IP1修改为IP2,在IP2主机上用混杂模式抓包。   

论坛徽章:
0
4 [报告]
发表于 2011-10-19 09:12 |只看该作者
回复 3# 瀚海书香


版主大牛,
1: 如果是ipv4,那这个钩子函数的代码是要放在net/ipv4下编译,是这个意思吗?
2: 只修改IP地址的话,除了需要计算校验和,MAC要重新填写吗?有没有计算校验和的例子呢。
3: 混杂模式抓包可否再稍微解释一下呢?谢谢

论坛徽章:
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
5 [报告]
发表于 2011-10-19 09:19 |只看该作者
回复 4# LYZC11

1: 如果是ipv4,那这个钩子函数的代码是要放在net/ipv4下编译,是这个意思吗?

不推荐一开始就将代码放到内核中编译,建议以模块的形式。
2: 只修改IP地址的话,除了需要计算校验和,MAC要重新填写吗?有没有计算校验和的例子呢。

MAC地址不需要重新填写,这个是二层的事情,二层自然会处理。
可以参考一下内核中DNAT的实现。另外我blog中有一篇类似的文章http://blog.chinaunix.net/space. ... =blog&id=142455

3: 混杂模式抓包可否再稍微解释一下呢?
   
建议看一下wireshark的使用。

论坛徽章:
0
6 [报告]
发表于 2011-10-19 09:27 |只看该作者
回复 5# 瀚海书香


谢谢大牛的回覆,

    1:那以模块的方式也是要注册进内核吧,那这些代码是需要加在哪里呢?比较迷惑啊

论坛徽章:
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
7 [报告]
发表于 2011-10-19 09:42 |只看该作者
回复 6# LYZC11
以模块的形式编译。
通过insmod来加载模块。

从你的情况来看,对内核了解不是很多,建议先多了解一下内核模块的概念以及如何编译模块。这些内容在讲内核编程的书中都有,基本就是hello world的形式。

论坛徽章:
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-10-19 09:58 |只看该作者
回复 1# LYZC11
1. 建议加深内核模块的相关理解,比如参考 LDD3。
2. 建议先看一些关于内核网络相关实现介绍的文章,比如有一篇叫做《深入理解 Linux 网络堆栈》,好像是九贱兄翻译的,很不错的。

论坛徽章:
0
9 [报告]
发表于 2011-10-19 14:02 |只看该作者
回复 7# 瀚海书香


  其实主要是想实现ip地址重定向,但网上具体的实现好像都没有说得很清楚,
大牛是否有相关示例给参考一下,这样学也比较快一些???

论坛徽章:
0
10 [报告]
发表于 2011-10-19 14:05 |只看该作者
回复 8# Godbach


    嗯,谢谢Godbach,关于ip定址重定向有没有什么相关推荐的?或可以参加内核源码的哪一部分吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP