iptables 根据不同的数据包过滤处理功能来使用不同的规则表,下面分别看看这三个表能对数据包做哪些
过滤的处理:
filter:过滤数据包的功能上可以针对:
INPUT:传送到本机的封包
OUTPUT::从本机传送出去的封包
FORWARD:经过本机路由传动给别人的封包
三个规则链设定过滤条件
nat:网络地址转换的功能上,可以针对:
PREROUTING:所有收到的数据包,包括传给本机的和经过本机路由传动给别人的数据包。
OUTPUT:从本机传送出去的数据包
POSTROUTING:所有从本机出去,包括从本机传送出去的数据包和经过本机路由传送给别人的数据包
三个规则链设定过滤条件
mangle:改变数据包的内容的功能上,可以针对:
PREROUTING:所有收到的封包,包括传给本机的和经过本机路由传动给别人的封包
OUTPUT:从本机传送出去的封包
三个规则链设定过滤条件,来设定要改变的封包的内容
-----------------------------
明白了以上的规则链后,再来看看 netfilter 过滤数据包的流程
当一个数据包从网卡进入之后,首先会经过 PREROUTING,数据包经过 PREROUTING 的处理后,系统
才会判断这个数据包的目的地。是送到本机的数据包,还是只是经过本机路由的数据包。
1、如果要路由到其他主机封包的话,就或经过 FORWARD,并判断在 FORWARD 有没有过滤条件,数
据包经过 FORWARD 的处理后,在送到 POSTROUTING,并判断在 POSTROUTING 中有没有过滤条件,
经 POSTROUTING 处理后,数据包从另一个网卡传送出去。
如图 02 所示:
2、如果数据包送到本机,则会经过 INPUT,并判断在 INPUT 中有没有过滤条件,依据数据包中的内容,
传送到相关的服务器使用的端口,当这个数据包处理完成之后,系统会回应一个报数据包给来源的主机,
这个时候会经过 OUTPUT,并判断 OUTPUT 中有没有相应的过滤条件,经过 OUTPUT 的处理后,在送到
POSTROUTING,并判断在 POSTROUTING 中有没有过滤条件,经过 POSTROUTING 处理后,数据包
从另一个网卡传送出去。
如图 03 所示: