周末约好友联机 Minecraft,一个用 PCL2,一个用 HMCL,都是身边最常见的启动器。原本以为启动器一样、版本一样,填上 IP 就能进。结果客户端一直卡在“连接中”,最后直接超时。群里有人建议用 FRP 做内网穿透,也有人说你宽带都有 IPv6 了,为什么还要绕一台服务器?
这个问题很典型,但回答起来并不简单。PCL2 和 HMCL 只是启动器,它们负责把游戏跑起来,并不负责打通两地之间的网络。联机能不能成功,取决于你开出去的服务器端口能不能被对端访问到。FRP 是解决内网穿透的通用方案,IPv6 则是近些年运营商逐步普及后出现的新直连条件。两者解决的问题有重叠,但适用环境和运维成本完全不同。
我从自己的实际体验出发,在电信、联通、移动热点之间做过几轮测试。核心结论是:IPv6 确实能在不少场景下省掉 FRP,但“有 IPv6”和“对方能连进来”是两回事。跨网环境下,光猫防火墙、路由器策略、Windows 防火墙、临时地址变化,随便一个环节出问题,IPv6 直连就失效。更稳妥的做法不是二选一,而是先把 IPv6 直连测一遍,不行再让 FRP 兜底。
1. 别把“启动器”和“网络链路”混为一谈
1.1 PCL2 和 HMCL 在联机里的真实角色
很多人对 PCL2、HMCL 有直觉上的误解,以为“用同一个启动器”就等于在同一个局域网。实际上,PCL2 和 HMCL 解决的是客户端管理问题:下载游戏版本、安装整合包、管理模组、登录账号、调整 JVM 参数。
联机时,它们只负责让两个人都能启动同一个游戏环境。真正决定连接能否建立的,是 Minecraft 的服务端进程。你可以用单人世界里的“对局域网开放”功能,也可以用独立服务端软件。服务端在某个端口监听,客户端拿 IP 加端口去连接,这个过程和启动器是什么品牌没有直接关系。
所以,异地联机的第一步,是先把“用 PCL2 启动”和“开了一个可被连接的服务”区分开。否则你会陷入一个误区:明明两边都能正常进单人游戏,却始终无法联机,最后怀疑是启动器不兼容。
1.2 一次联机请求到底要经过哪几道关卡
联机数据从客户端发给服务端,中间至少经过三层:
第一层是服务端监听。Minecraft 服务端必须正确绑定到需要监听的端口,默认是 25565。如果服务端只监听了 IPv4,你给对方一个 IPv6 地址就没有意义。
第二层是路由可达性。客户端和服务端之间需要有路由路径。IPv4 场景下,家庭宽带多数没有公网 IPv4,数据包进不了家里的 NAT,所以需要端口映射或者内网穿透。IPv6 场景下,只要两边都有公网 IPv6 地址,理论上可以点对点直连,但前提是沿途路由和防火墙愿意放行。
第三层是防火墙策略。Windows 自带防火墙、第三方安全软件、光猫防火墙、路由器防火墙,任何一层丢弃入站数据包,游戏连接就会超时。
很多人联机失败,问题不在 Minecraft,而是第二、第三层没有打通。PCL2 和 HMCL 只是启动器,它们改变不了这一层的任何配置。
1.3 为什么很多人第一反应是 FRP 而不是 IPv6
过去很长一段时间,家庭宽带的默认方案是 IPv4 加 CGNAT。运营商的公网 IPv4 地址有限,家宽用户拿到的基本都是内网地址。这种情况下,端口映射不可用,FRP 这类内网穿透工具几乎是唯一选项。
FRP 的逻辑很简单:用一个有公网 IP 的云服务器做中转,家里电脑主动连上云服务器,玩家再连接云服务器的端口,数据就转发到家里电脑上。它不要求你家宽带有什么特殊条件,只要家里电脑能访问互联网,就能做穿透。
IPv6 则是另一种思路。IPv6 地址数量充足,运营商通常会分配全球唯一的公网地址。既然两边都有公网地址,数据就可以不走中转,直接点对点连接。但这也意味着新的配置要求:你需要懂 IPv6 地址格式、需要配置防火墙、需要处理地址变化。很多教程没有覆盖这套新流程,大家自然还是先想到 FRP。
2. 异地跨网实测:IPv6 直连的可行条件是什么
2.1 先确认两端都拿到了“公网 IPv6”,而不是链路本地地址
IPv6 直连的第一步,是确认服务端所在电脑真的拿到可用公网地址。
Windows 上可以用ipconfig /all,在“以太网适配器”或“无线局域网适配器”下面找“IPv6 地址”。如果看到的地址以fe80::开头,那只是链路本地地址,只能用于同一局域网内通信,不能用于跨网直连。
公网 IPv6 地址的前缀通常和运营商有关,常见如电信240e:、联通2408:、移动2409:,不同地区可能有差异。只要不是fe80::,也不是fc00::/7开头的 ULA 内网地址,大概率是运营商分配的公网 IPv6。
Linux 或树莓派上可以用ip -6 addr查看。如果你在树莓派上跑 Minecraft 服务端,也要先同样确认拿到了全局 IPv6 地址。注意:树莓派默认可能有多个 IPv6 地址,优先选全局地址,不要选带scope link的那个。
注意:
fe80::开头的地址只在同一局域网内有效,远程联机用它永远连不上。
2.2 ping 通和端口通是两回事,必须分开测
拿到 IPv6 地址后,先做基本连通性测试。
在服务端机器上查好地址,然后在客户端机器上执行:
ping -6 240e:xxxx:xxxx:xxxx::1能通说明设备之间具有 IPv6 路由,但别急着进游戏。ICMP 和 TCP 是不同的协议,网关防火墙很可能允许 ping,却丢弃入站的 TCP 连接。
更接近游戏场景的测试是用 Windows PowerShell:
Test-NetConnection 240e:xxxx:xxxx:xxxx::1 -Port 25565命令执行后,重点看TcpTestSucceeded是否为True。如果是True,说明从网络层面已经能访问服务端的 Minecraft 端口。如果不是,就要继续检查防火墙或路由策略,不要反复在游戏里点“连接”。
如果你习惯用命令行,也可以用 telnet 测端口,但 Windows 默认可能没有启用 telnet 客户端。PowerShell 的Test-NetConnection更直接。
2.3 电信、联通、移动热点:IPv6 直连不能一概而论
我在不同网络组合里做过测试,体验差异很大。
第一种组合:服务端在电信宽带,客户端在联通宽带。两边都有全局 IPv6,Windows 防火墙和光猫防火墙放行后,游戏里输入[IPv6地址]:25565可以正常进入世界。延迟体感比走 FRP 中转更跟手,毕竟数据没有绕到云服务器。
第二种组合:服务端在电信宽带,客户端连的是移动手机热点。同样有 IPv6 地址,路由也能 ping 通,但Test-NetConnection测端口经常超时。原因是移动网络侧对 IPv6 入站连接的限制更严格,很多热点分配的 IPv6 地址只允许上网,不允许外部设备主动连入。
这两种结果说明,IPv6 直连不是“有地址就能用”。运营商的网络策略、路由设备版本、防火墙默认行为都会影响最终结果。你只能在自己的网络环境里实测,不能拿别人的成功案例当绝对结论。
2.4 光猫和 Windows 防火墙是最大的隐形变量
IPv6 直连失败,大概率不是 Minecraft 的问题,而是防火墙。
Windows 防火墙默认会阻止来自公网的入站连接。第一次启动 Minecraft 服务端时,系统可能弹窗询问是否允许 Java 访问网络,如果你点了“取消”,服务端虽然还在运行,但外部连接会被系统挡住。
更隐蔽的是光猫。现在的家庭宽带基本都是光猫拨号,电脑拿到的是光猫分配的子网 IPv6 地址。光猫本身带防火墙,很多型号默认禁止来自 WAN 口的入站连接,你会发现自己本机的防火墙已经放行,Test-NetConnection依然超时。
这种情况下,需要进入光猫管理页面找“IPv6 防火墙”“安全设置”“入站规则”之类的选项,把 Minecraft 端口放行,或者关闭 IPv6 防火墙。不同光猫品牌界面差异很大,有的还处于运营商托管状态,玩家无法修改。如果光猫不能改,IPv6 直连这条路基本就走不通了,FRP 会是更省事的方案。
3. 有 IPv6 还需要 FRP 吗?先把这笔账算清楚
3.1 IPv6 直连和 FRP 中转到延迟、带宽、成本上的差别
| 对比维度 | IPv6 直连 | FRP 中转 |
|---|---|---|
| 适用前提 | 两端都有公网 IPv6,路由和防火墙放行 | 服务端能主动访问公网,云服务器有公网 IP |
| 延迟表现 | 点对点路径,延迟通常更低 | 多一跳中转,延迟会有额外开销 |
| 带宽上限 | 受两端家庭宽带上下行限制 | 受云服务器带宽限制,多人联机时更容易成为瓶颈 |
| 部署难度 | 需要懂 IPv6 地址、防火墙、端口格式 | 需要配置 frps、frpc,理解安全组和端口转发 |
| 稳定性 | 受运营商策略、地址变化、光猫限制影响 | 只要云服务器稳定,入口地址基本固定 |
| 运行成本 | 通常没有额外费用 | 需要一台公网云服务器,可能产生费用 |
| IP 变化处理 | 地址可能变化,需要 DDNS 配合 | 中转服务器固定,本地地址变化不影响入口 |
这张表不是要说明谁更好,而是提醒你:IPv6 直连省下的主要是中转带来的延迟和带宽消耗,代价是你要花时间处理网络配置;FRP 省下的是对家宽公网地址的依赖,代价是延迟增加、带宽受限于服务器。
3.2 IPv6 直连真正省掉的是中转,不是排错
很多人把“有 IPv6 就不用 FRP”理解成“以后联机零配置”。实际体验下来,IPv6 直连省掉的是云服务器中转这一跳,但排错流程一点都没减少。
你需要检查本机 IPv6 地址、客户端路由、Windows 防火墙、光猫防火墙、端口是否被占用、服务端是否监听了 IPv6。这一套流程并不比配置 FRP 简单多少,反而因为每个家庭的光猫型号不一样,排查起来更琐碎。
换句话说,IPv6 直连的价值是“链路更优”,不是“配置更懒”。如果你追求的是马上能用、快速稳定,FRP 反而更容易满足需求。
3.3 FRP 在哪些场景下仍然是刚需
以下场景,FRP 不是备选,而是更合适的方案:
- 服务端所在网络没有公网 IPv6,或者只有 IPv4。比如公司网络、酒店网络、部分校园网。
- 光猫被运营商限制,玩家进不去管理后台,无法关闭 IPv6 防火墙。
- 手机热点分配的 IPv6 只允许出站,不允许入站。这种情况下,即使地址是公网 IPv6,外部连接也会被运营商侧丢弃。
- 服务端程序只监听 IPv4,或者整合包内某些组件对 IPv6 支持不好,改起来成本高。
- 你希望给朋友一个固定的连接地址,不愿意每次重启路由器后重新报一遍 IPv6 地址。
- 需要稳定服务多人的场景。云服务器带宽如果足够,多人同时连接时不会占用家庭上行带宽,稳定性可能更好。
反之,如果两端网络条件都支持 IPv6 直连,并且光猫防火墙可控,FRP 就有点多余。多绕一条长链路,反而增加延迟和故障点。
3.4 我的建议:优先直连,FRP 兜底,不做二选一
我更倾向把 IPv6 直连和 FRP 看成两套可以同时准备的方案,而不是对立关系。
联机之前,先花五分钟做 IPv6 直连测试。测通了,就不用开云服务器、不用改 FRP 配置,直接输入地址进游戏。测不通,先花十分钟排查防火墙和监听地址。如果排查完仍然失败,比如光猫改不了、运营商限制入站,再启用 FRP。
这样做的理由是:IPv6 直连一旦可用,长期使用成本最低,链路也最干净。FRP 则可以作为兼容方案,专门解决你家网络环境的特殊限制。两套方案都配置好,等于给你的联机链路上了双保险。
4. 从 IPv6 直连到 FRP 兜底:完整实操过程
4.1 用 PCL2/HMCL 把服务端先跑起来
PCL2 和 HMCL 本身不提供“开服”功能,但它们可以用来启动整合包客户端。你可以在同一台电脑上先开启一个独立 Minecraft 服务端,再启动客户端进入。
最简单的方式是单人世界“对局域网开放”:进入世界后按 Esc,点击“对局域网开放”,选择端口模式,游戏会显示一个本机端口。这个端口就是你要暴露出去的端口,不一定是 25565。
如果需要长期稳定联机,建议用独立服务端。下载 Paper、Fabric 或原版服务端后,在目录下启动:
java -Xmx2G -jar server.jar nogui启动前检查server.properties:
server-ip= server-port=25565 online-mode=falseserver-ip必须留空,表示监听所有网络接口;如果填了某个 IPv4 地址,可能造成 IPv6 无法连接。online-mode按你的登录方式来,离线服通常设置为false,正版服要具体看。
4.2 连接地址千万别写错:IPv6 地址要加方括号
Minecraft Java 版连接 IPv6 地址时,地址必须放在方括号里,再跟端口。
[240e:xxxx:xxxx:xxxx::1]:25565如果写成240e:xxxx:xxxx:xxxx::1:25565,冒号会干扰地址解析,客户端无法识别。在 PCL2 或 HMCL 的多人游戏界面添加服务器时,地址填完整,端口也写清楚。
如果你用 DDNS 域名,域名本身不分 IPv4 还是 IPv6,直接填写你的域名:25565即可。
4.3 Windows 防火墙放行端口
服务端是 Java 程序,运行后系统会弹防火墙授权窗口,但保险起见,手动添加规则更可控。
打开“高级安全 Windows Defender 防火墙”,选择“入站规则”,新建规则,规则类型选“端口”,协议选 TCP,特定本地端口填写25565或局域网开放时显示的实际端口,操作选“允许连接”,配置文件勾选“域”“专用”“公用”,名称写Minecraft Server。
完成后重启一次服务端,再用客户端的Test-NetConnection验证端口。
注意:FRP 场景下,本机不需要为 Minecraft 端口添加入站规则。因为 frpc 是主动连接云服务器的,家庭路由器和 Windows 防火墙不需要开放入站端口,你只需要保证 frpc 能正常出站。
4.4 光猫/路由器 IPv6 防火墙检查点
如果本机防火墙放行后,外部连接还是超时,下一步查光猫。
登录光猫管理后台,寻找“IPv6 防火墙”“安全”“入站规则”等菜单。不同厂商界面差异很大,但整体思路一致:找到 IPv6 相关防火墙设置,为 TCP 端口25565添加入站放行规则。如果找不到细粒度规则,可以临时把 IPv6 防火墙关闭测试,确认是否它造成的问题。
如果光猫和路由器组了双层 NAT,IPv6 路径会复杂一些。理想情况是把光猫改成桥接模式,让路由器直接拨号并管理 IPv6 防火墙。如果无法改桥接,就只能看光猫是否对外开放配置权限。
这个环节最容易消耗时间。建议先做一次“关闭光猫 IPv6 防火墙 + 关闭路由器 IPv6 防火墙 + 放行 Windows 防火墙”的全放测试,确认 IPv6 直连是否能通。通了再逐步收紧规则,这样可以快速定位是哪一层防火墙拦截。
4.5 FRP 兜底配置的常见写法
当 IPv6 直连不可行时,FRP 是最常用的兜底方案。
服务端在公网云服务器上运行 frps,示例配置:
[common] bindPort = 7000 token = your_token本地电脑运行 frpc,示例配置:
[common] serverAddr = your_server_ip serverPort = 7000 token = your_token [minecraft] type = tcp localIP = 127.0.0.1 localPort = 25565 remotePort = 25565启动 frps 和 frpc 后,玩家在客户端连接云服务器的公网 IP 加25565端口,数据就会通过云服务器转发到本地的 Minecraft 服务端。
需要特别提醒两点:一是云服务器安全组必须放行 TCP7000和25565端口;二是 FRP 版本更新后,配置文件格式可能有变化,某些版本不再使用[common]段,而是把配置项放在顶层。配置前先对照你下载的 FRP 版本说明,不要照抄老教程。
注意:FRP 版本更新后配置格式可能从
[common]改为顶层字段,配置前先看对应版本文档。
5. 联机失败的真正原因:8 个最容易忽略的坑
5.1 IPv6 地址是临时的,重启电脑后连不上
Windows 默认会使用临时 IPv6 地址发起连接,这个地址会定期变化。如果你把测试时的 IPv6 地址保存下来发给朋友,也许第二天就失效了。
解决办法是使用 DDNS,把变化的 IPv6 地址映射到一个固定域名。或者在内网设备上配置固定的全局 IPv6 地址。但前提是路由器支持相关设置,并且你能接受手动配置的复杂度。
5.2 服务端绑定了 IPv4,导致 IPv6 根本无门可入
server.properties里如果没有留空server-ip,服务端就只会监听指定 IP。比如填了0.0.0.0,它监听的是所有 IPv4 地址,而不是 IPv6。
另外,JVM 启动参数里如果加了-Djava.net.preferIPv4Stack=true,Java 进程会强制走 IPv4 协议栈。外部 IPv6 连接无法进入,因为进程根本就没有监听 IPv6 地址。
排查方法是看服务端启动日志,确认它到底监听在0.0.0.0:25565还是:::25565。::通常代表 IPv6 的监听地址。
5.3 端口探测通了,客户端还是超时
如果Test-NetConnection显示端口通,但游戏里连不进去,问题多半不在网络层,而在游戏版本、模组或协议处理上。
优先检查服务端日志,看有没有对应的连接尝试记录。如果服务端完全没收到连接,说明网络路径还有问题;如果收到连接但客户端显示超时,可能是握手阶段卡住,通常和模组版本不一致、客户端资源包加载慢、正版验证失败有关。
这时候不要反复点连接,先对比两边的 MC 版本和模组列表,再试一次纯净版环境,逐步排除。
5.4 FRP 客户端已经启动,游戏端口却不通
FRP 场景下,很多问题出在 frpc 到 frps 的连接,而不是游戏本身。
先在本机执行:
telnet your_server_ip 7000如果 7000 端口都不通,说明 frpc 连不上 frps,检查安全组、frps 是否启动、token 是否一致。如果 7000 端口通,再看 frps 日志里有没有minecraft代理成功注册。
还有一种情况:云服务器的安全组只放行了 7000,没有放行 25565。frpc 虽然连接成功,但玩家连 25565 时被云服务商防火墙拦截。记得把转发端口也加到安全组。
5.5 手机热点分到的 IPv6 并不等于可入站
手机热点可能是最容易给玩家“IPv6 错觉”的场景。手机上确实能看到 IPv6 地址,电脑也拿到了地址,但运营商对移动网络的入站连接策略通常比家宽更严格。
即使ping -6能通,不代表 TCP 入站被允许。如果你的服务端在手机热点后面,建议直接放弃 IPv6 直连,改用 FRP。如果你自己是客户端连别人,手机热点问题不大,因为出站连接一般不受限制。
5.6 光猫防火墙默认禁入站,这是最隐蔽的一点
很多玩家在 Windows 防火墙放行后,仍然连不上,最后发现问题是光猫。
光猫作为家庭网络的入口,默认防火墙策略非常保守。即使你的电脑拿到了公网 IPv6 地址,也不代表这个地址可以直接被外部访问。数据包进不了光猫,自然到不了电脑。
最直接的验证方法是临时关闭光猫的 IPv6 防火墙,看连接是否恢复。如果恢复,说明就是光猫拦截;如果光猫无法配置,那 IPv6 直连就不可用,直接切 FRP。
5.7 把带“%12”的地址当成公网地址
Linux 或 Windows 的某些命令里,IPv6 地址后面会带接口索引,比如fe80::1%12。%12表示网络接口编号,只在本地有意义,不能作为远程连接地址。
问题在于,如果你把带%的地址发给朋友,Java 客户端很可能解析失败。要确认使用的是全局 IPv6 地址,地址里不包含%符号,也不是fe80::开头。
5.8 端口号不是 25565,或者被安全软件拦了
“对局域网开放”时,Minecraft 可能选择一个随机端口,不一定是 25565。每次开放都有可能变化,所以必须以游戏聊天栏里显示的端口为准。
另一个常见问题是第三方安全软件的“局域网防护”“游戏反外挂”等功能拦截入站连接。不少安全软件默认会阻止未知端口绑定。看到“外部连接尝试”提示时,不要直接选阻止,先识别是不是你的 Minecraft 服务端进程。
6. 一套可复用的联机决策框架,减少下次踩坑
6.1 四步判断法:从环境检测到客户端连接
我习惯把联机问题拆成四个阶段,每次联机失败都按这个顺序排查,而不是随机换配置。
第一步,环境检测。确认服务端和客户端都有可用的 IPv6 地址,确认服务端确实在监听对应端口。
第二步,路由可达性。用ping -6和tracert -6确认基本路由,不要只看ping结果。
第三步,端口放行。检查 Windows 防火墙、第三方安全软件、光猫防火墙、路由器防火墙,用Test-NetConnection确认 TCP 端口通。
第四步,客户端连接。在 PCL2 或 HMCL 里填入正确的[IPv6地址]:25565,观察服务端日志和客户端日志。
如果第四步失败,回退到第二步重测;如果第三步一直不通过,检查光猫;如果光猫无法放行,就直接跳到 FRP 方案。
注意:不要跳过第 3 步直接让客户端反复连接,那只是在重复同一个失败场景。
6.2 什么样的场景选 IPv6 直连,什么场景直接上 FRP
适合 IPv6 直连的场景,通常满足几个条件:
- 两端都是家庭宽带,且运营商分配了可用的公网 IPv6。
- 光猫或路由器允许修改 IPv6 防火墙策略。
- 服务端进程能正常监听 IPv6 地址。
- 你愿意花一点时间处理地址变化或配置 DDNS。
适合 FRP 的场景就简单很多:
- 一端或多端网络环境没有公网 IPv6。
- 光猫没权限修改,或者运营商限制入站。
- 你需要固定入口,让朋友随时能连。
- 多人联机时希望入口不依赖家庭网络稳定性。
如果你属于“没有时间折腾网络,只想下班后和朋友玩两把”,FRP 依然是最省心的路径。IPv6 直连更像是对网络环境要求较高的进阶玩法。
6.3 长期维护:DDNS 动态域名 + 双配置按需切换
成熟的做法不应该是每次联机前重新查 IP、重新发地址。给 IPv6 直连配一个 DDNS 动态域名,地址变化也能通过域名解析到最新值。
FRP 配置保持一份可用的配置文件,按需启动。日常如果 IPv6 直连稳定,就用直连;遇到网络调整导致 IPv6 失效,或者去了一个没有 IPv6 的酒店网络,就把 frpc 拉起来,让玩家统一连接云服务器地址。
这套双配置思路,比单纯回答“要不要 FRP”更有实用价值。它把网络环境变化纳入日常考虑,而不是简单地把某个方案定为唯一正确答案。
最后回到开头的问题。有 IPv6,还需要 FRP 吗?我的答案是:需要看实测,不能只看“有”。IPv6 直连确实能在不少环境里替代 FRP,并且延迟链路更干净;但它对光猫、路由器、ISP 策略的要求更高,不是每次都能顺利打通。FRP 虽然多绕一跳,却是一种更通用的兜底方案。最省心的长期策略,是先测 IPv6,不行再上 FRP,把两套方案都放进你的联机工具箱里。