在nftables 0.9.4之前有没有办法表达一组集合来统一IPv4和IPv6规则?

在nftables 0.9.4之前有没有办法表达一组集合来统一IPv4和IPv6规则?

文档建议从nftables0.9.4 开始,可以使用typeof ip daddr(和类似的)组合 IPv4 和 IPv6 集。唉,LTS Ubuntu 版本 20.04 比该版本 (0.9.3) 少了一个补丁。

引用:

typeof关键字从 0.9.4 开始可用,允许您使用高级表达式,然后让 nftables 为您解析基本类型

过去,ipset每当我只想引用一个名称时,我都会创建一组集合。所以我有一组特定于 IPv4(例如blackhole4),另一组特定于 IPv6(例如blackhole6),然后一个包含这两个(例如blackhole)。数据包内路径以及ipset集合元素的 CLI 更新对于该集合集运行良好。这些元素将被插入/更新到适当的“子集”中。

有没有可能统一也适用于 nftables 0.9.3?

注意:我可以创建单独的 IPv4 和 IPv6 特定集,然后设置一些容器来实现这一壮举。只是鉴于文档我不知道如何实现这一点。

PS:我看到了但它们适用于其他 nftables 版本结果不是我们想要的。

答案1

目前截至 2021 年 5 月 1 日,没有任何版本的内核和 nftables(包括 0.9.8)可以做到这一点。

首席开发人员 Pablo Neira Ayuso 在 2020 年 9 月 26 日写道,不存在阻碍其实施的重大架构问题,但尚未完成。

https://www.spinics.net/lists/netfilter/msg59761.html:

所以你想整合:

tcp dport @b_t update @b_sa4 { ip saddr } drop
tcp dport @b_t update @b_sa6 { ip6 saddr } drop

在一条规则中?

就像是 (假设语法

tcp dport @b_t update @b_sa { inet saddr } drop

在哪里b_sa是一个类似 的集合type inet_addr

https://www.spinics.net/lists/netfilter/msg59761.html:

通过 inet 提供 IPv4 和 IPv6 抽象的通用集合基础设施是可能的,是的。

相关内容