概括
我有一个 PLC,它有一个无法更改的静态 IP 和一个无法设置的网关。我需要能够在我的公司网络上通过 TCP 与 PLC 通信。似乎是 NAT 的一个很好的候选人......
设想
我在 PLC 前面添加了一个 TC-Link ER605 路由器,其网络与 PLC 的网络 (192.168.1.1/24) 匹配,并且我已将 WAN 配置为我网络上的子网 (10.15.70.19/ 24)。我创建了如下所示的 NAT 规则(虚拟服务器)。
当我尝试从 WAN 端(10.15.70.19:502)连接到 PLC 时,超时。
当我插入 LAN 端时,我可以打开到 192.168.1.88:502 的连接没问题。
潜在问题
我认为问题在于数据包可以到达 PLC,但 PLC 没有网关,也不知道将数据包发回哪里。我已经通过用笔记本电脑代替 PLC 并运行 Wireshark 来确认这一点。我不确定这里还有什么可以尝试的。
任何帮助或洞察我的假设将不胜感激。
为 PLC 使用的同一网络在计算机上网络适配器的 TCP/IPv4 协议的高级 TCP/IP 设置中添加一个额外的 IP 地址。这要求您的网络适配器配置有静态 IP 地址......如果不是,则临时为您的网络适配器分配一个静态 IP 地址。
这不需要 PLC 具有默认网关。
例如,如果 PLC 的 IP 地址是 192.168.1.1/24,那么将 192.168.1.2/24 分配为网络适配器上的附加 IP 地址。这将允许您的计算机直接与 PLC 通信。这不会中断您的“主要”网络上的网络通信。
我最初误解了这一点,但这里的问题是虚拟服务器是用于 DNAT 的,看起来你真正需要的是 SNAT。
有了你现在的设置,假设你的机器是 10.15.70.100。
当来自您机器的流量到达 10.15.70.19:502 的路由器时,路由器会看到一个数据包来自
将其更改为
并将它发送到快乐的路上。
当 PLC 接收到该信息时,它会尝试响应 10.15.70.100,但由于它没有默认网关,它不能这样做。
如果此 PLC 正常连接到与您的 PC 相同的网络,那么正如@joeqwerty 所说,您可以使用 192.168.1.0/24 中的辅助 IP 地址,一切都会好起来的。
如果您想使用路由器和 NAT 以这种方式执行此操作,那么您所要做的就是反转路由器端口,并在您的 PC 上添加一条路由以使用路由器到达 PLC。
使 LAN 端口在 10.15.70.0/24 网络上,WAN 端口在 192.168.1.0/24 上,并在您的机器上创建一条路由 192.168.1.0/24 via 10.15.70.<router interface >
路由器上的其他设置几乎都是默认设置,在这种情况下,路由器会看到:
将其更改为
并一起发送。
然后,当 PLC 想要响应时,它可以响应 192.168.1.x 的路由器,这完全有能力做到。