netfilter 架构分析

netfilter 架构分析

ID:1121906

大小:191.00 KB

页数:10页

时间:2017-11-07

netfilter 架构分析_第1页
netfilter 架构分析_第2页
netfilter 架构分析_第3页
netfilter 架构分析_第4页
netfilter 架构分析_第5页
资源描述:

《netfilter 架构分析》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Netfilter架构分析--基于Linux3.2.0一、全局图在文件net/netfilter/core.c中定义了一全局变量nf_hooks,用于记录钩子点。nf_hooks第一维代表协议数,第二维代表钩子数。structlist_headnf_hooks[NFPROTO_NUMPROTO][NF_MAX_HOOKS]__read_mostly;net/netfilter/core.cnf_hooks中每个元素都是一个链表list_headEXPORT_SYMBOL(nf_hooks);nf_hookslistlistlistlistlistlistlistlistlistinclu

2、de/linux/netfilter.h钩子点结构体,其中的hook是钩子函数nf_register_hook()nf_hook_opsinclude/linux/netfilter.hxt_table结构体,用于管理过滤规则listnet/netfilter/core.c调用nf_register_hook()将钩子点挂载到全局变量nf_hooks的某个list上hookownerpfhooknumprioritylistvalid_hooksinclude/linux/netfilter.hxt_table_info结构体,记录规则入口等信息privatemenet/netfilte

3、r/x_tables.c调用xt_hook_link(table,fn)将xt_table与nf_hook_ops关联起来,并挂载钩子点(xt_hook_link()内部调用了nf_register_hooks())。afprioritynamesizenumberinitial_entrieshook_entryunderflownet/ipv4/netfilter/ip_tables.c在ipt_do_table()中,通过hook_entry与entries获得ipt_entry:get_entry(entries,hook_entry);stacksizestackptrjump

4、stackentriesipt_entryinclude/linux/netfilter_ipv4/ip_tables.hinclude/linux/netfilter/x_tables.h调用ipt_get_target(ipt_entry)获得xt_entry_target调用xt_ematch_foreach()查找匹配信息ipnfcachetarget_offsetnext_offsetcomefromcounterselems[0]xt_entry_matchxt_entry_targetunionuunionusermatch_sizenamerevision;unionke

5、rnelmatch_sizematchmatch_sizeunionuunionusertarget_sizenamerevision;unionkerneltarget_sizetargettarget_sizeunsignedchardata[0]unsignedchardata[0]xt_matchxt_targetlistlistnamenamerevisionrevisioninclude/linux/netfilter/x_tables.hbool(*match)()uint(*target)()int(*checkentry)()int(*checkentry)()void

6、(*destroy)()void(*destroy)()memetabletablematchsizetargetsizehookshooksprotoprotofamilyfamily一、钩子函数(hook)与过滤规则表(xt_table)前面已经提到,钩子函数与过滤规则的管理是通过全局变量nf_hooks来实现的,那么,什么时候会调用钩子函数呢?钩子函数又是如何利用已经注册好的过滤规则的呢?在Linux内核中定义了网络数据包的流动方向,数据包被网卡捕获后,它在内核网络子系统里的传输路径是:pre-routingàroute(inorforward)à(out)àpost-routin

7、g。在netfilter上注册的钩子函数如下所示(这些钩子函数按它们被调用的顺序排列):--->PRE------>[ROUTE]--->FWD---------->POST------>Conntrack

8、Mangle^MangleMangle

9、Filter

10、NAT(Src)NAT(Dst)

11、

12、Conntrack(QDisc)

13、[ROUTE]v

14、INFilterOUTConntrack

15、Conntrack^Mangle

16、Mangl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。