在我的发行版的手册页中,我对下面的大胆部分特别感兴趣。
-j, - jump target
这指定了规则的目标;即,如果数据包匹配该怎么办。目标可以是用户定义的链(除了这个规则所在的链),是决定命运的特殊内置目标之一 立即的数据包,或扩展名(见下面的扩展)。如果规则中省略了此选项(并且未使用-g),则匹配规则将不会影响数据包的命运,但是 规则将增加。
-g, - goto chain
这指定处理应在用户指定的链中继续。 与--jump选项不同,return不会在此链中继续处理,而是在通过--jump调用我们的链中。
我担心我会误解-g
实际上做了什么。
-g
现在与-j
有何不同?
答案 0 :(得分:3)
当当前链中的匹配规则指定目标RETURN
时,或者当达到当前链的末尾时,处理继续前一个跳转到当前链的链,从下一个规则遍历它仍未处理的规则,即实际指定当前链作为其目标并触发跳转到当前链的规则。
但是,如果跳转到当前链是通过-g
(而不是通过-j
)完成的,则处理将不会在之前的链中继续,而是在此之前的链中继续,假设跳转完成了-j
。如果情况也不是这样(即使使用了-g
),那么之前的链将被考虑在内,依此类推。换句话说,实际使用-j
而不是-g
指定下一个链的最新链将在下一步处理。
如果没有找到这样的链(即所有链到达并包括指定的内置链-g
),或者到达内置链的末尾或内置链中的规则当目标RETURN
匹配时,内置链策略指定的目标决定了数据包的命运。