可以在 LAN 内进行端口转发测试吗?Mikrotik 路由器

可以在 LAN 内进行端口转发测试吗?Mikrotik 路由器

我在 Mikrotik 路由器上设置了端口转发,但路由器操作系统(v6.39.2)看起来比我习惯的标准现成路由器界面要复杂得多。我按照说明从这里这些是我在 IP/防火墙/NAT 中输入的设置:

- Chain: dstnat
 - Protocol: 6 (tcp)
 - Dst Port: 8000
 - In. Interface: all Ethernet (for testing purposes) 
 - Action: dst-nat
 - Log: yes (for testing purposes)
 - To Addresses: 192.168.1.33
 - To Ports: 8000

由于外部网络似乎尚未正式开放 8000 端口(等待有人这样做,同时我检查它是否已打开yougetsignal.com)如果可能的话,我至少想测试一下我的端口转发规则是否在本地网络中起作用。

当我尝试192.168.1.1:8000在 Web 浏览器中访问时,我在 NAT 规则设置中的速率图中看到一些活动。但 Web 浏览器仍然只给我一个“无法访问此站点”的响应。

我希望它能将我转发给192.168.1.33:8000。这应该可行吗?还是我做错了什么?

答案1

Mikrotik RouterOS 基于 Linux 内核,继承了大部分网络概念。

因此,我将描述 Mikrotik 路由器中端口转发的设置。并尝试描述您的问题。

如果你想更深入地理解,你可以阅读iptables 教程。这是非常酷的文档,有详细的解释。

  1. 我们来画一下网络拓扑图:

网络拓扑

  1. 创建端口转发规则。更好的方法是指定原始目标地址而不是接口。这允许使用单个规则重写来自外部的数据包和来自 LAN 的数据包的目标地址。因此,您的规则是正确的:
- Chain: dstnat
- Protocol: 6 (tcp)
- Dst Address: <wan-ip>
- Dst Port: 8000
- In. Interface: all Ethernet (for testing purposes)
- Action: dst-nat
- Log: yes (for testing purposes)
- To Addresses: 192.168.1.33
- To Ports: 8000
  1. 当数据包从外部(WAN 接口)到达时,情况很简单。但是,当应该进行端口转发的数据包从 LAN 到达时,就会发生一些有趣的事情。

    • 假设局域网主机的用户尝试浏览http://<wan-ip>:8000网页。表格中的 TCP 数据包192.168.1.Z:Y -> <wan-ip>:8000 TCP [SYN]源自局域网主机并被发送到默认网关(Mikrotik 路由器)。
    • mikrotik路由器接收该数据包。
    • 然后根据你的规则重写目标地址dst-nat。执行此操作后,数据包将如下所示192.168.1.Z:Y -> 192.168.1.33:8000 TCP [SYN]
    • 路由器查找进一步的路径并将数据包发送到 LAN 中的主机192.168.1.33
    • 主机192.168.1.33以 的形式接收 TCP 数据包TCP SYN 192.168.1.Z:Y -> 192.168.1.33:8000,以 的形式创建答复192.168.1.33:8000 -> 192.168.1.Z:Y TCP [SYN-ACK]并将其发送到 LAN 主机直接地
    • LAN 主机接收到数据包192.168.1.33:8000 -> 192.168.1.Z:Y TCP [SYN-ACK],但这不是主机所期望的!并且此数据包将被丢弃。
    • 如您所见,为了使一切正常,主机192.168.1.33应将回复发送到 mikrotik 路由器,而不是直接发送到 LAN 主机。为此,您可以src-nat向 Mikrotik 添加其他规则。
- Chain: srcnat
- Protocol: 6 (tcp)
- Dst Address: 192.168.1.33
- Dst Port: 8000
- Src Address: 192.168.1.0/24
- Action: src-nat
- Log: yes (for testing purposes)
- To Addresses: 192.168.1.1

它使 Mikrotik 重写来自 LAN 的端口转发数据包中的源地址。之后,主机192.168.1.33将把这些数据包视为192.168.1.1:X -> 192.168.1.33:8000 TCP [SYN],并将回复发送给 Mikrotik。Mikrotik 将进行反向地址转换,然后一切正常。

  1. 另外,您应该配置的是防火墙过滤规则。简单情况下,默认规则就足够了。如果您更喜欢自己配置,那么您需要在链中配置几条规则filter/FORWARD
- Chain: filter/FORWARD
- Protocol: 6 (tcp)
- Connection state: new
- Dst address: 192.168.1.33
- Dst port: 8000
- Action: accept

- Chain: filter/FORWARD
- Connection state: established,related
- Action: accept

显然,有足够的方法可以改进,但现在主要概念应该很清楚了。

答案2

dst-nat 规则看起来没问题。您可以从网络内部浏览到 192.168.1.33:8000 吗?如果是,我会配置一个与生产子网不同的子网的第二个 LAN 接口,并使用 Mikrotik 作为默认网关将笔记本电脑连接到这个新的 LAN 端口进行测试。

问候,莱斯利

相关内容