Netfilter框架.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Netfilter是linux2.4内核实现数据包过滤/数据包处理/NAT等的功能框架。该 文讨论了linux 2.4内核的netfilter功能框架,还对基于netfilter框架上的 包过滤,NAT和数据包处理(packet mangling)进行了讨论。阅读本文需要了解 2.2内核中ipchains的原理和使用方法作为预备知识,若你没有这方面的知识, 请阅读IPCHAINS-HOWTO。 第一部分:Netfilter基础和概念 一、什么是Netfilter Netfilter比以前任何一版Linux内核的防火墙子系统都要完善强大。Netfilter 提供了一个抽象、通用化的框架,该框架定义的一个子功能的实现就是包过滤 子系统。因此不要在2.4中期望讨论诸如如何在2.4中架设一个防火墙或者伪 装网关这样的话题,这些只是Netfilter功能的一部分。Netfilter框架包含 以下三部分: 1 为每种网络协议(IPv4、IPv6等)定义一套钩子函数(IPv4定义了5个钩子函 数),这些钩子函数在数据报流过协议栈的几个关键点被调用。在这几个点中, 协议栈将把数据报及钩子函数标号作为参数调用netfilter框架。 2 内核的任何模块可以对每种协议的一个或多个钩子进行注册,实现挂接,这 样当某个数据包被传递给netfilter框架时,内核能检测是否有任何模块对该 协议和钩子函数进行了注册。若注册了,则调用该模块的注册时使用的回调函 数,这样这些模块就有机会检查(可能还会修改)该数据包、丢弃该数据包及指 示netfilter将该数据包传入用户空间的队列。 3 那些排队的数据包是被传递给用户空间的异步地进行处理。一个用户进程能 检查数据包,修改数据包,甚至可以重新将该数据包通过离开内核的同一个钩 子函数中注入到内核中。 所有的包过滤/NAT等等都基于该框架。内核网络代码中不再有到处都是的、混 乱的修改数据包的代码了。当前netfilter框架在IPv4、IPv6及Decnet网络栈 中被实现。 二、为什么需要Netfilter? 其实这个问题也可以变为ipchains有什么缺点导致被抛弃?下面只是其中的几 个原因: 因为基于2.2内核的ipchains没有提供传递数据包到用户空间的框架,所以任 何需要对数据包进行处理的代码都必须运行在内核空间,而内核编程却非常复 杂,而且只能用C语言实现,并且容易出现错误并对内核稳定性造成威胁。 透明代理实现非常复杂,必须查看每个数据包来判断是否有专门处理该地址的 socket。网络栈代码中在11个文件中共出现了34个#ifdef条件编译。 创建一个不依赖于接口地址的数据报过滤规则是不可能实现的。我们必须利用 本地接口地址来判断数据报是本地发出、还是发给本地的或是转发的。转发链 只有输出接口的信息,因此管理员必需考虑数据报的源。 伪装和数据包过滤都在同一个模块内实现,导致防火墙代码过于复杂。 IPchains代码即不模块化又不易于扩展(例如对mac地址的过滤) 三、Netfilter的作者 Netfilter框架的概念的提出及主要实现是由Rusty Russell完成的,他是ipchains 的合作完成者及当前linux内核IP防火墙的维护者。还有Marc Boucher、James Morris、Harald Welte等都参与了Netfilter项目。 四、Netfilter在IPv4中的结构 一个数据包按照如下图所示的过程通过Netfilter系统: ---[1]---[ROUTE]---[3]---[4]--- ? ?? ?? ?? ? |? ?? ?? ?? ?? ?^ ? ?? ?? ?? ? |? ?? ?? ?? ?? ?| ? ?? ?? ?? ?local? ?? ?? ?? ?| ? ?? ?? ?? ? |? ?? ?? ?? ? [ROUTE] ? ?? ?? ?? ? v? ?? ?? ?? ?? ?| ? ?? ?? ?? ?[2]? ?? ?? ?? ? [5] ? ?? ?? ?? ? |? ?? ?? ?? ?? ?^ ? ?? ?? ?? ? |? ?? ?? ?? ?? ?| v | 从图中可以看到IPv4一共有5个钩子函数,分别为: 1 NF_IP_PRE_ROUTING 2 NF_IP_LOCAL_IN 3 NF_IP_FORWARD 4 NF_IP_POST_ROUTING 5 NF_IP_LOCAL_OUT 数据报从左边进入系统,进行IP校验以后,数据报经过第一个钩子函数NF_

文档评论(0)

精华文档888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档