您设置了端口转发。您的朋友可以从互联网访问您的服务器。但您无法使用您的公共 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 更容易,并且适用于每个路由器。