IPTABLES架构

iptables使用netfilter架构,在linux内核中管理报文过滤。iptables使用一种涉及内核和数据报文的完整架构,这种数据内核框架中被称为表,涉及的表有三种:
 
1.报文数据过滤表(fileter表);
 
2.网络地址转换表(NAT表);
 
3.报文数据修复表(mangle表)。
 
所有的数据都将流经这三个表中的至少一个表。这种数据包处理机制用于实现数据报过滤、网络地址转换及数据报处理。netfilter架构如图:



上图中可见每个表中又包含链和规则。每个规则还包含规则标准、规则对象和规则操作。当规则对象完全符合标准时,操作便会应用于报文。
 
fliter表不会修改数据报,而只对数据报文进行过滤。因此filter表中包含的INPUT、FORWARD、及OUTPUT三个链不包含的功能,全部是过滤作用。其中INPUT链包含着用来检测过滤入站数据报文的规则。FORWARD链负责处理正在转发的信息包的规则。OUTPUT链包含用来检测过滤出站数据报文的规则。
 
NAT表的主要作用是进行网络地址转换器,即转换数据报文中的IP地址,也称之为IP伪装。NAT表PREROUTING、POSTROUTING及OUTPUT三个链,其中PREROUTING包含路由前的规则,转换需要转发数据包的目的地址,POSTROUTING包含路由后的规则,转换需要转发的数据报的源地址。对于本地数据报目的地址的转换,则由OUTPUT来实现。
 
mangle表的主要作用是可以实现路由前对数据报文的报头的修改,或者给数据报文附上一些外带数据。mangle表有两种链:PREROUTING和OUTPUT。
 
注意:
 
数据包一到达防火墙就改变它们的规则组成的是PREROUTING链,数据包在离开防火墙时才改变它们的规则组成的是POSTROUTING链。