注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

BCB-DG's Blog

...

 
 
 

日志

 
 

Linux Netfilter 分析一  

2013-10-04 15:19:50|  分类: Linux |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
//轉
一、概述
    1.Netfilter/IPTables框架简介              2.主要源代码文件

二、Netfilter/IPTables-IPv4总体架构
    1.Netfilter的HOOK机制                2.IPTables基础模块         3.具体功能模块

三、HOOK的实现
    1.Netfilter-IPv4中的HOOK          2.HOOK的调用
    3.HOOK点的实现                  4.HOOK的注册和注销

四、IPTables系统
    1.表-规则系统         2.表的实现          3.规则的实现
    4.规则的使用          5.规则的扩展

五、数据报过滤模块——filter表
    1.概述         2.filter表的定义和初始化           3.filter表的实现

六、连接跟踪模块(Conntrack)
    1.概述         2.连接状态的管理     
    3.连接跟踪的实现          4.协议的扩展

七、网络地址转换模块(Network
Address Translation)
    1.概述         2.基于连接跟踪的相关数据结构
    3.nat表的实现            4.协议的扩展

八、数据报修改模块──mangle表
    1.概述           2.mangle表的实现            3.数据报的修改
 
九、其它高级功能模块

Netfilter分析


一、概述
1. Netfilter/IPTables框架简介

          Netfilter/IPTables是继2.0.x的IPfwadm、2.2.x的IPchains之后,新一代的Linux防火墙机制。 Netfilter采用模块化设计,具有良好的可扩充性。其重要工具模块IPTables连接到Netfilter的架构中,并允许使用者对数据报进行过 滤、地址转换、处理等操作。

         Netfilter提供了一个框架,将对网络代码的直接干涉降到最低,并允许用规定的接口将其他包处理代码以模块的形式添加到内核中,具有极强的灵活性。
2. 主要源代码文件

Linux内核版本:2.4.21

Netfilter主文件:net/core/netfilter.c

            Netfilter主头文件:include/linux/netfilter.h

IPv4相关:

                      c文件:net/ipv4/netfilter/*.c

         头文件:include/linux/netfilter_ipv4.h

                                      include/linux/netfilter_ipv4/*.h

IPv4协议栈主体的部分c文件,特别是与数据报传送过程有关的部分:

                        ip_input.c,ip_forward.c,ip_output.c,ip_fragment.c等


二、Netfilter/IPTables-IPv4总体架构

        Netfilter主要通过表、链实现规则,可以这么说,Netfilter是表的容器,表是链的容器,链是规则的容器,最终形成对数据报处理规则的实现。

   详细地说,Netfilter/IPTables的体系结构可以分为三个大部分:
1. Netfilter的HOOK机制

        Netfilter的通用框架不依赖于具体的协议,而是为每种网络协议定义一套HOOK函数。这些HOOK函数在数据报经过协议栈的几个关键点时被调用,在这几个点中,协议栈将数据报及HOOK函数标号作为参数,传递给Netfilter框架。

         对于它在网络堆栈中增加的这些HOOK,内核的任何模块可以对每种协议的一个或多个HOOK进行注册,实现挂接。这样当某个数据报被传递给 Netfilter框架时,内核能检测到是否有任何模块对该协议和HOOK函数进行了注册。若注册了,则调用该模块的注册时使用的回调函数,这样这些模块 就有机会检查、修改、丢弃该数据报及指示Netfilter将该数据报传入用户空间的队列。

    这样,HOOK提供了一种方便的机制:在数据报通过Linux内核的不同位置上截获和操作处理数据报。
2. IPTables基础模块

        IPTables基础模块实现了三个表来筛选各种数据报,具体地讲,Linux2.4内核提供的这三种数据报的处理功能是相互间独立的模块,都基于 Netfilter的HOOK函数和各种表、链实现。这三个表包括:filter表,nat表以及mangle表。
3. 具体功能模块

数据报过滤模块

连接跟踪模块(Conntrack)

网络地址转换模块(NAT)

数据报修改模块(mangle)

其它高级功能模块

于是,Netfilter/IPTables总体架构如图所示

http://blog.chinaunix.net/photo/24896_061206192251.jpg

  评论这张
 
阅读(383)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017