iptables 和 RETURN 目标

iptables 和 RETURN 目标

我不明白RETURN目标在 iptables 命令中的作用。

疑点由此而来指导它说:

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

因此,如果数据包与规则匹配并且它停止检查其他规则,为什么我需要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?如果数据包匹配第一条规则,那么它会自动停止执行其他规则。

答案1

数据包遍历一条链,直到到达ACCEPTDROPREJECTRETURN。他们不会在比赛中停止,除非该比赛包含终止动作。在您的示例中,匹配第一条规则的数据包将被标记,但随后将由第二条规则检查(并可能处理)。

仅供参考,以下是相关部分手册页:

防火墙规则指定数据包和目标的标准。如果数据包不匹配,则检查链中的下一条规则;如果匹配,则下一个规则由目标值指定,该目标可以是用户定义链的名称或特殊值ACCEPTDROP[、REJECT]QUEUE或之一RETURN

  • ACCEPT意思是让数据包通过。
  • DROP表示将数据包丢弃在地板上,即丢弃它并且不发送任何响应
  • [REJECT用于发送回错误数据包以响应匹配的数据包:否则相当于DROPso是终止TARGET,结束规则遍历。]
  • QUEUE意味着将数据包传递到用户空间。
  • RETURN意味着停止遍历该链并在上一个(调用)链中的下一个规则处恢复。如果到达内置链的末尾或者带有目标的内置链中的规则RETURN匹配,则链策略指定的目标决定数据包的命运。

针对您的具体关切,我想说的是你的向导具有误导性。除非“关联操作”是五个终端操作之一,否则数据包将继续流经链,直到到达RETURN末端的隐式操作。

相关内容