服务器尝试从不同的网络与客户端的本地 IP 进行通信

服务器尝试从不同的网络与客户端的本地 IP 进行通信

我是网络文盲,但我正尝试让我家庭网络上的服务器通过互联网与朋友家庭网络上的一些客户端进行通信。我和我的朋友都没有静态公共 IP,我们也不打算为我们的客户端和服务器购买静态 IP。

以下是我们的设置图: 服务器客户端WAN

我在路由器上设置了端口转发,以便某个端口上到我的公共 IP 地址的通信被转发到我的服务器的本地 IP。通过此设置,我的服务器可以看到客户端并接收来自客户端的传入消息,但出于某种原因,它会尝试从我朋友的家庭网络向本地 IP 地址上的客户端发送消息。服务器和客户端使用专有 TCP/IP 协议。我的服务器将客户端的 IP 地址视为 192.168.0.X,如下图所示。您知道我们可能做错了什么吗?我原以为来自客户端的通信来自我朋友的公共 IP?可能是我们的协议消息通过本地 IP 传入,服务器正在解析这些消息以在客户端本地 IP 的端点上进行回复。在这种情况下,在不更改我们的协议的情况下,是否存在某种网络魔法可以使通信正常工作?

限制在于服务器和客户端是“锁定”设备,因此我们希望避免 OS/App 级别的更改。也许我们可以设置某种 VPN 或 VLAN(这是互联网上的东西吗)?换句话说,我们倾向于想出一个解决这个问题的网络解决方案。我们可以将服务器和客户端以外的设备添加到网络来解决这个问题,但我们不想“编写”一个路由协议消息的新应用程序。

答案1

如果没有相关的协议,就不可能详细说明,但看​​起来你故意含糊其辞,所以我会一般性地回答。

根据您的描述,服务器/协议无法处理 NAT,也就是说,它不是在新端口上与每个客户端协商会话,以便知道谁是谁,而是简单地回复传入数据包中列出的源 IP。这仅适用于 LAN。

要解决这个问题,您需要创建一个桥接以太网 VPN,OpenVPN 或其他 VPN 可以管理它,但与常规 IP 级 VPN 相比,它的设置难度要大得多。此外,由于您无法修改客户端,您需要将路由器作为 VPN 客户端,因此可能需要更换它。您可以在网络上任何可以运行 X86 软件的机器上托管 VPN。

相关内容