匿名集合适用于静态策略场景,通过大括号打包多值实现单条规则匹配多个条件,如ip段与端口组合,但不支持动态增删、注释或计数器,频繁变更时应选用命名集合。

匿名集合能直接在规则里写多个值,省去重复写多条规则的麻烦,适合静态、不常变动的策略场景。
匿名集合的基本用法
它把多个匹配条件打包进一对大括号里,一次定义、一次生效。比如同时放行多个IP段和多个端口,只需一条规则:
nft add rule ip filter input ip saddr { 10.0.0.0/8, 172.16.0.0/12 } tcp dport { 22, 80, 443 } accept- 这条命令等价于手动写出 2 × 3 = 6 条独立规则,但结构更紧凑、可读性更强
- 支持混合类型:IP地址、子网、端口号、协议名(如 tcp、udp)、接口名(如 eth0)都可放入对应位置的大括号中
适用场景与限制
匿名集合不是万能工具,它的价值取决于使用边界:
- 适合一次性配置固定策略,例如内网管理网段访问白名单、基础服务端口开放列表
- 不适合需要动态增删元素的场景——一旦规则添加完成,就无法单独修改集合内容,只能整条删除再重建
- 不支持带注释或计数器的嵌入式写法;若需统计命中次数,得改用命名集合 + counter 组合
对比命名集合的维护差异
当策略开始变化频繁时,匿名集合反而会增加维护负担:
- 新增一个IP?必须先查 handle,再用
nft delete rule ... handle X删除原规则,再重新添加整条含新IP的规则 - 命名集合则只需
nft add element ip filter allowed_ips { 192.168.5.100 }一行追加 - 生产环境若预计半年内IP或端口调整超3次,建议跳过匿名集合,直接建命名集合
匿名集合是轻量级表达利器,用对地方能减少规则数量、提升配置清晰度;但它不解决动态管理问题,关键还是看策略是否稳定。











