![从内网到内网的端口转发(发夹式 NAT)](https://linux22.com/image/1383082/%E4%BB%8E%E5%86%85%E7%BD%91%E5%88%B0%E5%86%85%E7%BD%91%E7%9A%84%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91%EF%BC%88%E5%8F%91%E5%A4%B9%E5%BC%8F%20NAT%EF%BC%89.png)
我已成功在 Mikrotik 路由器上设置了端口转发,该路由器将发往 mikrotik 端口 8844(假设为:20.20.20.22:8844)上的 WAN IP 地址的每个请求转换为本地 IP 地址和相同的端口。
由于我有一个 WAN IP 地址 (20.20.20.22) 的 DNS 名称,所以我希望此规则也能从内部网络起作用:
192.168.111.77 -> 20.20.20.22:8844 -> 192.168.111.2:8844
我发现了一个 Mikrotik 网页,描述了这种情况:http://wiki.mikrotik.com/wiki/Hairpin_NAT 但我没有能够实现同样的目标。
以下是规则的截图
这只是部分截图,其他一切都尚未设置(空白)。
编辑:路由器上的端口转发规则和经典伪装如下所示:
/ip firewall nat
add chain=dstnat in-interface=ether1-gateway protocol=tcp dst-port=8844 \
action=dst-nat to-address=192.168.111.2 to-port=8844
add chain=srcnat out-interface=ether1-gateway action=masquerade
答案1
解决方案是重写端口转发规则以不使用接口=ether1-网关, 但目标地址类型=本地:
/ip firewall nat
add chain=dstnat dst-address-type=local protocol=tcp dst-port=8844 \
action=dst-nat to-address=192.168.111.2 to-port=8844
然后按照原帖中说明的方式添加发夹式 NAT:
/ip firewall nat
add chain=srcnat src-address=192.168.111.0/24 \
dst-address=192.168.111.2 protocol=tcp dst-port=8844 \
out-interface=bridge-local action=masquerade
答案2
Nat Masquerade 192.168.111.0/24 到 192.168.111.0/24 这适用于所有服务。不要指定接口或端口。内部端口必须与外部端口相同。