我目前正在迁移火霍尔基于nftables的路由器防火墙。不过,总的来说,功能层面上没有问题,因为我喜欢用以下内容总结重复的部分地图和套尽可能地,我正在努力争取柜台添加在同一个“pass”中。让我们以这些 dnat 规则为例
table t1 {
chain c1 {
type nat hook prerouting priority dstnat;
# compact form (works)
dnat to ip daddr map {
86.12.22.22 : 192.168.22.22,
86.12.22.23 : 192.168.22.23
}
# syntactically correct, but counts all dnated traffic
counter dnat to daddr map {
86.12.22.22 : 192.168.22.22,
86.12.22.23 : 192.168.22.23
}
# Does not work (why?)
ip daddr dnat to map {
192.168.22.22 : 86.12.22.22,
192.168.22.23 : 86.12.22.23
}
# long form (with counter, works)
ip daddr 86.12.22.22 counter dnat to 192.168.22.22
}
}
您知道一种在基于地图的规则中以某种方式合作计数器的方法吗?
答案1
好吧,我自己找到了答案。可以使用命名映射:
table t1 {
map one2one_dnat {
type ipv4_addr : ipv4_addr
flags interval
counter
comment "1-1 dnat"
elements = {
86.12.22.22 : 192.168.22.22,
86.12.22.23 : 192.168.22.23
}
}
chain c1 {
type nat hook prerouting priority dstnat;
dnat to ip daddr map @one2one_dnat
}
}
自从1.0.0应该可以使用“地图中的状态表达式” - 但是我发现没有办法让这个功能发挥作用......