Red Hat Training

A Red Hat training course is available for RHEL 8

9.2. 数据包过滤

9.2.1. nftables 替换 iptables 作为默认网络数据包过滤框架

nftables 框架提供数据包分类工具,它是 iptablesip6tablesarptablesebtablesipset 工具的指定后继设备。与之前的数据包过滤工具相比,它在方便、特性和性能方面提供了大量改进,最重要的是:

  • 查找表而不是线性处理
  • IPv4IPv6 协议都使用同一个框架
  • 规则会以一个整体被应用,而不是分为抓取、更新和存储完整的规则集的步骤
  • 支持在规则集(nftrace)中进行调试和追踪,并监控追踪事件(在 nft 工具中)
  • 更加一致和压缩的语法,没有特定协议的扩展
  • 用于第三方应用程序的 Netlink API

iptables类似, nftables 使用表来存储链。链包含执行动作的独立规则。nft 工具替换了之前数据包过滤框架中的所有工具。libnftables 库可用于通过 libmnl 库与 nftables Netlink API 进行底层交互。

iptablesip6tablesebtablesarptables 工具由基于 nftables 的具有相同名称的程序替换。虽然其外部行为与其旧的程序相同,但在内部会通过兼容性接口使用 nftables 和旧的 netfilter 内核模块。

您可以使用 nft list ruleset 命令查看模块对 nftables 规则集的影响。这些工具将表、链和规则添加到 nftables 规则集中,请注意, nftables 规则集操作(如 nft flush ruleset 命令)可能会影响使用以前独立的旧命令安装的规则集。

为了帮助快速识存在该工具的哪个变体,版本信息已被更新,其中包含了后端名称。在 RHEL 8 中,基于 nftables 的 iptables 工具打印以下版本字符串:

$ iptables --version
iptables v1.8.0 (nf_tables)

如果存在旧的 iptables 工具,则会打印以下版本信息:

$ iptables --version
iptables v1.8.0 (legacy)