iptables防火墙可以用于创建过滤(filter)与NAT规则。所有Linux发行版都能使用iptables,iptables的结构简单的说就是:iptables -> Tables-> Chains -> Rules,tables由chains组成,而chains又由rules组成。
iptables的表与链
iptables具有Filter, NAT, Mangle, Raw四种内建表和PREROUTING、OUTPUT、FORWARD、INPUT、POSTROUTING五个内建链。
使用“iptables -t 表名 -L”来查看表中包含的链
1. Filter表
Filter表示iptables的默认表,因此如果没有自定义表,那么就默认使用filter表,它具有以下三种内建链:
INPUT链 – 处理来自外部的数据。
FORWARD链 – 将数据转发到本机的其他网卡设备上。
OUTPUT链 – 处理向外发送的数据。
2. NAT表
NAT表有三种内建链:
PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destinationip address),通常用于DNAT(destinationNAT)。
POSTROUTING链 – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ipaddress),通常用于SNAT(source NAT)。
OUTPUT链 – 处理本机产生的数据包。
3. Mangle表
Mangle表用于指定如何处理数据包。它能改变TCP头中的QoS位。Mangle表具有5个内建链:
PREROUTING
OUTPUT
FORWARD
INPUT
POSTROUTING
4. Raw表
Raw表用于处理异常,它具有2个内建链:
PREROUTING chain
OUTPUT chain