nftables 中有某种通配符吗?

nftables 中有某种通配符吗?

在 iptables 中,可以用作eth+接口名称来匹配以 开头的任何接口eth(或者作为一个更实际的示例,这也可以匹配virbr+veth+,即似乎具有shell 中的 glob+的效果)。*

nftables 是否提供类似的工具来匹配接口名称?我该如何使用它?

答案1

是的,通常的通配符*NFFT相当于iptables' +。直到最近,手册页才记录这个(相对较旧的)功能。

从最近足够nft手册页:

与 iptables 一样,接口名称前缀上的通配符匹配可iifname通过oifname附加星号 (*) 字符进行匹配。但请注意,与 iptables 不同,nftables 不接受仅包含通配符的接口名称 - 用户应该跳过那些始终匹配的表达式。为了匹配字面星号字符,可以使用反斜杠 (\) 对其进行转义。

例如:

iifname "veth*" accept

此外,今天似乎不可能在元素中使用一组带有通配符的接口(type ifname或)。typeof iifname

更新:这个2022 年 4 月 git 提交nftables沿着一些其他相关的提交,可能沿着足够的内核支持,最终允许在集合中使用接口通配符,使用间隔作为方法:

允许在间隔集中连接名称:

table inet filter {
        set s {
                type ifname
                flags interval
                elements = { eth*, foo }
        }

这应该在当前 1.0.2 之后的版本中可用。


管理动态出现和消失的界面的一种完全不同的方法是用团体就在它们被创建之后(并且可能在它们被抚养之前)并且已经nftables与接口组匹配的规则。例如:

ip link set ppp7 group 42

同时拥有nftables规则重用此元信息:

iifgroup 42 jump from-ppp

相关内容