控制 iptables RETURN 的深度(或者如何跳过链)

控制 iptables RETURN 的深度(或者如何跳过链)

我对 iptables 进行了以下设置

INPUT
    ParentChain
        ChildChain1
        ChildChain2

   ... More Rules on INPUT ....

我怎样才能在 ParentChain 之后从 ChildChain1 返回到 INPUT?据我了解,从 ChildChain1 返回的目标将在 ChildChain2 进入 ParentChain?我怎样才能返回 2 个级别?

我的理解是,如果我跳转到输入并且没有匹配项,我最终会回到 ChildChain1(并最终到达 ChidlChain2,我本质上是想跳过它)

答案1

我同意@Glueon 的观点,你确实应该重新考虑你的 iptables 规则,因为它看起来不必要地复杂。

话虽如此,一种方法来做你想做的事。我仅举一个例子:

-A INPUT <some_matches_here> -j ParentChain
...
-A ParentChain <some_matches_here> -g ChildChain1
...

交换机-g命令netfilter执行GOTO而不是JUMP到目标链。因此,过滤分支到 ChildChain1 时的“调用堆栈”仍记录INPUT为“调用链”。在 ChildChain1 的末尾,如果没有匹配导致“终止目标”,则 netfilter 将恢复到 INPUT 链。

笔记:我实际上还没有测试过这一点,但根据我的了解iptables,它应该可以那样工作。

相关内容