iptables规则的查看、添加、删除和修改[教程]
在 Linux 中 iptables 实际上只是一个操作 Linux 内核 Netfilter 子系统的“界面”。顾名思义,Netfilter 子系统的作用,就是 Linux 内核里挡在“网卡”和“用户态进程”之间的一道“防火墙”。 也就是说 iptables 工作在用户态,它和我们平时开发的应用程序完全一样的,只是它的作用是用来操作 NetFilter 的一个工具。而 NetFilter 工作在内核态,它们的关系,可以用如下的示意图来表示:
图来自极客时间
在 iptables 中存在四表五链的概念。
表分别为 filter、nat、raw、mangle ,当数据包抵达防火墙时,将依次应用 raw、mangle、nat、和 filter 表中对应链内的规则,其中表的应用顺序为:raw -> mangle -> nat -> filter,而表中链的规则自上向下依次执行,执行中有可能跳转到其它链中继续执行。
iptables Processing Flowchart
如果按七层网络协议的话,则 ipables 中的数据流向为
(来自Netfilter 官方的原理图)Packet flow in Netfilter and General Networking
其中每一层又分为”INPUT PATH“、“FORWARD PATH” 和 “OUTPUT PATH” 三种。对于”INPUT PATH” 和 “OUTPUT PATH“包含四个表,而对于” FORWARD PATH“而言只包含两个表。
如果想查看指定类型的表通过 -t 参数指定,如
$ iptables -t nat -L
可以显示所有 nat 表的规则,如果不指定 -t 参数,则默认只显示 filter 表规则。
By admin
read more

