netfilter框架及基本原理介绍.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  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文档。上传文档
查看更多
http:// HYPERLINK "" 最新最全IT科技资讯 Netfilter/IPTables框架简介 Netfilter/IPTables是继2.0.x的IPfwadm、2.2.x的IPchains之后,新一代的Linux防火墙。Netfilter采用模块化设计,具有良好的可扩展性,其重要工具模块IPTables连接到Netfilter的架构中,并允许使用者对数据报进行过滤、地址转换等处理操作。Netfilter提供了一个框架,将对网络的直接干涉降到最低,并允许规定接口将其它包处理代码以模块的形式添加到内核中,具有极强的灵活性。 Netfilter总体架构 Netfilter主要通过表、链实现规则,可以这么说,Netfilter是表的容器,表是链的容器,链是规则的容器,最终形成对数据报处理规则的实现。 Netfilter的通用框架不依赖于具体的协议,而是为每种网络协议定义一套HOOK函数,这些HOOK函数在数据报经过协议栈的几个关键点时被调用,这样这些模块就有机会检查、修改、丢弃该数据报及指示Netfilter将该数据报传入用户空间的队列。 Netfilter定义了五大HOOK,分别是:NF_IP_PRE_ROUTING、NF_IP_LOCAL_IN、NF_IP_FORWARD、NF_IP_LOCAL_OUT、NF_IP_POST_ROUTING.,每个HOOK对应一个操作链,分别是:PREROUTING 、INPUT 、FORWARD 、OUTPUT 、 POSTROUTING。 数据报在进入系统,进行IP校验以后,首先经过第一个HOOK函数NF_IP_PRE_ROUTING时行处理;然后就进入路由代码,其决定该数据报需要转发还是发给本机;若数据报是发给本机,则该数据经过HOOK函数NF_IP_LOCAL_IN处理以后传递给上层协议; 若该数据报应该被转发则它被NF_IP_FORWARD处理;经过转发的数据报经过最后一个HOOK函数NF_IP_POST_ROUTING.处理以后,再传输到网络上。本地产生的数据报经过HOOK函数NF_IP_LOCAL_OUT处理后,进行路由选择处理,然后经过NF_IP_POST_ROUTING处理发送到网络。如下图 1(摘自网络) 所示。 (图1) 上图中的两个ROUTE环节是Linux内核中强大的路由代码,去掉5个HOOK之后,我们可以看到Netfilter没有出现之前内核的数据路由体系结构 IPTables IPTables工具模块提供了三个表,分别是filter,nat和mangle,每个表有不同的操作链(chains),对应到Netfilter框架就是各个HOOk函数。在filter表中定义了三个链,分别是INPUT、FORWARD、OUTPUT,也就是对数据报的入,转发、出定义了三个过滤链。在nat表中定义了PREROUTING、POSTROUTING、OUTPUT三个链。而在mangle表是一个自定义的表,里面包括上面filter和nat表中的各种链,它可以让我们自定义一些操作,同时这些chains在Netfilter对包的处理流程中处于一个比较优先的位置。如下图2 (摘自网络) 所示: (图2) 此图正跟图1对应,HOOK监听不同的表,一个HOOK可能分很多步骤对三个表中的至少一个表进行操作, 表的作用 1、Mangle 表主要用来修改包的报头,有四种操作:TOS(服务类型,IP报头),TTL(生存时间,IP报头),MARK(sbk 的nfmark域设置的值)MSS(最大数据报长度,tcp报头)。 2、NAT 表用作nat,也就是转换包的源或目标地址,注意:只有流的第一个包会被这个链匹配,其后的包会自动被做相同处理。实际操作可分:DNAT(目标网络地址转换),SNAT(源网络地址转换),MASQUERADE(定义伪装)。 DNAT 改变的是目的地址,以使能重路由到某台主机。 SNAT 改变包的源地址,这在极大程序上可以隐藏你的本地网络或DMZ等。如果使用类似192,168,0.1/24这样的地址,是不会从Internet得到任何回应的,因为IANA定义这些网络为私有的,只能用于LAN内部。 MASQUERADE 对于每个匹配的包都是要查找可用的IP地址,而不像SNAT用的ip地址是配置好的。 3、filter 数据报过滤,在数据报传递的关键点上对其时行过滤。 Ipvs 和Netfilter的关系 Ipvs基本上是一种高效的Layer-4交换机,它提供负载平衡功能,当一个Tcp连接的初始SYN报文到达时,ipvs就选择一台服务器,将报文转发给它。此后通过查发报文的IP和Tcp报文头地址,保证此连接的后继报文被转发到相同的服务,不管请

文档评论(0)

文档终结者 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档