iptables如何执行规则?

我一直在防火墙阻塞最近两台服务器之间的stream量一些麻烦,并希望检查iptables如何处理多个规则适用于相同的IP。 如果我运行iptables -L -n | grep 1.2.3.4 iptables -L -n | grep 1.2.3.4我看到这个输出:

 ACCEPT all -- 1.2.3.4 0.0.0.0/0 DROP all -- 1.2.3.4 0.0.0.0/0 ACCEPT all -- 0.0.0.0/0 1.2.3.4 DROP all -- 0.0.0.0/0 1.2.3.4 

iptables将如何处理这些规则? 所有来自1.2.3.4的stream量是否会被丢弃?

很难说,因为你不显示这些规则适用于哪些链。

轻松地说:对于防火墙,你必须先从FORWARD链开始,遵循所有按顺序匹配的规则,直到你点击一个ACCEPT,DROP或REJECT

如果以这种方式达到所有规则的结尾,则应用FORWARD的默认策略。

运行iptables -L -n不会为您提供规则可能已定义为条件的接口名称。 与不同目标相似的规则可能适用于不同的接口,除非他们已经写一个匆忙的b)由一个心不在焉的pipe理员c)作为临时解决方法,或者d)所有上述

改用iptables -L -v -n

回答你的问题:数据包命运是由第一个匹配的规则与terminal目标决定的(ACCEPT和DROP是这样的目标,但是还有其他的像RETURN那些不是terminal的,所以处理继续)。 如果不存在这样的规则,则默认应用默认策略ACCEPT ,可以通过iptables -P <ACCEPT, DROP>

详情请参阅这个相当不错的工作stream程文档

理解iptables规则集的我个人最喜欢的是命令iptables-save ,它将所有规则转储到stdout。 这有助于得到正确的规则顺序的想法。

在iptables中的数据包遍历的完整图片在这里: http : //www.frozentux.net/iptables-tutorial/images/tables_traverse.jpg