【问题标题】:Mikrotik Port Forwarding to public IP that is located in the local networkMikrotik 端口转发到位于本地网络中的公共 IP
【发布时间】:2019-01-03 06:27:13
【问题描述】:

我们刚刚设置了 Mikrotik 路由器,并拥有公共 IP 地址和我们的服务器本地 IP 地址。 我们创建了一个dst-nat 规则,任何访问 public_ip:80dst_nat 应用于local_ip:8082 端口 但是,从我们的本地 IP 地址我们无法访问这个公共 IP 地址。 如果在 hosts 文件中我们写 local_ip public_dns_name,它将起作用。

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

【问题讨论】:

  • local_ip 是否将 mikrotik 作为默认网关?

标签: portforwarding mikrotik


【解决方案1】:

通过添加 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

【讨论】:

    【解决方案2】:

    此问题及其解决方案在 microtik 的文档中进行了说明:https://wiki.mikrotik.com/wiki/Hairpin_NAT

    基本上,路由器在回复网络内的机器时会将所有内容转换为本地 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 2015-03-06
      • 1970-01-01
      相关资源
      最近更新 更多