iptables和RETURN目标


16

我不了解RETURNiptables命令中目标的作用。

怀疑来自本指南中的内容:

链是对数据包进行顺序检查的一组规则。当数据包与规则之一匹配时,它将执行关联的操作,并且不会根据链中的其余规则进行检查。

因此,如果数据包与某个规则匹配并且停止检查其他规则,为什么我需要一个RETURN

例如,我在互联网上找到了这个:

iptables -A PREROUTING -t mangle -i wlan0 -s 192.168.1.10 -j MARK --set-mark 30;
iptables -A PREROUTING -t mangle -i wlan0 -s 192.168.1.10 -j RETURN;

我为什么需要RETURN?如果数据包与第一个规则匹配,则它将自动停止执行其他规则。

Answers:


33

包穿越链直到他们打ACCEPTDROPREJECT,或RETURN。除非该比赛包含终止动作,否则他们不会停止比赛。在您的示例中,将标记与第一个规则匹配的数据包,但随后将由第二个规则检查(并可能对其进行处理)。

仅作为参考,以下是手册页中的相关部分:

防火墙规则指定数据包和目标的条件。如果数据包不匹配,则检查链中的下一个规则;否则,将检查规则。如果它不匹配,则下一个规则是由目标的值,其可以是用户定义的链的名称或特殊值中的一个指定的ACCEPTDROP[,REJECT],QUEUERETURN

  • ACCEPT 表示让数据包通过。
  • DROP 表示将数据包丢在地板上,即丢弃它而不发送任何响应
  • [ REJECT用于响应匹配的数据包而发送回一个错误数据包;否则,它等同于DROP因此是终止TARGET,结束规则遍历。
  • QUEUE 表示将数据包传递到用户空间。
  • RETURN表示停止遍历此链,并在上一个(调用)链中的下一个规则处恢复。如果已达到内置链的末尾或具有目标的内置链的规则RETURN匹配,则链策略指定的目标将确定数据包的命运。

针对您的特定关注,我想说您的指南具有误导性。除非“关联动作”是五个终端动作之一,否则数据包将继续在链中流动,直到最后到达隐式RETURN


如果可以的话,我会多次投票给这个答案。
JakeRobb

值得注意的是,用户定义链的默认操作是RETURN。
形成鲜明

@stark不是最后一句话说的吗?
roaima

1
嗯,现在我对DROP有了更好的了解。这解释了为什么我在这张桌子下面也没有腿部空间。
乔纳森·诺伊菲尔德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.