10.3. nftables 框架中的概念


iptables 框架相比,nftables 提供了更现代化、更高效且更灵活的替代方案。nftables 框架比 iptables 提供了高级功能和改进,从而简化规则管理和增强性能。这使得 nftables 成为复杂和高性能网络环境的现代替代方案。

表和命名空间
nftables 中,表代表组织单元或命名空间,其将相关的防火墙链、集合、流表和其他对象分组在一起。在 nftables 中,表提供了一种更灵活的方法来构建防火墙规则和相关组件。在 iptables 中,表被更严格地定义,并具有特定用途。
表系列
nftables 中的每个表都与特定的系列(ipip6inetarpbridgenetdev)关联。此关联决定了表可以处理哪些数据包。例如,ip 系列中的一个表只处理 IPv4 数据包。另一方面,inet 是表系列的一个特例。它提供了一个跨协议的统一方法,因为 IPv4 数据包和 IPv6 数据包它都可以处理。特殊表系列的另一种情况是 netdev,因为它用于直接应用到网络设备的规则,从而在设备级别上启用过滤。
基本链

nftables 中的基本链是数据包处理管道中高度可配置的入口点,允许用户指定以下内容:

  • 链的类型,如 "filter"
  • 数据包处理路径中的 hook 点,例如 "input", "output", "forward"
  • 链的优先级

通过这种灵活性,可以精确控制规则在通过网络堆栈时何时及如何应用到数据包。链的一种特殊情况是 route 链,其用于根据数据包头,影响内核所做的路由决策。

用于规则处理的虚拟机

nftables 框架使用一个内部虚拟机来处理规则。此虚拟机执行与汇编语言操作类似的指令(将数据加载到寄存器,执行比较等)。这种机制可以实现高度灵活和有效的规则处理。

nftables 中的增强功能可以作为该虚拟机的新指令引入。这通常需要一个新的内核模块,以及对 libnftnl 库和 nft 命令行工具的更新。

或者,您可以通过将现有指令以一种创新的方式结合来引进新功能,而无需进行内核修改。nftables 规则的语法反映了底层虚拟机的灵活性。例如,如果 TCP 目的地端口为 22,规则 meta mark set tcp dport map { 22: 1, 80: 2 } 将数据包的防火墙标记设置为 1 ,如果端口为 80,则设置为 2。这展示了如何简洁地表达复杂的逻辑。

复杂的过滤和字典映射

nftables 框架集成并扩展了 ipset 工具的功能,其在 iptables 中用于对 IP 地址、端口、其他数据类型、最重要的是其中的组合进行批量匹配。此集成使您更容易直接管理 nftables 中的大型和动态的数据集。接下来,nftables 原生支持根据任何数据类型的多个值或范围匹配数据包,这增强了其处理复杂过滤要求的能力。使用 nftables,您可以操作数据包中的任何字段。

nftables 中,集合可以是命名的或匿名的。命名的集合可被多个规则引用和动态修改。匿名集合在规则内被内联定义,并且是不可变的。集合可以包含是不同类型组合的元素,如 IP 地址和端口号对。此功能在匹配复杂标准方面提供了更大的灵活性。要管理集合,内核可以根据特定要求(性能、内存效率等)选择最合适的后端。集合也可以作为具有键值对的映射。值部分可用作数据点(写入数据包头的值),或者作为要跳到的判决或链。这可启用复杂和动态的规则行为,称为"判决映射"。

灵活的规则格式

nftables 规则的结构非常简单。条件和操作从左到右顺序应用。这种直观的格式简化了规则创建和故障排除。

规则中的条件在逻辑上连接(使用 AND 运算符)在一起,这意味着要使规则匹配,所有条件都必须被评估为 "true" 。如果有任何条件失败,评估将移到下一个规则。

nftables 中的操作可以是最终的操作,如 dropaccept,这停止对数据包的进一步规则处理。非终端操作,如 counter log meta mark set 0x3,执行特定的任务(计算数据包、日志记录、设置标记等),但允许评估后续规则。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat