Mikrotik 端口转发到位于本地网络中的公共 IP

问题描述 投票:0回答:3

我们刚刚设置了 Mikrotik 路由器,并拥有公共 IP 地址和服务器的本地 IP 地址。 我们创建了一个

dst-nat
规则,任何访问者
public_ip:80
dst_nat
应用于
local_ip:8082
端口 但是,从我们的本地 IP 地址我们无法访问该公共 IP 地址。 如果在主机文件中写入
local_ip
public_dns_name
,它将起作用。

为什么 mikrotik 不发送到 public_ip 地址,即不应用 dst-nat 规则?

portforwarding mikrotik
3个回答
4
投票

通过添加 srcnat 规则解决了这个问题,该规则伪装了来自本地网络的所有流量

Chain       
srcnat

Src. Address  -> our local network  
192.168.88.0/24

Dst. Address -> our server   
192.168.88.249

Protocol    
6 (tcp) 

Action
masquerade

1
投票

这个问题及其解决方案在 microtik 的文档中有解释:https://help.mikrotik.com/docs/display/ROS/NAT#NAT-HairpinNAT

基本上,路由器在回复网络内的机器时将所有内容转换为本地 IP 地址。您的客户端向某个公共 IP 发送了请求,因此它正在等待来自同一公共 IP 的回复。 microtik 将请求转换为本地 IP,因此它发送了带有错误“发件人”地址的回复,而您的客户端忽略了它。您可以通过设置伪装规则或添加绕过公共 IP 需求的静态 DNS 条目来解决此问题。

就我而言,问题在于该规则设置为仅适用于 WAN(而非 LAN)上传入的流量。我将其更改为从任何地方路由流量,只要它请求我的公共 IP。

chain: dstnat
dst address: <public ip>
protocol: 6 (tcp)
dst port: 80
in. interface list: all
action: dst-nat
to addresses: <server local ip>
to ports: <server port>

0
投票

谢谢这对我有很大帮助

© www.soinside.com 2019 - 2024. All rights reserved.