Nftables 结合了地图 + 计数器

Nftables 结合了地图 + 计数器

我目前正在迁移火霍尔基于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应该可以使用“地图中的状态表达式” - 但是我发现没有办法让这个功能发挥作用......

相关内容