关于nftables中创建IP/MAC地址对集合的语法咨询
关于nftables中创建IP/MAC地址对集合的语法咨询
嗨,我来帮你搞定这个nftables集合的语法问题~
你之前尝试的写法之所以报错,是因为nftables的集合不支持那种键值对形式的元素定义,而且复合类型的声明方式也不对。正确的做法是把IPv4地址和MAC地址定义成复合类型,用.来连接两种类型,元素也直接用.拼接对应的地址值就行。
给你一个可以正常运行的完整示例:
table ip filter { set authorized { type ipv4_addr . ether_addr flags constant elements = { 192.168.1.10 . aa:bb:cc:dd:ee:ff, 192.168.1.11 . 11:22:33:44:55:66, 192.168.1.12 . 00:11:22:33:44:55 } } }
这里要注意两个关键点:
- 复合类型的声明必须用
.分隔,比如ipv4_addr . ether_addr,而不是你之前写的空格分隔; - 集合元素不需要写
ipaddr:或者etheraddr:这种键名,直接把IP和MAC用.拼接成一个复合值即可。
如果之后要在规则里匹配这个集合里的IP/MAC对,比如允许来自这些地址对的流量,可以这么写:
chain input { type filter hook input priority 0; policy accept; ip saddr . ether saddr @authorized accept }
这样就能精准匹配到集合里的IP和MAC对应的设备啦~
备注:内容来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

