iptables中的链是什么?

iptables中的链是什么?

Iptables 用于在 Linux 内核中设置、维护和检查 IPv4 数据包过滤规则表。可以定义几个不同的表。每个表包含许多内置链,也可能包含用户定义的链。

每个是可以匹配一组数据包的规则列表。每个规则指定如何处理匹配的数据包。这称为“目标”,它可能是跳转到同一个表中的用户定义链。

如何理解链的概念?

一条链是一个固定的规则列表吗?

我该如何定义/指定和使用链?例如,

-A, --append chain rule-specification

将一个或多个规则附加到所选链的末尾。当源名称和/或目标名称解析为多个地址时,将为每个可能的地址组合添加一条规则。

下面的命令中是INPUT一个链的名称吗?这是我可以随意起的名字吗?这条链是否恰好有两条规则?谢谢。

iptables -A INPUT -p tcp -s localhost --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j DROP

答案1

iptables 链只是按顺序处理的规则列表。它们可以是固定内置的之一(默认表中的INPUTOUTPUT、表中的其他一些),也可以是用户定义的,然后可以从其他表中调用。FORWARDfilternat

正如-A(追加)、-I(插入)和-D(删除)命令所暗示的那样,链中的规则是可以自由编辑的,它们不是固定的。

下面的命令中是INPUT链的名称吗?

是的。

这是我可以随意起的名字吗?

那个不是,它是内置链,包含进入系统的数据包规则(目的地是主机上运行的进程)。默认表中的另外两个filterOUTPUT(显然来自系统的数据包)和FORWARD(路由数据包)。

手册页iptables(8)有表及其内置链的描述(在 下TABLES)。

当然,您可以将输入数据包的任何规则放置在任意用户定义的链中,然后您只需添加一条规则来INPUT引用该链。 (例如,iptables -A INPUT -j mychain将跳转到mychain并处理那里的任何规则。)

这条链是否恰好有两条规则?

我们不知道这一点。这两个命令附加链上有两条规则。但在运行这些命令之前可能还有其他命令已经存在。

如果您iptables -F INPUT在这两个规则之前有第一个命令,那么结果将是只剩下这两个规则。

也可以看看:iptables表和链是如何遍历的其中包含您不需要了解的所有内容的链接,例如 https://stuffphilwrites.com/2014/09/iptables-processing-flowchart/。 (您可能想忽略rawmangle表开始,它们是经常需要的。)

相关内容