>我想知道是否有人找到了做到这一点的方法。我已经能够使用 nftables 为我的 DNAT 规则创建一组,但我无法实现我真正想要的东西。这是我到目前为止的集合:
nft add map ip nat dnat_map{type ipv4_addr . inet_service : ipv4_addr ;}
然而,我真正想要实现的是这样的目标
nft add map ip nat dnat_map{type ipv4_addr . inet_service : ipv4_addr . inet_service ;}
但是 Nftables 真的不喜欢这种格式,所以有没有人能够制作一个地图,允许元素同时拥有 daddr 和 dport 以及 dnat daddr 和 port?假设 ofc 元素看起来像这样(是的,我需要在 dnat 地址上安装不同的端口(:
nft add element ip nat dnat_map{
1.1.1.1 . 2222 : 192.168.1.1 . 22,
}
如果其他人遇到这种情况,我找到了解决问题的方法。就我而言,我通过 RDP 和 SSH 连接的隐蔽性获得了安全性,所以我只需要一个用于 Windows 的端口和另一个用于 Linux 设备的端口。由此产生的规则是。
nft add rule ip nat prerouting iifname $wan_iface ip saddr @admin_ips tcp dport 2222 dnat ip daddr map @wan_to_lan : tcp dport map{2222 : 22}
然后我的@wan_to_lan地图如下
nft add map ip nat wan_to_lan {type ipv4_addr : ipv4_addr ;}
nft add element ip nat wan_to_lan {1.1.1.1:192.168.1.x}
诀窍是在设置规则时,您必须记住您可以使用一个或多个地图。例外情况是已经以判定结束规则的 vmap。我认为 wiki 有所帮助,但需要更新,因为某些语法不再受支持。