很多游戏写着「支持局域网联机」,两个人坐在同一间屋子里能玩,一旦分开就互相看不见。这不是游戏坏了,而是局域网联机依赖的三层条件里,有一层在异地不成立。
第一层:发现——游戏怎么找到对方
局域网联机最常见的发现方式是广播和组播:游戏向本网段喊一声「有人开房吗」,同网段的机器回应。
问题在于,广播不会跨路由器。你和朋友各自在自家的网络里,中间隔着运营商的路由,广播包发不出去,游戏自然认为「没有房间」。
这一层不解决,后面做什么都没用。表现就是:房间明明建了,对方列表里空的。
第二层:寻址——双方是不是「同一网段」
有些游戏不用广播,而是让玩家手动填 IP 直连。这时要求两台机器能互相路由到对方的地址。
家用宽带普遍在 NAT 后面,你没有独立公网 IP,对方主动连你连不进来。表现是:填了 IP 也超时。
解决方向只有两个:
- 做端口映射,把外网端口转到内网机器(需要公网 IP 和路由器权限)
- 用虚拟局域网,把双方先放进同一个虚拟网段,让游戏以为你们在同一个路由器下
第三层:传输——线路质量决定体验
前两层通了,只能保证「连得上」。能不能玩,取决于延迟和丢包。
常见的坑:
- 跨运营商(电信 ↔ 联通 ↔ 移动)走普通线路会绕路
- Wi-Fi 信号弱、信道拥挤,丢包比延迟更致命
- 后台在下载、直播、云同步,把上行带宽吃满
排查时先看丢包再看延迟。延迟 60ms 但丢包 5%,体验远差于延迟 120ms 零丢包。
一张排查顺序表
| 现象 | 大概率卡在哪层 | 先做什么 |
|---|---|---|
| 好友列表里看不到房间 | 发现 | 确认双方在同一虚拟网段/房间 |
| 填 IP 直连超时 | 寻址 | 检查 NAT 类型,改用虚拟局域网 |
| 能进但频繁卡顿 | 传输 | 换近节点、改用有线、关后台 |
| 进游戏后立刻断开 | 版本/防火墙 | 对齐游戏版本,放行程序 |
用万联之后,这三层各解决到哪一步
- 发现:创建房间后,成员在客户端里就能看到彼此,游戏的局域网广播被限制在虚拟网段内
- 寻址:每台机器由客户端分配同网段的虚拟 IP,不用记地址、不用做端口映射
- 传输:节点选择决定链路质量,跨运营商仍可能延迟,要接着按传输层的方法排查
落地时按这个顺序核对:
- 双方都在同一个房间,成员列表能看到对方
- 虚拟 IP 前三段一致,最后一段不同
- 游戏里选「局域网」再刷新房间列表
三条都满足仍然看不到房间,问题通常在游戏版本或防火墙,而不是组网本身。客户端入口见万联下载页。
小结
异地联机的本质,是把「不在同一网段」这件事伪装成「在同一网段」。搞清发现、寻址、传输三层,遇到问题就能判断该改哪一步,而不是反复重装客户端。