概述
iptables 实际就是操作内核上的netfilter框架的工具而已,实际linux上iptables没有守护进程的
netfilter功能:
1. 能够nat IP地址
2. 修改数据包
3. 过滤数据包
iptable的组成
匹配条件
原地址匹配 目标地址匹配 端口匹配等等
处理的动作
ACCEPT:允许通过
DROP:直接丢弃包
REJECT:拒绝
SNAT :原地址转换
MASQUERADE:地址伪装
DNAT:目标地址转换
REDIRECT:重定向
LOG:报文日志
1.规则:由原地址,目标地址以及动作等组成(简单地说是由匹配条件和动作组成)
例如
[root@fabric-cli ~]# iptables -t filter -xvnL FORWARD
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DOCKER-ISOLATION all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- docker0 docker0 0.0.0.0/0 0.0.0.0/0
0 0 DOCKER all -- * br-fd272a190cba 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * br-fd272a190cba 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- br-fd272a190cba !br-fd272a190cba 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- br-fd272a190cba br-fd272a190cba 0.0.0.0/0 0.0.0.0/0
0 0 DOCKER all -- * br-589a9484e2fc 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * br-589a9484e2fc 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- br-589a9484e2fc !br-589a9484e2fc 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- br-589a9484e2fc br-589a9484e2fc 0.0.0.0/0 0.0.0.0/0
2.链:由规则组成的集合称为链
包含自定义和默认的链
默认的链有:PREROUTING INPUT OUTPUT FORWARD POSTROUTING
规则和表的具体表现形象,如下图
3.表:具有相同规则组成的集合
raw–关闭nat表上的链路跟踪器
mangel–修改报文信息
nat–网络地址转换
filter–负责过滤
表链关系
这幅图表示PREROUTING只允许在nat raw mangle表中出现
PREROUTING--允许存在于表raw mangle nat中
INPUT -- 允许存在于表mangle filter
FORWARD--mangle filter
OUTPUT--raw mangle nat filter
POSTROUTING--mangle nat
raw --PREROUTING OUTPUT
mangle--PREROUTING INPUT FORWARD OUTPUT POSTROUTING
nat --PREROUTING OUTPUT POSTROUTING
filter--INPUT FORWARD OUTPUT
报文流经表的优先级从高往低走
raw--->mangle--->nat--->filter
报文流向示意图
到本机某进程报文流向:PREROUTING–>INPUT
到本机转发的报文流向:PREROUTING–>FORWARD–>POSTROUTING
由本机某进程发出的报文:OUTPUT–>POSTROUTING
参考
iptables学习