【问题标题】:iptables -j vs. -g parametersiptables -j 与 -g 参数
【发布时间】:2015-10-14 21:11:44
【问题描述】:

从我的发行版的手册页中,我对下面的粗体部分特别感兴趣。

-j,--跳跃目标

这指定了规则的目标;即,如果数据包匹配它该怎么办。目标可以是用户定义的链(除了此规则所在的链),决定命运的特殊内置目标之一 立即删除数据包,或扩展(请参阅下面的扩展)。如果在规则中省略此选项(并且未使用 -g),则匹配该规则将不会影响数据包的命运,但 规则将递增。

-g, --goto 链

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

我担心我误解了 -g 的实际作用。

-g 现在与 -j 有何不同?

【问题讨论】:

    标签: linux firewall iptables stateful


    【解决方案1】:

    当当前链中的匹配规则指定目标RETURN,或到达当前链的末端时,处理继续在前一个链中跳转到当前链,从下一个规则遍历它仍未处理,即实际指定当前链为其目标并触发跳转到当前链的规则下方。

    但是,如果跳转到当前链是通过-g(而不是通过-j)完成的,则处理不会在前一个链中继续,而是在之前的链中继续,假设那里的跳转是用-j。如果情况也不是这样(即即使使用了-g),则将考虑之前的链,依此类推。换句话说,实际使用-j 而不是-g 指定下一个链的最新链将在下一个处理。

    如果没有找到这样的链(即所有链直到并包括指定的内置链-g),或者到达内置链的末端或内置链中的规则与目标RETURN 匹配,内置链策略指定的目标决定了数据包的命运。

    【讨论】:

    • 所以-g 基本上会跳回到-j 或内置链原点“激活”的最后一条链。如果没有找到与该数据包匹配的规则,则默认策略将生效。
    • 是的,但是跳回是通过-j“激活”下一个链的最新链,并且仅当当前处理的链指定目标RETURN或当前处理后的链根本没有指定任何目标。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 2016-07-16
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多