您设置了端口转发。您的朋友可以从互联网访问您的服务器。但您无法使用您的公共 IP 或域名从您自己的网络内部访问它。

这称为发夹 NAT(或 NAT 环回),大多数路由器不支持它。

问题

您正在尝试访问: yourserver.com 或 203.45.67.89:25565

解析为您的公共IP。您的路由器看到来自网络内部的流向其公共 IP 的流量并将其丢弃。路由器认为“这没有意义”并终止连接。

快速修复:使用本地 IP 代替

使用以下方式访问您的服务器 192.168.1.50:25565 (您服务器的本地 IP)。

使用 yourserver.com 仅当您位于网络之外时。

找到你的服务器的本地IP:

Windows(在服务器上):

命令
ipconfig

查找 IPv4 地址。

Mac/Linux:

命令
hostname -I

书签 http://192.168.1.50 或您服务器的本地 IP 是什么。

更好的修复:在路由器上启用 Hairpin NAT

有些路由器支持此功能。检查您的路由器设置。

寻找:

  • “NAT环回”
  • “发夹NAT”
  • 《NAT 反射》

通常在高级 > NAT 设置中。

如果找到它,请启用它。现在您可以从网络内部使用您的公共 IP。

支持的常见路由器:

  • 大多数华硕路由器(默认启用)
  • 一些 Netgear(必须手动启用)
  • pfSense/OPNsense(必须配置)
  • Ubiquiti(通常有效)

不支持:

  • 大多数 ISP 提供的网关
  • 50 美元以下的预算路由器
  • 旧版 TP-Link/Linksys 型号

替代方案:水平分割 DNS

设置本地DNS进行解析 yourserver.com 至 192.168.1.50 而不是您的公共 IP。

如果您运行 Pi-hole 或自定义 DNS: 添加本地DNS记录: yourserver.com → 192.168.1.50

现在 yourserver.com 自动在您的网络内部和外部工作,根据您所在的位置转到正确的 IP。

大多数人: 在家就用本地IP即可。简单又有效。

为什么会发生这种情况

正常流量:您的电脑→路由器→互联网→服务器

Hairpin 尝试:你的电脑 → 路由器(看到目的地是它自己)→ ??? (混乱)

路由器的设计目的不是将流量从内部网络路由到其自己的公共 IP 返回到内部网络。这是一种只有自我托管者才会遇到的奇怪的边缘情况。

底线

当您在网络内部时,请使用服务器的本地 IP (192.168.1.x).

当您在外面时,请使用您的公共 IP 或域名。

或者在您的路由器上启用 NAT Loopback(如果支持)。但老实说,仅使用本地 IP 更容易,并且适用于每个路由器。