如何让任何 PC 都可以通过我的公共 IP 访问网络服务器?

如何让任何 PC 都可以通过我的公共 IP 访问网络服务器?

我在台式电脑上工作,并且运行一个本地网站。我可以使用我的私有 IP 地址打开该网站:http://192.168.0.50:8010/connect/webcontent/(例子)。

问题是我无法使用公共 IP 地址访问该网站:http://139.255.51.226:8010/connect/webcontent/(例子)。

我希望我的私有 IP(192.168.0.50)能够被公共 IP(139.255.51.226)和其他 PC 访问。请注意,我的 Web 服务器位于虚拟机上。

有人能帮我解决这个问题吗?

答案1

您需要检查以下几件事:

如果您有多个正常的公网IP地址:

  • 为您的 Web 服务器分配一个常规公共 IP 地址。
  • 确保您的路由器知道如何路由到此处。
  • 绑定 Web 服务器对此 IP:8010 元组进行响应。

这就是互联网的设计方式。遗憾的是,我们的 IP v4 地址基本用完了,导致出现了一种名为 NAT 的丑陋的临时解决方案。这几乎肯定就是您在家中使用的方案,所以请继续阅读。

如果您只有一个公共 IP(例如 139.255.51.226),并在网络地址转换(NAT)的帮助下使用其后面的 RFC1918 地址(例如 192.168.xx),那么:

  • 转到路由器(可能是 SoHo“调制解调器”的一部分)并设置端口转发。告诉它将端口 8010 转发到 192.168.0.50:8010。
  • 尝试确保您的 Web 服务器保持此 IP 地址。通常,这是通过在 DHCP 服务器的保留 IP 列表中添加条目来实现的。在 SoHo“调制解调器”上,DHCP 服务器通常是“调制解调器”的一部分。您可以跳过此步骤,但如果服务器的 IP 发生变化,则需要重新执行端口转发规则,并且如果该主机意外获取旧 IP,则可能会转发到非预期主机。这在家里风险不大,但这是非常糟糕的做法。

现在,从外部您的网络(例如,使用通过手机互联网而不是 Wi-Fi 连接的手机上的浏览器),尝试打开http://139.255.51.226:8010/connect/webcontent/

此请求将被路由到您的“调制解调器”。
调制解调器将看到它是用于端口 8010 并将其转发到 192.168.0.50:8010。

请注意,除非您的调制解调器支持“发夹 NAT”,否则此功能将无法在您的本地网络内部工作。

请注意,我的网络服务器位于虚拟机上。

只要虚拟机连接到您的网络(例如,使用“桥接”而不是“仅主机网络”),这就没关系。


正如@doezer所说:如果你的外部IP发生变化,那么你显然需要使用新值,而不是http://139.255.51.226:8010/connect/webcontent/。最简单的解决方法是不引用 IP 地址,而是引用名称。DNS 就是用于此目的。如果您有动态 IP,请查看 DynDNS。

另外,如果你可以使用 IPv6,那么根本不需要端口转发。只需为每台计算机(真实计算机或虚拟机)提供自己的 IP 地址即可。

相关内容