Netfilter工作的位置
Netfilter是以模块的方式存在于Linux中,每当Linux多一个Netfilter的模块就代表着Linux防火墙的功能多了一项,当然其功能也随之增加。其中/lib/modules/2.6.18-164.el5/kernel/net/ipv4/netfilter目录下所存放的模块只能工作在IPv4的网络环境下;如下图所示:
/lib/modules/2.6.18-164.el5/kernel/net/ipv6/netfilter目录下所存放的模块只能工作在IPv6的网络环境下,如下图所示:
以上的两个目录的模块有个共同的特性, 都与“协议”有关, 因此,在使用这些模块时,必须特别留意哪些模块只能使用在哪个协议下。Linux自2.6.14版本开始, 其内含的Netfilter模块在设计上有了重大的改变,Netfilter组织希望模块与“协议”无关,所以就目前情况看来已有部份模块可以达到这样的要求其路径为/lib/modules/2.6.18-164.el5/kernel/net/netfilter如下图所示:
了解了Netfilter的结构后应该清楚以上的模块只是提供了某些过滤匹配的功能而已,如果我们希望Netfilter能为我们做些事,那我们就需给Netfilter执行“规则”,有了规则后,Netfilter才会知道哪些封包是可以被接受的,哪些封包是必须除掉的, 又有哪些封包是必须以特殊方式来处理的。而给予Netfilter规则的方式则是将规则填入到一块有结构性的内存中,这样,Netfilter就会依照防火墙管理人员所给的命令来执行。该内存就是俗称的表,表是防火墙的最大集合,包含链和规则;表包括filter table过滤表;nat用于地址转换;mangle俗称矫正表和RAW表。链则是规则的集合。
匹配:满足的条件,如源地址,端口等。
方法:对条件做出处理,accept,drop等。
Filter表是Netfilter内最为重要的机制,其任务为执行数据包的过滤动作,也就是防火墙的功能;包含INPUT、OUTPUT和FORWARD链,用于处理输入、输出和转发包。filter表是缺省的表。
NAT(Network Address Translation)也是防火墙上一个不可或缺的重要机制,它的功能类似于IP分享器,只是相应功能更加强大。用于处理网络地址翻译。(包含与masquerading 相关的功能);包含PREROUTING(路由前);POSTROUTING(路由后)OUTPUT 输出(很少用到)共3个链。
Mangle表用于处理特殊包的矫正,包含两个链PREROUTING (路由前),POSTROUTING(路由后)。在流量控制和Qos应用中,经常会用到mangle表。