我想匹配一组网络。匿名集可以正常工作,但我想创建前缀集以便在需要时重复使用它。
nft add set filter AllowedSSH { type ipv4_addr\;} // type for addreses
nft add element filter AllowedSSH { 10.0.0.0/8 } // not working
nft add element filter AllowedSSH { 10.0.0.1 } // works by IP
我应该使用哪种正确类型的过滤器来执行此操作?
变量样式也不起作用:
nft define networks = { 10.0.0.0/8 }
nft add rule ip filter input ip saddr $networks tcp dport 22 accept
Error: syntax error, unexpected dport, expecting end of file or newline or semicolon
add rule ip filter input ip saddr tcp dport 53 counter accept
^^^^^
NFT 版本:
[root@foo ~]# nft -v
nftables v0.8 (Joe Btfsplk)
提前致谢。
答案1
如果要将前缀添加到集合中,则应指定interval
标志。
在您的示例中它将看起来像:
nft add set filter AllowedSSH { type ipv4_addr\; flags interval\; }
nft add element filter AllowedSSH { 10.0.0.0/8 }
nft add element filter AllowedSSH { 192.168.0.0/24 }
nft list set filter AllowedSSH
table ip filter {
set AllowedSSH {
type ipv4_addr
flags interval
elements = { 10.0.0.0/8, 192.168.0.0/24 }
}
}