我有一个安装了 v7.1beta2 固件的 MikroTik 路由器
它的 WAN (eth1) 的 IP 地址为192.168.7.122
有两个设备连接到它的 LAN
- 设备#1 是一个网络服务器,在端口上通信
80
TCP
192.168.88.254
- 设备 #2 是在端口上通信的 PLC
9999
UDP
192.168.88.250
我已经成功设置了一个 dst-nat 以8080
在 WAN 端口上公开设备 #1 网络服务器。
但是,我无法让 PLC 通过 NAT 进行通信。我已经配置了类似于网络服务器的 dstnat,只更改了端口、地址和协议。这是我现在配置的:
Chain: dstnat
Protocol: 17 (udp)
Dst. Port: 9999
Action: dst-nat
Log: x
To Addressess: 192.168.88.250
To Ports: 9999
我已经禁用drops
了防火墙上的所有功能。
当我使用通信实用程序时,我将其指向 WAN 地址和配置的端口:192.168.7.122:9999
并搜索设备,MikroTik RateGraph 显示峰值(因此它正在进入)但实用程序将设备报告为“丢失”(例如,它没有得到一个答复)。
当我直接连接到 LAN 并直接指向192.168.88.250:9999
设备时,设备会立即显示为“可用”。
据我所知,PLC 设备并不关心 src 地址是否来自本地网络,因为我们过去通过 NAT 通信的模型相同(而且我不相信有任何特殊处理已完成)。该领域的其他硬件目前通过 Linux 机器(不是 NAT)使用 UDP 9999 的 socat,并且工作得非常好,所以我愿意弄清楚如何配置一个类似 socat 的 NAT 进行测试。
我还尝试配置 srcnat 以防 dstnat 没有将流量反向通过。就是这样:
Chain: srcnat
Src. Address: 192.168.88.250
Protocol: 17 (udp)
Dst. Port: 9999
Action: src-nat
To Addresses: 192.168.7.122
To Ports: 9999
其中,这也不起作用,并且此 srcnat 不会在速率图上显示任何流量。
我是RouterOS的新手,网络从来都不是特别强项(我是一名软件工程师),所以我不熟悉正确调试这种情况的方法,尤其是RouterOS。
在直接连接到 LAN 时在主机上使用 WireGuard,我看到两个流量都出去了,然后是响应。
使用它通过 WAN 监控它会熄灭,但我从未看到任何响应。
帮助?
我有同样的问题,但看起来在 Mikrotic wiki 上有一个解决方案: https ://wiki.mikrotik.com/wiki/Tips_and_Tricks_for_Beginners_and_Experienced_Users_of_RouterOS#Port_forwarding_on_RouterOS
除了我添加的 srcnat 规则
在FastTrack 规则之前,看起来它成功了
最后,我找到的解决方案是使用 OpenWrt 刷新路由器(RB750Gr3),并以与 RouterOS 中完全相同的方式对其进行配置。一切都按预期完美运行。
虽然,我不一定认为“更改操作系统”是解决问题的可行方案,但我花了几天时间试图弄清楚我在简单的 NAT 端口转发中做错了什么,但能够完成完全相同的事情在不到半天的时间内在相同的硬件上(包括弄清楚如何将不同的操作系统闪存到硬件上)。
很遗憾,因为我真的开始喜欢 RouterOS 的深入功能集,但 OpenWrt 也很不错。