iptables 使用,goto + jump:RETURN 行为是什么?

iptables 使用,goto + jump:RETURN 行为是什么?

我正在尝试弄清楚当你有多个自定义链并且使用 -goto 和 -jump 的混合时 iptables 的行为是什么

例子:

INPUT
iptables -A INPUT -i eth1 -j CUSTOM-A

CUSTOM-A
few commands here...
iptables -A CUSTOM-A -i eth1 -p tcp -dport 80 -g CUSTOM-B
few optional commands here...
iptables -A CUSTOM-A -i eth1 -s 0/0 -g CUSTOM-B

CUSTOM-B
iptables -A CUSTOM-B few commands here... -j CUSTOM-C
iptables -A CUSTOM-B few commands here... -j CUSTOM-C
iptables -A CUSTOM-B few commands here... -j CUSTOM-C
iptables -A CUSTOM-B -i eth1 -s 0/0 -j RETURN

CUSTOM-C
iptables -A CUSTOM-C -s 0/0 -j LOG
iptables -A CUSTOM-C -s 0/0 -j DROP

在上述情况下,在 CUSTOM-A tcp/80 上匹配的数据包将转到 CUSTOM-B,如果它们到达表的底部,它们将返回。由于数据包是通过 goto 到达 INPUT 的,因此 RETURN 是否实际上将数据包返回到 INPUT?

答案1

由于数据包是通过 goto 到达 INPUT 的,所以 RETURN 实际上是否将数据包返回到了 INPUT?

这就是手册页所说的内容...

-g, --goto chain 这指定处理应在用户指定的链中继续。与 --jump 选项不同,return 将不会在此链中继续处理,而是在通过 --jump 调用我们的链中继续处理。

所以我希望返回到 INPUT 链。

答案2

跳转:与任何跳转规则匹配的数据包将进入跳转指示的链。如果数据包稍后返回,它将由在跳转时发送它的链按照所述跳转后的规则进行处理。

Goto:与任何 goto 规则匹配的数据包将转到 goto 指示的链。如果数据包稍后返回,它将不会被 goto 上发送它的链处理,而是由上次跳转上发送它的链处理,该链位于该跳转之后的规则中。

相关内容