-4

请考虑以下情况,

假设有两个室友安装了相同的游戏。为了这个问题,我们假设游戏是 DoTA2。

两个室友都连接到同一个路由器,因此本质上具有相同的公共 IP。(路由器的IP)

现在,让我们假设外部的其他人(即路由器外部的公共互联网)想要连接到室友 1,那么路由器将在 NAT 规则内有一个简单的端口转发,可能如下所示,

如果请求来自外部端口 ABC(游戏拥有的端口),则将其转发给室友 1。

现在,如果我们假设室友2也在游戏中在线并且另一台公共计算机想要连接到他们,那么端口转发将如何工作?

路由器如何知道连接请求被转发到哪台私人计算机(室友)?

请不要给出诸如 DoTA 分配了多个端口或任何特定于游戏的答案之类的答案,DoTA 的使用只是一个示例。

您甚至可以考虑这样一种情况,即有两台私人计算机在端口号 80 上运行一个简单的 HTTP 服务器,外部计算机如何知道要连接哪一台?

我用谷歌搜索了 DMZ 和端口转发,但不清楚解决方案。

4

2 回答 2

0

简而言之,NO是不可能的。您只能从 1 个公共地址 NAT 到 X 端口上的内部 IP。

总而言之,公司会这样做,但他们有 2 或 3 个公共地址,然后您可以映射到不同的内部 IP。

公共 IP 1 > 内部 IP:端口
公共 IP 2 > 内部 IP:端口

您可以从外部 IP 映射到多个内部 IP 地址,但由于您使用的是相同的服务(游戏),它们可能使用相同的端口或端口。

于 2019-07-12T11:39:30.177 回答
0

告诉我们我们可以给出什么样的答案有点粗鲁,特别是当你自己问了一个离题的问题时。

回答您的问题,端口转发是基于私有 IP 和端口的组合完成的;roomate1 和 roommate2 具有不同的私有 IP 地址,但使用相同的端口,在您的路由器上(假设它是通用的)在任何时候都只能使用一个转发规则。

一种可能的解决方案是使用代理服务器,例如HAProxy在专用网络侧的路由器之后,并使用基于 TCP 关联的策略将数据包转发给室友。

于 2019-07-12T11:23:46.143 回答