简介
direct
是 firewalld
服务的一个功能,它允许用户以更直接的方式配置防火墙规则,绕过通常的 firewalld
区域(zone)和服务的抽象层。然而,这个功能已经被弃用(deprecated),并将在未来的版本中移除。
弃用原因:直接配置可能导致与 firewalld
的其他功能(如区域和服务)发生冲突或混淆。因此,推荐使用 firewalld
的策略(policies)和区域(zones)来配置防火墙。
替代方案:可以通过policies来替代direct
direct命令结构
文件结构
<?xml version="1.0" encoding="utf-8"?>
<direct>
[ <chain ipv="ipv4|ipv6|eb" table="table" chain="chain"/> ]
[ <rule ipv="ipv4|ipv6|eb" table="table" chain="chain" priority="priority"> args </rule> ]
[ <passthrough ipv="ipv4|ipv6|eb"> args </passthrough> ]
</direct>
chain
它用于定义额外链的名称。一个链条条目具有三个属性:
-
ipv="ipv4|ipv6|eb"
:将创建链的 IP 家族。可以是 ipv4、ipv6 或 eb。 -
table="table"
:链将被创建的表名。这可以是 iptables、ip6tables 或 ebtables 可用的表之一。 -
chain="chain"
:将被创建的链的名称。请确保没有其他同名链存在。
请记得添加一条规则或者带有 --jump
或 --goto
选项的穿透规则,将该链与另一个链连接起来。这个与我们iptables中的自定义链和关联自定义链到对应的表是一样的。
rule
它用于向内置或添加的链中添加规则。一个规则条目具有四个属性:
-
ipv="ipv4|ipv6|eb"
:将添加规则的 IP 家族。可以是 ipv4、ipv6 或 eb。 -
table="table"
:规则将被添加到的表的名称。这可以是 iptables、ip6tables 或 ebtables 可用的表之一。 -
chain="chain"
:将添加规则的链的名称。这可以是内置链或使用chain
标签创建的链。如果链名称是内置链,则规则将被添加到chain_direct
,否则使用提供的链名称。chain_direct