在 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