我无法找出用户定义的 iptables 链末尾缺少 RETURN 规则的后果是什么。显然,“iptables [missing] return [jump]”确实是非常糟糕的关键字。
联机帮助页和我可以挖掘的任何博客或 howto 只是告诉我做了什么-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
Run Code Online (Sandbox Code Playgroud)
鉴于这些规则,任何事情都可以正常工作。数据包穿过所有链并最终命中,ACCEPT from INPUT就好像(丢失的)-j RETURN来自userchainA将隐式完成。是这种情况吗?
为什么这是有效的?我会期望某种错误或至少是关于链执行下降的日志消息。
当 iptables 到达用户定义链的末端时,流程将返回到调用链中的下一个规则。因此 RETURN 是隐式的;不需要明确给出。
| 归档时间: |
|
| 查看次数: |
3559 次 |
| 最近记录: |