端口转发和 IPv6

Ste*_*nny 3 windows firewall port-forwarding windows-10

我有一个在自己的计算机上运行的基本小型服务器,我可以像这样访问它:

localhost:3000
Run Code Online (Sandbox Code Playgroud)

不过,我也想从家外访问服务器,例如使用手机浏览器。在另一个论坛上,有人说我可以使用以下选项之一:

  • 对于 IPv6:是的,如果您在防火墙中打开端口
  • 使用 IPv4,您可以通过端口转发来实现

但我真的不知道该怎么做。IPv6 似乎是更好的选择,但我不知道我是否使用了防火墙。在 Windows 设置中,我关闭了防火墙。有人可以建议我如何从另一个网络访问该服务器吗?

Til*_*idt 5

使您的网络服务能够从 Internet 访问需要四个部分:

  1. 确保该服务可通过网络访问。这涉及:
  • 确保它没有绑定到环回地址(127.0.0.1 或 ::1),该地址只能在计算机本身上访问。如何完成此操作取决于提供服务的应用程序和计算机的操作系统。

  • 确保它不被主机防火墙阻止,要么通过关闭主机防火墙(危险),要么(更好)通过明确允许主机防火墙中的服务的传入连接。如何执行此操作取决于所使用的操作系统和主机防火墙。

  1. 为服务提供公共 IP 地址。这就是IPv4和IPv6的本质区别所在:
  • 使用 IPv6,您可以确保您的计算机本身具有公共地址。在大多数典型设置中,除了在路由器上启用 IPv6 之外,您无需执行任何操作。您的路由器从提供商处获取公共 IPv6 前缀,并将该块中的公共 IPv6 地址分配给您网络上的设备。

  • 对于 IPv4,由于全球地址短缺,您通常只能从提供商那里获得一个公共地址,而您的路由器本身将占用该地址。互联网上的机器只能连接到该公共地址。要解决这个问题,您必须在路由器上设置 TCP 端口转发,以将到达您的路由器并以您的服务为目的地的传入连接传递到您的计算机。不同制造商的路由器型号之间,有时甚至同一制造商的不同型号之间,执行此操作的确切步骤也不同。

  1. 使您想要连接到服务的客户端系统知道该公共地址。直接的方法是从计算机本身 (IPv6) 或路由器 (IPv4) 读取地址并将其输入到客户端中。然而,大多数家庭互联网连接仅获得动态地址,这意味着公共地址会定期变化,使得这种方法不切实际。解决这个问题的方法是订阅 DynDNS 服务。该服务提供一个 DNS 名称,该名称会自动更新为您的服务当前可访问的任何 IP 地址。有多种 DynDNS 服务可供选择,包括付费的和免费的。设置详细信息取决于您选择哪一个。

  2. 允许路由器防火墙中的服务传入连接。对于 IPv4,大多数路由器会在您设置端口转发时自动执行此操作(步骤 2)。对于 IPv6,您必须手动配置它。同样,路由器型号之间的细节差异很大。

在继续下一个步骤之前,每个步骤都可以而且应该单独进行测试。