9.2. 数据包过滤

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

nftables 框架提供数据包分类工具,它是 iptablesip6tablesarptablesebtables 工具的指定后台。它比之前的数据包过滤工具在方便、特性和性能方面有很大改进,特别是:

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

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

iptables, ip6tables, ebtablesarptables 工具由使用相同名称的基于 nftables 的 drop-in 替换替换。外部的行为与旧的行为相同,但在内部,它们可以通过一个兼容接口使用与带有旧的 netfilter 内核模块的 nftables

可使用 nft list ruleset 命令查看模块对 nftables 规则集的影响。这些工具把表、chains 和规则添加到 nftables 规则集里,所以请注意 nftables rule-set 的操作(如 nft flush ruleset 命令)可能会影响使用之前分离的 legacy 命令安装的规则集。

为了快速识别存在这个工具的哪个变体,我们更新了版本信息以包含后端名称。在 RHEL 8 中,基于 nftables 的 iptables 工具会打印以下版本字符串:

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

为了进行比较,传统的 iptables 工具会打印以下信息:

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

9.2.2. Arptables FORWARD 从RHEL 8 的过滤表中删除。

在 Red Hat Enterprise Linux(RHEL)8 中删除了 arptables FORWARD chain 功能。现在,您可以使用 ebtables 工具的 FORWARD chain 添加规则。

9.2.3. iptables-ebtables 输出结果与ebtables 不完全兼容

在 RHEL 8 中,ebtables 命令由 iptables-ebtables 软件包提供,它包括基于 nftables 的实现。这个工具有 一 个不同的代码基础,其输出在方面有所不同,这些方面要么是多余的,也可以是刻意的设计选择。

因此,在迁移用于解析 ebtables 输出脚本时,需要对脚本进行以下调整:

  • 将 MAC 地址格式化改为固定长度。在需要时,每个字节值包含一个前导 0 以确保格式正确。
  • 更改 IPv6 前缀的格式符合 RFC 4291。斜杠字符之后的中继部分不再包含 IPv6 地址格式的子网掩码,只是前缀长度。这个更改只适用于有效的(左连续)屏蔽,其他的屏蔽仍以旧格式打印。

9.2.4. 将 iptables 转换成 nftables 的新工具

在这个版本中,添加了 iptables-translateip6tables-translate 工具来将现有的 iptables 或者 ip6tables 规则转换成对 nftables 的等同规则。请注意,有些扩展缺少翻译支持。如果存在这样的扩展,工具会显示前缀为 # sign 的未翻译规则。例如:

| % iptables-translate -A INPUT -j CHECKSUM --checksum-fill
| nft # -A INPUT -j CHECKSUM --checksum-fill

另外,用户可以使用 iptables-restore-translateip6tables-restore-translate 工具来翻译规则转储。请注意: 之前,用户可以使用 iptables-save 或者 ip6tables-save 命令打印当前规则的转储。例如:

| % sudo iptables-save >/tmp/iptables.dump
| % iptables-restore-translate -f /tmp/iptables.dump
| # Translated by iptables-restore-translate v1.8.0 on Wed Oct 17 17:00:13 2018
| add table ip nat
| ...

为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。