![RouterOS 6.27 从内网到内网的端口转发(发夹 NAT)](https://linux22.com/image/1446398/RouterOS%206.27%20%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%20NAT%EF%BC%89.png)
有人在使用带有 6.27 固件的 RouterOS 从本地访问 Web 服务器时遇到问题吗?在升级到 6.27 之前,我一切都运行正常。
此外,Hairpin NAT 不起作用。
答案1
问题的关键在于 的dstnat
处理早于srcnat
。如果数据已经通过dstnat
,那么 和 之后 `srcnat 规则才会起作用。
以下是使 Hairpin NAT 工作的配置:
/ip firewall nat> print
Flags: X - disabled, I - invalid, D - dynamic
0 ;;; Hairpin NAT
chain=srcnat action=masquerade protocol=tcp src-address=192.168.0.0/24
dst-address=192.168.0.0/24 out-interface=bridge-local log=no log-prefix=""
1 ;;; NAT masquerade for outgoing connections
chain=srcnat action=masquerade out-interface=ether1-gateway log=no log-prefix=""
2 ;;; HTTP
chain=dstnat action=netmap to-addresses=192.168.0.150 to-ports=80 protocol=tcp
dst-address=76.35.222.205 dst-address-type=local dst-port=81 log=no log-prefix=""
76.35.222.205
是一个代表我的外部 IP 地址的假地址。我尝试过不使用这个地址,但在使用 Hairpin NAT 时会遇到几秒钟的延迟。
- 规则 0 确保向发送请求的内部机器返回响应。
- 规则 1 是常规 NAT 伪装,可与 Hairpin NAT 一起使用或单独使用
- 规则 2 是端口转发,无论连接从何处发起。
当从内部请求本地 HTTP 服务器时,规则 2 首先起作用,然后是规则 0。
也可能是您的过滤规则有问题。