我有一个在自己的计算机上运行的基本小型服务器,我可以像这样访问它:
localhost:3000
但是我也想从家外访问服务器,例如使用手机浏览器。在另一个论坛上,有人说我可以使用以下选项之一:
- 使用 IPv6:是的,如果您在防火墙中打开端口
- 使用 IPv4,您可以通过端口转发来实现
但我真的不知道该怎么做。看起来 IPv6 是更好的选择,但我不知道我是否使用了防火墙。在 Windows 设置中,我已关闭防火墙。有人能告诉我如何从另一个网络访问此服务器吗?
答案1
使您的网络服务可从 Internet 访问包括四个部分:
- 确保服务可通过网络访问。这包括:
确保它没有绑定到仅计算机本身可访问的环回地址(127.0.0.1 或 ::1)。如何做到这一点取决于提供服务的应用程序和计算机的操作系统。
确保它不被主机防火墙阻止,要么(危险)关闭主机防火墙,要么(更好)明确允许主机防火墙中的服务传入连接。如何做到这一点取决于操作系统和所使用的主机防火墙。
- 为服务提供公网 IP 地址。这是 IPv4 和 IPv6 的本质区别所在:
使用 IPv6,您可以确保您的计算机本身具有公共地址。在大多数典型设置中,除了在路由器上启用 IPv6 之外,您无需为此做任何事情。您的路由器会从您的提供商处获取公共 IPv6 前缀,并将该块中的公共 IPv6 地址分配给您网络上的设备,而无需进一步处理。
使用 IPv4 时,由于全球地址短缺,您通常只能从提供商处获得一个公共地址,而路由器本身将占用该地址。互联网上的机器只能连接到该公共地址。要解决这个问题,您必须在路由器上设置 TCP 端口转发,以将到达路由器并发往您服务的传入连接传递到您的计算机。不同制造商的路由器型号之间执行此操作的具体步骤不同,有时甚至同一制造商的不同型号之间也不同。
让要连接到服务的客户端系统知道该公共地址。直接方法是从计算机本身 (IPv6) 或路由器 (IPv4) 读取地址并将其输入到客户端。但是,大多数家庭互联网连接只获得动态地址,这意味着公共地址会定期更改,因此这种方法不切实际。解决这个问题的方法是订阅 DynDNS 服务。该服务提供的 DNS 名称会自动更新为您的服务当前可访问的任何 IP 地址。有几种 DynDNS 服务可供选择,既有付费的也有免费的。设置细节取决于您选择的服务。
在路由器的防火墙中允许该服务的传入连接。对于 IPv4,大多数路由器会在您设置端口转发(步骤 2)时自动执行此操作。对于 IPv6,您必须手动配置。同样,不同路由器型号之间的细节差异很大。
在继续下一步之前,每个步骤都可以而且应该单独测试。