iptables 用户链中缺少 RETURN 跳转 - 会发生什么?

iptables 用户链中缺少 RETURN 跳转 - 会发生什么?

我完全无法找出用户定义的 iptables 链末尾缺少 RETURN 规则的后果。显然,“iptables [missing] return [jump]” 是真正糟糕的关键字。

我能找到的手册页和任何博客或操作指南都只是告诉我该怎么-j RETURN做(这很明显),但没有告诉我如果缺少它会发生什么。另外,我似乎无法设置合理的实验规则来尝试它……

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就好像(缺失的)-j RETURN来自userchainA会隐式完成一样。是这样吗?

为什么这样做有效?我本来以为会出现某种错误,或者至少会出现一条有关执行链失败的日志消息。

答案1

相关内容