免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 独孤九贱

[原创]Netfilter源码分析-我来抛砖,望能引玉 [复制链接]

论坛徽章:
0
发表于 2006-02-22 13:00 |显示全部楼层
那我修改要修改ipt_entry,或者修改ipt_entry_match怎么办呢?
如果我只需要添加一条match,那是不是就必须添加一条规则,而无法在已有的规则中添加match?

论坛徽章:
0
发表于 2006-02-22 13:09 |显示全部楼层
原帖由 wwwspirit 于 2006-2-22 13:00 发表
那我修改要修改ipt_entry,或者修改ipt_entry_match怎么办呢?
如果我只需要添加一条match,那是不是就必须添加一条规则,而无法在已有的规则中添加match?


根据match名,查到到对应的空间,替换之……不过iptables的相应动作是如何的,好久不看代码了,记不清了,你可以看看代码就一目了然了……

[ 本帖最后由 独孤九贱 于 2006-2-22 13:10 编辑 ]

论坛徽章:
0
发表于 2006-02-22 13:11 |显示全部楼层
如果我需要增加一条match呢?
是不是就要增加一条新的规则??

论坛徽章:
0
发表于 2006-02-22 13:14 |显示全部楼层
原帖由 wwwspirit 于 2006-2-22 13:11 发表
如果我需要增加一条match呢?
是不是就要增加一条新的规则??


当然……

论坛徽章:
0
发表于 2006-02-22 13:24 |显示全部楼层
谢谢独孤大侠指点。
我最近比较忙,过几天再认真拜读一下netfilter代码。到时候如有问题再请教

论坛徽章:
0
发表于 2006-02-22 13:31 |显示全部楼层
原帖由 wwwspirit 于 2006-2-22 13:24 发表
谢谢独孤大侠指点。
我最近比较忙,过几天再认真拜读一下netfilter代码。到时候如有问题再请教


呵呵,九贱非大侠也,大家一起讨论,共同进步而已!
我也想抽个时间,将Netfilter和iptables的源码分析更正、补充完整,无奈时间太少,每天早出晚归的,没有时间啊没有时间!

论坛徽章:
0
发表于 2006-02-23 09:01 |显示全部楼层
在问一个问题:
用户用iptables添加规则,用户命令的解析由iptables完成,iptables是把用户的命令组织为规则,然后通过socket传递给netfilter的吗?如果是这样的话,那iptables是不是也必须知道每一条match如何构成,也就是说在netfilter中每注册一种扩展Match,对应的也要在iptables中增加内容呢?如果不改动iptables,iptables可能没有足够的信息来完成规则的构建。

论坛徽章:
0
发表于 2006-02-23 09:28 |显示全部楼层
原帖由 wwwspirit 于 2006-2-23 09:01 发表
在问一个问题:
用户用iptables添加规则,用户命令的解析由iptables完成,iptables是把用户的命令组织为规则,然后通过socket传递给netfilter的吗?如果是这样的话,那iptables是不是也必须知道每一条match如何构 ...


目前这种架构, Netfilter与iptables的模块结构是一致的,拿添加规则来讲,上面已经讲了它的全部流程,它是在用户态进行解析、分配空间,初始化,然后再得到这条规则的空间总得,再分配一块内存给这条规则,然后将这个内存地址传递给核心态,内核得到这个地址后,调用copy_from_user将用户态的该地址内容拷贝至内核来(从这个解度上讲,内核在添加规则的时候,如果不进行必要的检查的话,它根本不知道这块内存中是什么东西,也就是说是透明的)。

如果你想自己重写iptables,事实上,在数据结构上,当然得参照一下iptables 的实现了。你想直接写,而不遵循其结构的定义,无疑是不可能的!

论坛徽章:
0
发表于 2006-02-23 09:51 |显示全部楼层
我不是要重写iptables,我在写一个类似netfilter/iptables的东西,也就是这两个部分的功能都要实现,现在在做框架设计。所以要参考netfilter/iptables,但也不能太受它们的限制。等我自己的框架写完了,我在来认真拜读netfilter/iptables,来改进我自己的设计。现在有几个地方还弄不明白,比方内核与用户态通信,如果要在用户态就把规则/match封装好,必然要在内核和用户两个模块维护两份关键数据结构,这样影响模块化,且也不易于日后扩展和维护。
考虑的另外一个方法就是在用户态做半解析,然后将结果传递给内核模块,内核模块完成规则的维护。这样用户态和内核态就完全可以分开开发/维护,日后扩展也容易,但这样也不易实现。

论坛徽章:
0
发表于 2006-02-23 09:52 |显示全部楼层
我水平比较菜,刚学内核编程没几天,这只是个尝试,不过希望大家鼎立相助。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP