我在台式电脑上工作,并且运行一个本地网站。我可以使用我的私有 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 地址即可。