在Linux内核中处理网络数据包的子系统是Netfilter,Netfilter是内核组件,iptables是用来配置Netfilter的用户空间的工具。
iptables从字面意义看是指ip tables,这些tables按功能划分为Filtering,NAT,Mangling三种,每一种都有一个packet flow,每个packet flow包含一些chains(hook points),每个chain上包含一系列数据包处理的Rules,每个Rule包含匹配条件和目标动作。
chains和每个table的packet flow并不是一一对应的关系,三个tables的packet flow如下: