iptables 如何执行规则?

iptables 如何执行规则?

最近,我遇到了防火墙阻止两台服务器之间的通信的问题,我想检查 iptables 如何处理应用于同一 IP 的多个规则。如果我运行,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 的所有流量都会被丢弃吗?

答案1

很难说,因为您没有显示这些规则适用于哪些连锁店。

简单地说:对于防火墙,你必须从 FORWARD 链开始,并遵循按顺序匹配的所有规则,直到你遇到 ACCEPT、DROP 或 REJECT

如果您以这种方式到达所有规则的末尾,则 FORWARD 的默认策略将适用。

答案2

运行iptables -L -n不会为您提供规则可能已定义为条件的接口名称。具有不同目标的规则可能针对不同的接口进行条件处理,除非它们已被写入 A)匆忙 b)由心不在焉的管理员 C)作为某事的临时解决办法或 d)上述所有的

改用iptables -L -v -n

回答你的问题:数据包的命运取决于第一的匹配规则带有一个终端目标(ACCEPT 和 DROP 就是这样的目标,但还有其他目标,如 RETURN,它们不是终端,因此处理会继续)。如果没有这样的规则,则应用链默认策略,这是ACCEPT默认的,可以通过 进行更改iptables -P <ACCEPT, DROP>

这个相当不错的工作流程文档了解详情。

答案3

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

iptables 中数据包遍历的完整图如下:http://www.frozentux.net/iptables-tutorial/images/tables_traverse.jpg

相关内容