一、iptables简介
iptables是一款基于Netfilter的Linux防火墙的管理工具,可实现完成封包过滤、封包重定向和网络地址转换(NAT)等功能。
二、iptables的基本概念
2.1、iptables的规则表
表(tables)
:提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理;链(chains)
:数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则;规则(rules)
:当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件,如果满足规则,系统就会根据该条规则所定义的方法处理该数据包,如果不满足规则,继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包;
2.2、iptables的规则链
PREROUTING链
:数据进入网卡,首先会进入PREROUTING链
,内核依据数据包的目的IP判断是否需要传送出去;FORWARD链
:数据包需要转发,并且内核允许转发,则该数据包经过该链,进入POSTROUTING链
;INPUT链
:数据包目的为本机,进入INPUT链
,本机的所有进程均可访问到该数据包;OUTPUT链
:本机的进程发送数据包至OUTPUT链
;POSTROUTING链
:数据包经过该链;
2.3、iptables的规则表与规则链的关系
2.3.1、规则表过滤数据包的优先顺序及介绍:
在REHL4
中是三张表五个链,在REHL5
成了四张表五个链。
Raw表
:链
:OUTPUT、PREROUTING;作用
:决定数据包是否被状态跟踪机制处理;内核模块
:iptable_raw;
Mangle表
:链
:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD;作用
:修改数据包的服务类型、TTL、并且可以配置路由实现QOS;内核模块
:iptable_mangle;
Nat表
:链
:PREROUTING、POSTROUTING、OUTPUT;作用
:用于网络地址转换(IP、端口);内核模块
:iptable_nat;
Filter表
:链
:INPUT、FORWARD、OUTPUT;作用
:主要用于过滤数据包;内核模块
:iptables_filter;
2.3.2、规则链之间的优先顺序(分三种情况):
第一种情况:入站数据流向
PREROUTING链
:从外界到达防火墙的数据包,先被PREROUTING规则链处理(是否修改数据包地址等);INPUT链
:数据包目标为本地,内核将其传给INPUT链进行处理(是否允许通过等),通过以后再交给系统上层的应用程序进行响应;
第二种情况:转发数据流向
PREROUTING链
:从外界到达防火墙的数据包,先被PREROUTING规则链处理(是否修改数据包地址等);FORWARD链
:数据包目标为其他外部地址,内核将其传递给FORWARD链进行处理(是否转发或拦截);POSTROUTING链
:之后交给POSTROUTING规则链(是否修改数据包的地址等)进行处理;
第三种情况:出站数据流向
OUTPUT链
:防火墙本机向外部地址发送的数据包,首先被OUTPUT规则链处理,之后进行路由选择;POSTROUTING链
:路由选择后传递给POSTROUTING规则链(是否修改数据包的地址等)进行处理;