iptables只是Linux防火墙的管理工具。实现防火墙功能的是netfilter,是内核中数据包处理模块;
功能:
网络地址转换NAT
数据包内容修改
数据包过滤等
四表:
filter表:负责包过滤功能,防火墙。
nat表:用于网络地址转换(IP、PORT)
mangle表:修改数据包的服务类型、TTL、并配置路由实现QOS
raw表:决定数据包是否被状态跟踪机制处理
五链:
PREROUTING:对数据包作路由选择前应用此链中的规则(所有的数据包进来的时候优先匹配)
INPUT:进来的数据包应用此规则链中的规则
FORWARD:转发数据包时应用此规则链中的规则
OUTPUT:外出的数据包时应用此规则链中的规则
POSTROUTING:对数据包作路由选择后应用此链中的规则(所有数据包出去的时候优先匹配)
表链关系:
配置iptables时,通常以表为入口,对规则进行定义。
表 <<-->> 链
filter:INPUT、FORWARD、OUTPUT
nat:PREROUTING、OUTPUT、POSTROUTING(centos7中有INPUT,centos6没有)
mangle:PREROUTING、INPUT、FORWARD
raw:PREROUTING、OUTPUT
优先级:
当链处于多张表的时候执行优先级:
由高到底:raw -->> mangle -->> nat -->> filter
#只有OUTPUT可以同时处于4张表。
规则:
根据制定的匹配条件来尝试匹配每个报文,匹配成功,由处理动作处理。
匹配条件:
源地址source IP、目的地址destination IP、源端口source Port、目的端口destination Port
处理动作:
ACCEPT:允许数据包通过
DROP:直接丢弃数据包,不给任何回应信息
REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息
SNAT:源地址转换,解决内网用户用同一个公网地址上网的问题
MASOUERADE:是SNAT的一种特殊形态,用于动态和临时会变的ip上
DNAT:目的地址转换
REDIRECT:在本机作端口映射
LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则;仅仅作记录,让其匹配下一条规则。
流程: