9.2. 数据包过滤
9.2.1. nftables
取代 iptables
作为默认的网络数据包过滤框架
nftables
框架提供数据包分类工具,它是 iptables
、ip6tables
、arptables
ebtables
和 ipset
工具的指定继承者。与之前的数据包过滤工具相比,它在方便、特性和性能方面提供了大量改进,最重要的是:
- 查找表而不是线性处理
-
IPv4
和IPv6
使用同一个协议框架 - 规则会以一个整体被应用,而不是分为抓取、更新和存储完整的规则集的步骤
-
支持在规则集(
nftrace
)和监控追踪事件(nft
)中调试和追踪 - 更加一致和压缩的语法,没有特定协议的扩展
- 用于第三方应用程序的 Netlink API
与 iptables
类似,nftables
使用表来存储链。链包含执行动作的独立规则。nft
工具取代了之前数据包过滤框架中的所有工具。libnftables
库可用于通过 libmnl
库与 nftables
Netlink API 进行低级交互。
iptables
、ip6tables
、ebtables
和 arptables
工具被具有相同名称的基于 nftables 的置入替换所替代。虽然外部行为与其传统的行为相同,但它们在需要时通过兼容性接口在内部使用带有传统 netfilter
内核模块的 nftables
。
可使用 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)
9.2.2. Arptables
FORWARD 从RHEL 8 的过滤表中删除。
在 Red Hat Enterprise Linux(RHEL)8 中已删除了 arptables
FORWARD 链功能。您现在可以使用 ebtables
工具的 FORWARD 链将规则添入。
9.2.3. iptables-ebtables
的输出与 ebtables
不是 100% 兼容
在 RHEL 8 中,ebtables
命令由 iptables-ebtables
软件包提供,其中包含基于 nftables
工具的重新实现。此工具有不同的代码库,其输出在诸多方面有偏差,这些偏差要么可以忽略不计,要么是刻意的设计选择。
因此,在迁移用于解析 ebtables
输出脚本时,需要对脚本进行以下调整:
- 将 MAC 地址格式化改为固定长度。必要时,在独立的字节值的开始包含一个 0,用于维护每个字段值带有两个字符。
- 已更改 IPv6 前缀的格式以符合 RFC 4291。斜杠字符后的结尾部分不再包含 IPv6 地址格式的子网掩码,而是一个前缀长度。这个更改只适用于有效的(left-contiguous)掩码,其他更改则仍然以旧格式打印。
9.2.4. 将 iptables
转换为 nftables
的新工具
这个更新添加了 iptables-translate
和 ip6tables-translate
工具,以便将现有的 iptables
或 ip6tables
规则转换为 nftables
的等效规则。请注意,一些扩展可能缺少响应的转换支持。如果存在这样的扩展,工具会打印具有 #
符号前缀的未转换的规则。例如:
| % iptables-translate -A INPUT -j CHECKSUM --checksum-fill | nft # -A INPUT -j CHECKSUM --checksum-fill
此外,用户可以使用 iptables-restore-translate
和 ip6tables-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 | ...