这篇文章上次修改于 2354 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
iptables 结构:
五链:
链的作用:容纳各种防火墙规则,相当于容器
链的分类依据:处理数据包的不同时机
系统默认自带的5种规则链:
INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
POSTROUTING:在进行路由选择后处理数据包(出站过滤)
PREROUTING:在进行路由选择前处理数据包(入站过滤)
注:POSTROUTING、PREROUTING在做NAT时所使用
四表:
表的划分依据:和链相似,按功能进行划分
默认包括4个规则表:
raw表:包含了
PREROUTING
和OUTPUT
在这里进行跟踪。
mangle表:包含了:
PREROUTING
,INPUT
,FORWARD
,OUTPUT
,POSTROUTING
。
在这里做标记。
nat表:包含了:
PREROUTING
,INPUT
,OUTPUT
,POSTROUTING
.
在这里进行ip或端口修改。
filter表:包含了
INPUT
、FORWARD
、OUTPUT
.
在这里进行过滤数据。
(默认使用filter。raw:优先级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能)
状态
4大包状态:INVALID,ESTABLISHED,NEW和RELATED
动作
处理动作除了 ACCEPT、REJECT、DROP、REDIRECT 和 MASQUERADE 以外,还多出 LOG、ULOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、TOS、TTL、MARK 等
包流程
iptables和策略路由类似,先链后表,在链路上分别顺序查表做匹配.
规则表之间的顺序:raw→mangle→nat→filter,即先做状态跟踪→在做标记→在做修改源目IP或端口→在做是否过滤
规则链之间的顺序:
入站:PREROUTING→INPUT 路由前发现是自己的,直接进站
出站:OUTPUT→POSTROUTING
转发:PREOUTING→FORWARD→POSTROUTING
注意:PREROUTING和POSTROUTING是最外围,规则链是靠时机分的,分为了入站,出站,转发三个时机
规则链内的匹配顺序:
按顺序依次检查,匹配即停止(LOG策略外)
若找不到相匹配规则,按该链的默认策略处理
以本机为目标地址的包:
入站:数据包发来,路由前,先做跟踪,再做标记,修改,查看路由,如果是发往本机的直接往上走,进站前标记,然后出站过滤
出站:出站和路由后,指的是最上面的路由选择,本机选择之后先经过跟踪→标记→修改→是否过滤,出站之后是mangle表的路由后→nat表的路由.
PREROUTING(raw,mangle,nat,filter)
POSTROUTING(raw,mangle,nat,filer)
路由转发包:
转发:数据进来以后,经过路由前raw、mangle、nat,路由前完成之后进行选择,发现此数据是需要发到别的地方,非本地,通过forward,经过mangle的forward,filter的forward,还要经过路由后标记、修改IP及端口,结束
PREROUTING(raw,mangle,nat,filter)
FORWARD(mangle,filter)
POSTROUTING(raw,mangle,nat,filer)
dnat/snat
iptables -t nat -A POSTROUTING -d 192.168.0.101 -j SNAT --to 192.168.0.1
iptables -t nat -A PREROUTING -d 202.202.202.1 -j DNAT --to-destination 192.168.0.101
参考
https://www.frozentux.net/iptables-tutorial/cn/iptables-tutorial-cn-1.1.19.html
没有评论