![概括](https://linux22.com/image/781692/%E6%A6%82%E6%8B%AC.png)
概括
我有一个 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 确认了这一点。我不确定这里还能尝试什么。
如对我的假设有任何帮助或见解,我将不胜感激。
答案1
我最初误解了这一点,但这里的问题是虚拟服务器用于 DNAT,而您真正需要的是 SNAT。
根据您现在的设置,假设您的机器是 10.15.70.100。
当你的机器发出的流量到达 10.15.70.19:502 处的路由器时,路由器会发现一个数据包来自
10.15.70.100 --> 10.15.70.19:502
将其更改为
10.15.70.100 --> 192.168.1.88: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,并在您的机器上创建一条通过 10.15.70.<路由器接口> 指向 192.168.1.0/24 的路由
由于路由器上的其他设置几乎都保持默认,因此在这种情况下路由器将会看到:
10.15.70.100 --> 192.168.1.88
将其更改为
192.168.1.<router address> --> 192.168.1.88
并将其发送出去。
然后,当 PLC 想要响应时,它可以响应 192.168.1.x 的路由器,它完全有能力做到这一点。
答案2
为计算机上网络适配器的 TCP/IPv4 协议的高级 TCP/IP 设置添加一个额外的 IP 地址,用于 PLC 正在使用的同一网络。这要求您的网络适配器配置静态 IP 地址……如果没有,则暂时为您的网络适配器分配一个静态 IP 地址。
这并不要求 PLC 具有默认网关。
例如,如果 PLC 的 IP 地址是 192.168.1.1/24,则将 192.168.1.2/24 分配为网络适配器上的附加 IP 地址。这将允许您的计算机直接与 PLC 通信。这不会中断“主”网络上的网络通信。