我不明白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;
Run Code Online (Sandbox Code Playgroud)
为什么我需要RETURN
?如果数据包与第一个规则匹配,则它会自动停止执行其他规则。
roa*_*ima 44
包穿越链直到他们打ACCEPT
,DROP
,REJECT
,或RETURN
。他们不会在比赛中停止,除非比赛包含终止动作。在您的示例中,匹配第一个规则的数据包将被标记,但随后将被第二个规则检查(并可能处理)。
仅供参考,以下是手册页中的相关部分:
防火墙规则指定数据包和目标的标准。如果数据包不匹配,则链中的下一个规则是检查的;如果它不匹配,则下一个规则是由目标的值,其可以是用户定义的链的名称或特殊值中的一个指定的ACCEPT
,DROP
[,REJECT
],QUEUE
或RETURN
。
ACCEPT
意味着让数据包通过。DROP
意味着将数据包丢弃在地板上,即丢弃它并且不发送任何响应REJECT
用于响应匹配的数据包发回错误数据包:否则相当于DROP
so是一个终止TARGET,结束规则遍历。]QUEUE
意味着将数据包传递到用户空间。RETURN
意味着停止遍历此链并在前一个(调用)链中的下一个规则处继续。如果到达内置链的末端或与目标RETURN
匹配的内置链中的规则,则链策略指定的目标将决定数据包的命运。针对您的具体担忧,我会说您的指南具有误导性。除非“关联动作”是五个终端动作之一,否则数据包将继续流经链,直到它们到达隐含RETURN
的末尾。
归档时间: |
|
查看次数: |
40729 次 |
最近记录: |