朋友发来一张截图,配三个字:「进不去」。你回头看手机:概览写着「运行中」,终端里 Done 也在,地址也发过去了。于是开始重装核心、重启手机、换个版本试试——两小时过去,问题还在原地。
「进不去」不是一个问题,是七八个问题共用一个说法:服务端没起来、端口抄错了、两边不在同一个网络、运营商不给公网、隧道掉线了、白名单挡人。它们在朋友那边的表现几乎一模一样,修法却完全相反。
所以这一页不给「试试这个、再试试那个」,只给一条固定的顺序:从客户端那句报错读起,一路往回缩。七层,每层四件事——现象、先看哪里、判断标准、处理动作。哪一层没过,问题就在哪一层。
这一页解决什么问题:把「进不去」定位到某一层,而不是把每个功能都试一遍。
第一步永远是读报错原文:refused 是没人接,timed out 是没走到。
顺序固定:报错原文 → 服务端 → 地址端口 → 同不同网 → 运营商 → 隧道 → 白名单。
到了公网那一层,先判断是不是线路性质:CGNAT 下映射无效,只能换路径。
定位不到就先收集三样东西:报错原文、完整地址、终端最后 20 行。
第 0 步:先把四样东西抄下来#
排错最怕的是「凭感觉」。动手之前先花两分钟,把下面四样写在备忘录里,后面每一层都要用到它们。
| 要记的 | 从哪拿 | 为什么重要 |
|---|---|---|
| 客户端报错原文 | 游戏里的那句提示,截图 | 决定从第几层开始查 |
| 朋友填的完整地址 | 聊天记录 | 多一个空格、少一个端口,就是另一个地方 |
| 终端最后 20 行 | 「终端」页 | 判断服务端到底有没有就绪 |
| 通道状态 | 更多 → 网络 | 判断隧道那一层通不通 |
这四样东西还有个用处:真要开口问人时,有它们,别人十秒就能判断;没有它们,只能陪你一起猜。
第 1 层:客户端那句报错,到底在说什么#
结论:报错看起来五花八门,其实先分成两类就够了——「没人接」和「没走到」。这两类的修法完全不同,搞混了就等于往反方向跑。
| 报错原文 | 它在说什么 | 先查哪一层 |
|---|---|---|
Connection refused | 地址到了、门牌号对了,但屋里没人 | 第 2 层、第 3 层 |
Connection timed out | 包发出去,一直没回音 | 第 4 层、第 5 层、第 6 层 |
Unknown host | 名字根本没翻译成地址 | 第 3 层 |
Incompatible version | 通了,但版本对不上 | 第 7 层 |
Invalid session、Failed to verify username | 正版验证没过 | 第 7 层 |
Connection refused 是「有人明确告诉你:这个端口上没人」。它反而说明网络是通的——地址对了、端口对了、能走到你门口,只是里面没有服务在听。
Connection timed out 是「数据包扔出去了,没有任何回应」。中间某一跳把它丢了:可能不在同一个网络、可能被 NAT 丢了、可能被防火墙吞了、可能隧道根本没连上。
如果朋友连报错都没有,只是进度条一直转,那更接近 timed out。更多报错细节和游戏内文案见 客户端报错大全。
第 2 层:服务端在不在跑,有没有 Done#
现象:状态写着「运行中」,朋友连上去却像对着空气说话。
先看哪里:概览页的运行状态,加上终端最后 20 行。状态只说明进程还活着,不说明它已经开始接待玩家。
判断标准:终端里出现类似 Done (3.214s)! For help, type "help" 的一行。终端出现 Done 才算启动成功,在这之前玩家连上来只会超时。
处理动作:
停在
Starting server或Preparing spawn area:还在加载。第一次生成世界要 1~3 分钟,手机弱、模组多会更久,等着。出现
FAILED TO BIND TO PORT:端口被占了,通常是上一个服务端没真正退出。先正常停止,必要时强制停止,再启动。抛异常或进程直接退出:这不是联机问题,先按 启动失败排查 修启动。
顺手核对启动行里的端口:
Starting Minecraft server on *:25565。如果这里的数字和你发给朋友的不一样,问题在第 3 层。
世界很大、模组很多时,进程要几分钟才 Done。这段时间客户端一定是超时,你越让人重连,越容易以为是网络坏了。
第 3 层:地址和端口,是不是抄错了#
现象:同一个人昨天能进今天进不去;或者一个人能进、另一个人进不去。
先看哪里:概览页的「服务器地址」卡片,或网络页顶部的「本地连接地址」卡。那里同时写着 127.0.0.1:端口 和局域网 IP,两个别拿混。
判断标准:朋友填的字符串,和你卡片上显示的完全一致,包括冒号后面的端口号。
处理动作,五类高频错误:
只给了 IP,没给端口:客户端会按默认值去敲 25565。你改过端口的话,它就敲错门了。
给了
127.0.0.1:这个地址的意思是「我自己」。在朋友手机上,它指的是朋友自己的手机。用了旧的局域网 IP:手机重连 Wi-Fi 后,路由器可能重新分配地址。所以永远点复制按钮,不要让朋友手抄。
改了端口没重启:
server-port改完必须重启服务端,改完端口必须重启才生效。不重启时,地址卡显示的还是旧值。Java 版和基岩版端口互换:
25565是 TCP 给 Java 版,19132是 UDP 给基岩版,两者不通用。
第 4 层:你们到底在不在同一个网络#
现象:同一个 Wi-Fi 下能进;朋友一换成手机流量,立刻超时。
先看哪里:双方的 IP 前三段。你是 192.168.1.23,朋友是 192.168.1.40,同一个路由器;朋友是 192.168.0.x、10.x.x.x,或者根本是流量,那就不在同一个网络。
判断标准:找第二台设备连同一个 Wi-Fi 试一次。能进,局域网这一层就通过了。
处理动作:
不能进:查访客网络、AP 隔离(同一个 Wi-Fi 下设备互相看不见)、手机上是否开着 VPN。这些都在 局域网联机 里写了。
能进:同 Wi-Fi 能进、换流量就不行,问题就在公网那一层。这时候继续折腾局域网纯属浪费,直接往下走。
这一步的价值在于「分层」:它能把服务端问题和外网问题彻底分开,省掉一晚上的瞎试。
第 5 层:运营商、公司网、校园网挡在中间#
现象:端口映射照着教程做了,路由器也重启了,外面还是超时。
先看哪里:登录路由器,看 WAN 口拿到的地址;同时确认你连的是不是公司、学校、酒店这类公共网络。
判断标准:WAN 口地址落在 10.、100.64.、172.16~172.31、192.168. 这些段里,说明你上面还有一层 NAT 或运营商 CGNAT,CGNAT 下端口映射怎么配都没用,因为公网入口不在你家路由器上。
处理动作:
CGNAT:只能换路径。用 frp 内网穿透 让手机主动连出去,或用 EasyTier 组网 把大家拉进同一个虚拟网络。
对称 NAT:STUN 打洞基本不成,这不是配置能修的,直接跳到 FRP。
公司网、校园网、酒店网:通常只允许出站,不允许入站,端口映射和公网 IP 都无从谈起,只能走隧道。
Minexa 会生成配置、起进程、显示地址,也会把失败原因写进穿透日志;但应用不会绕过 NAT、CGNAT 和防火墙,它没有能力让运营商把端口还给你。所以看到「地址有了但外面进不来」,先判断这是不是线路性质的问题。
第 6 层:隧道那侧亮着什么灯#
现象:同一 Wi-Fi 能进,公网进不去,而你记得隧道已经点过启动了。
先看哪里:更多 → 网络。三条通道(FRP、STUN 直连、EasyTier)各有自己的状态和地址,穿透日志里能看到 [tunnel] 开头的行。
判断标准:状态是「运行中」,并且地址已经显示出来、还是这次启动之后新出现的。
| 你看到的 | 说明什么 | 处理动作 |
|---|---|---|
| FRP 状态不是「运行中」 | frpc 没连上 frps | 核对 serverAddr、serverPort、token;平台隧道离线就去平台面板看 |
| FRP 运行中但没有公网地址 | 配置里缺 remotePort,或平台没下发 | 去 FRP 平台面板手抄地址 |
| STUN 提示拿不到公网地址 | 本机是内网/CGNAT 地址,或填的自定义 STUN 服务器只收 UDP | 别再耗,换 FRP |
| EasyTier 玩家连不上 | 对方没装客户端、网络名或密钥差一个字符、没给 VPN 权限 | 三样逐一核对 |
| 隧道在线但玩家超时 | localPort 和服务端端口不一致,或服务端没 Done | 先在同一台手机上自连 127.0.0.1:端口 试 |
三个容易忘的细节:EasyTier 的玩家连的是应用算出来的 虚拟IP:25566(被占用时顺延到 25567),不是你家地址;STUN 的地址换网就会变;FRP 的公网地址停止隧道后立即失效,别存下来反复发。
第 7 层:正版验证和白名单挡人#
现象:服务器列表里能看到 MOTD、能看到延迟数字,点进去却被踢回主菜单。
先看哪里:客户端被踢时那句提示,以及服务端终端同一时间的输出。
判断标准:能看到 MOTD,说明网络这一层是通的,问题只在「谁能进」。这时候再回去查端口、查隧道,全是白费。
| 提示 | 含义 | 处理动作 |
|---|---|---|
| 提示不在白名单 | 白名单里没有这个名字 | 玩家页加白名单,注意服务端要在运行中 |
Invalid session、Failed to verify username | 正版验证没过 | 用正版账号登录启动器;或评估关 online-mode 的风险 |
| 提示人数已满 | 到了 max-players 上限 | 改配置,或等有人退出 |
| 提示你已被封禁 | 封禁列表里有这个 ID | 玩家页的封禁标签里解封 |
Internal server error | 服务端处理时抛了异常 | 回终端看堆栈,那是另一个问题 |
玩家页所有写操作都要求服务端正在运行。服务端没跑起来,加白名单、给 OP 的按钮都是灰的,先启动再操作。
关掉 online-mode 确实能让一类报错立刻消失,但同时打开了冒充的大门:知道地址的人可以用任何名字进来,包括你的名字。只在信任的小圈子里、并且必须配合白名单;排错结束后记得改回来。开放公网又关正版验证、又不加白名单,是新手服被拆最常见的原因。
七层都过了还是连不上#
先用这张图把上面的顺序再走一遍,它把七层压成了一次判断;图也走不通,就按后面三条补最后一刀。
客户端报错是什么?
├─ Connection refused → 服务端没在听:查 Done、查端口、查是不是只听 127.0.0.1
├─ Connection timed out
│ ├─ 同一 Wi-Fi 能进?
│ │ ├─ 不能 → AP 隔离、访客网络、VPN(network-lan)
│ │ └─ 能 → 公网那一层
│ │ ├─ 隧道状态运行中且有地址?
│ │ │ ├─ 没有 → 引擎、token、平台隧道(network-frp)
│ │ │ └─ 有 → WAN 口是不是 10./100.64./192.168.?
│ │ │ ├─ 是 → CGNAT,换 FRP 或 EasyTier
│ │ │ └─ 否 → 映射、防火墙、安全组
├─ Unknown host → 地址拼错,换成纯 IP 试
└─ 能看到 MOTD 但被踢 → 白名单、正版验证、版本(trouble-network)按这个顺序再补三件事,通常能揪出剩下的那一种情况:
换一条通道验证:FRP 不通就试 STUN,STUN 拿不到地址就试 EasyTier。一条通道失败不代表网络坏了,只代表这条路不适合你的线路。
换一台客户端验证:同一部手机用另一个启动器、或换一台设备连同一个地址。能进,说明问题在原客户端上。
收集五样东西再问人:报错原文截图、朋友填的完整地址、终端最后 20 行、网络页三条通道的状态、你已经验证通过的层。这几样凑齐,别人不用猜。
你能说出朋友客户端报错的原文,而不是笼统的「进不去」。
终端里出现过
Done (...s),并且Starting Minecraft server on *:端口的数字和地址卡一致。同一个 Wi-Fi 下的另一台设备能进,这一条已经验证过。
你用的那条通道在网络页显示「运行中」,地址是这次启动后新出现的。
你知道自己路由器 WAN 口是
192.168、10、100.64开头,还是真正的公网地址。