游戏服务器已启动,玩家却连不上?按这条顺序定位
开服后连不上,先保留客户端的完整错误提示和发生时间,再沿着实际监听、公网入口、游戏握手逐层检查。一次只改一个位置,才能知道是哪一步起作用。进程仍在、安全组中已有规则,都需要继续用实际连接验证。
下面以 Linux 上的原版 Minecraft Java、Minecraft 基岩版和帕鲁专用服务器为例。使用代理、容器、模组服或插件服时,还要检查它们各自增加的转发和兼容性要求。
先确认游戏版本和传输方式
记录客户端实际填写的地址、端口和游戏版本,再与服务端配置逐项对照。默认端口只是起点,修改过端口的机器以实际配置为准。
| 服务类型 | 常见入口 | 需要核对的配置 |
|---|---|---|
| Minecraft Java 原版 | TCP 25565 | server.properties中的 server-port |
| 基岩版 NetherNet | TCP 握手端口,另加 UDP 游戏端口 | transport=nethernet、server-port和 server-udp-ports |
| 基岩版旧 RakNet 模式 | 通常为 IPv4 UDP 19132、IPv6 UDP 19133 | 仅用于对应旧版本的检查,不能套用到 NetherNet |
| 帕鲁专用服务器 | UDP 8211 | 实际启动参数中的 -port |
基岩版从 26.50 开始默认使用 NetherNet,26.60 已将未使用 NetherNet 的提示提升为错误。遇到新版客户端连接问题,应核对支持的传输方式,不能照旧教程只检查 UDP 19132,也不要把退回旧传输方式当作通用修复。
Java 配置里的 query.port不是玩家默认连接端口。帕鲁的 PublicPort也不能代替真正的监听端口和路由映射。
在服务器里查实际监听
按正在排查的服务执行对应命令。下面的数字均为示例,修改过端口就换成实际值:
# Minecraft Java
sudo ss -lntp 'sport = :25565'
# 基岩版 NetherNet 的 TCP 握手入口
sudo ss -lntp 'sport = :19132'
# 旧 RakNet 基岩版的 IPv4 UDP 入口
sudo ss -lnup 'sport = :19132'
# 帕鲁
sudo ss -lnup 'sport = :8211'
TCP 通常查看 LISTEN,UDP 常见状态为 UNCONN。只有表头、没有服务记录时,先检查初始化是否完成、端口是否改过、配置是否被实际读取、进程是否已经退出,不要先反复添加安全组规则。
NetherNet 的 UDP 端口要按 server-udp-ports检查。例如配置了 49152-49200,就观察这个范围;没有配置时,端口可能从系统临时范围中分配。连接过程中执行 sudo ss -lnup,结合进程和端口确认,不要拿旧 RakNet 的固定 UDP 入口判断所有版本。
如果只监听在 127.0.0.1,外部客户端通常无法直连。Java 的 server-ip一般留空;需要指定绑定地址时,先用 ip -br address核对本机网卡。公网地址经过 NAT 时,不能把不属于本机接口的地址直接填进去。
日志也要看当前进程的记录:Java 通常查看当前服务目录的 logs/latest.log;基岩版和帕鲁先看启动控制台,若使用系统服务运行,再看对应服务的日志。旧目录中的日志可能与当前进程无关。
核对公网入口和每一层规则
- 云侧规则:确认规则绑定到正在使用的实例,协议、端口和来源地址都正确。玩家换了 Wi-Fi 或移动网络后,原有来源 IP 限制可能已经不匹配。
- 系统防火墙:检查实际使用的 UFW、firewalld 或 nftables。UFW 显示 inactive,不代表机器里没有其他生效规则。
- NAT 映射:逐项核对公网地址、外部端口、协议、内部地址和内部端口。客户端使用外部端口,服务进程监听内部端口。
- 容器发布:检查主机端口是否真正发布到容器,以及发布的是 TCP 还是 UDP。容器内监听正常,不等于主机外部能够连接。
操作入口可参照安全组教程和NAT 端口映射教程。只修正需要的规则,保留 SSH 等管理通道,不要靠关闭整套防火墙定位普通端口问题。
NetherNet 还要检查两个阶段:TCP 握手入口是否可达,以及服务端向客户端提供的 UDP 地址、端口是否真的能从公网访问。能通过 TCP 看到服务器信息,却在进世界时失败,仍可能是 UDP 范围、NAT 映射或公布的地址不正确。
把TCP测试和游戏联机分开验证
在服务器外部的 Windows 电脑上打开 PowerShell,按实际服务选择一个端口测试。示例地址 203.0.113.10必须替换:
# Minecraft Java 的 TCP 入口示例
Test-NetConnection -ComputerName 203.0.113.10 -Port 25565
# 基岩版 NetherNet 的 TCP 握手入口示例
Test-NetConnection -ComputerName 203.0.113.10 -Port 19132
TcpTestSucceeded : True只表示这次 TCP 连接建立,不代表版本、玩家认证和世界加载已经通过。这个命令不能验证帕鲁的 UDP 8211,也不能验证 NetherNet 后续的 UDP 游戏连接。
对于 NetherNet,还可以在安装了 curl 的外部 Windows 电脑上检查信令接口:
curl.exe -i --max-time 5 http://203.0.113.10:19132/v1/join
使用 NAT 外部端口或反向代理时,地址要与实际入口一致。返回成功状态并包含正确的服务器名称、版本等 JSON 信息,说明信令入口能够响应;仍需用匹配版本的基岩版客户端加入世界,才能继续验证后续连接。
UDP 服务优先使用实际游戏客户端复测,同时记录准确时间,查看服务端是否收到连接。通用 UDP 探测没有响应,不能单独证明端口关闭;Ping 检查的是 ICMP,也不能替代游戏联机。
已有明确拒绝提示,就按提示继续查
| 看到的现象 | 下一步 |
|---|---|
| 客户端或服务端版本过旧 | 记录两端完整版本,核对正式版与预览版是否混用;模组服还要检查加载器、模组和版本组合。 |
| 不在白名单、未被邀请 | Java 核对实际游戏账号名;基岩版核对 Xbox Gamertag 与允许列表是否加载。不要用网站昵称代替。 |
| 认证失败、会话无效 | 重新登录对应游戏平台,检查系统时间及认证服务连通性,不关闭玩家认证来掩盖问题。 |
| 帕鲁密码不正确 | 区分玩家进服密码与管理员密码,检查实际读取的配置文件和重启后的值。 |
| 基岩版出现 Door 或 InitialConnection 错误 | 保留错误详情中的传输方式和编号,分别核对信令响应、UDP 范围、NAT 地址和同期服务端日志,不能只凭错误名称断定某一个端口关闭。 |
| 基岩版每次重启都重新提示服务器身份 | 先确认连接目标正确,再检查服务器身份是否保存。不要在未核实目标时反复信任陌生身份。 |
| 只有某一名玩家无法连接 | 优先对比客户端版本、账号状态、来源 IP 和所用网络,再决定是否需要调整服务器。 |
每完成一处修正,就用原来的客户端再次连接,观察是否能够进入世界、移动和交互。涉及版本或存档调整时,再完成一次正常保存、关闭和重新加入,确认进度仍然保留。
需要提交工单时,一次提供产品编号、发生时间及所在时区、客户端与服务端完整版本、实际连接地址和端口、完整错误提示,以及前后相邻的服务端日志。密码、令牌、服务器身份私钥等资料不要直接贴入工单。
从头部署时,可按对应教程操作:Minecraft Java 开服、Minecraft 基岩版开服、帕鲁专用服务器部署。