在iptables用户链中返回跳转丢失 – 会发生什么?

我很难找出在用户定义的iptables链末端丢失RETURN规则的后果。 很明显,“iptables [missing] return [jump]”是真的很糟糕的关键字。

manpage和任何博客或howto我可以挖掘只告诉我什么-j RETURN做(这是显而易见的),但不是如果它缺less会发生什么。 另外,我似乎无法build立合理的实验规则来尝试…

 iptables -N userchainA iptables -A INPUT -j userchainA iptables -N userchainB iptables -A INPUT -j userchainB iptables -A INPUT -j ACCEPT iptables -A userchainA ... # anything here, that DOES NOT MATCH #### no explicit return from userchainA! iptables -A userchainB ... # anything here, that DOES NOT MATCH iptables -A userchainB -j RETURN 

根据这些规则,任何工作都可以。 数据包遍历所有链,并最终ACCEPT from INPUT就好像用户链A的(缺失) -j RETURN将隐含地完成。 这是这种情况吗?

为什么这个工作? 我会期待某种错误,或者至less有一条关于执行链下降的日志消息。

当iptables到达用户定义链的末尾时,stream程将返回到调用链中的下一个规则。 RETURN因此是隐含的; 它不需要明确给出。