文档建议从nftables
0.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 特定集,然后设置一些容器来实现这一壮举。只是鉴于文档我不知道如何实现这一点。
答案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 抽象的通用集合基础设施是可能的,是的。