Firewalld 中的 INPUT_direct 链是什么?

Firewalld 中的 INPUT_direct 链是什么?

在许多firewalld配置示例中,我看到提到了正常的INPUTiptables链,以及一个名为的链INPUT_direct

例如

$ sudo firewall-cmd --direct --add-rule ipv4 filter INPUT_direct 0 \
  # etc...

$ sudo firewall-cmd --direct --add-rule ipv4 filter INPUT_direct 1 \
  # etc...

有什么意义INPUT_direct?我必须用它代替吗INPUT

INPUT_direct 0那么,,INPUT_direct 1等等之间有什么区别?

答案1

总结:

  • 如果确实需要直接规则,只需始终使用INPUT而不是INPUT_direct:它将始终有效。

  • 如果您不知道使用什么优先级值,只需为要添加的每条新直接规则将优先级值增加一即可。


此链有时由直接规则的接口防火墙。此接口/功能允许存储自定义iptables规则(并且总是iptables即使防火墙的后端是nftables) 使用防火墙filter并确保这些规则是任何数据包(此处的表和链中)首先看到的规则INPUT。通常,只有当某些事情无法处理时,您才应该使用它防火墙包括防火墙丰富的语言

这是一个已弃用的功能

已弃用

直接接口已弃用。它将在将来的版本中被删除。它已被政策取代,请参阅 防火墙策略(5)

无论如何,我不确定它是否会被所有用途的政策所取代......

同样被弃用的还有iptables后端。最近系统上的典型安装还包括/etc/firewalld/firewalld.conf

# FirewallBackend
# Selects the firewall backend implementation.
# Choices are:
# - nftables (default)
# - iptables (iptables, ip6tables, ebtables and ipset)
# Note: The iptables backend is deprecated. It will be removed in a future
# release.
FirewallBackend=nftables

防火墙可以使用iptables或者nftables作为后端,但直接规则总是使用iptables. 没有概念nftables即使后端是直接规则nftables:这可能是直接规则被弃用的原因之一。

  • 当后端iptables

    • 防火墙创建INPUT_direct链并将其添加为INPUT跳转中的第一个规则,INPUT_direct因此它始终是第一个看到数据包的链(在路径中INPUT)。

    • 直接规则中对 的任何引用都INPUT将切换为对INPUT_direct

  • 当后端nftables

    • 防火墙本身不会创造任何iptables链或规则,但确保其自身nftables规则优先挂接到 Netfilteriptables将会使用+10。

    因此INPUT它的优先级为 10,而不是 0。这再次确保了任何iptables会先做

    • 引用内置链的直接规则不会改变。此时间INPUT被使用。

这种特殊性可以在 Python 代码中看到fw_direct.py

        # if nftables is in use, just put the direct rules in the chain
        # specified by the user. i.e. don't append _direct.
        if not self._fw.nftables_enabled \
           and backend.is_chain_builtin(ipv, table, chain):
            _chain = "%s_direct" % (chain)

在这两种情况下,使用firewall-cmd --direct --add-rule ipv4 filter INPUT 0(后面跟着与命令中提供的语法相同的语法,iptables但不包含表和链)创建的任何内容都将在数据包之前被看到防火墙它自己也看到了它。

对于优先级值:如果规则的顺序很重要,则会影响要使用的规则的顺序。顺便说一下,如果规则是由管理员选择的,则规则不依赖于先前的规则,那么它的优先级就无关紧要,甚至可以保持不变。要确保规则在其他规则之后添加,请增加其优先级:

如果您想确保一条规则在另一条规则之后添加,请对第一条规则使用低优先级,对后续规则使用较高优先级。

相关内容