一群人装好游戏、连上同一个网络,却看到空空的服务器列表。第一反应是怪网络、去找隧道,但游戏可能压根没发出过能由隧道承载的数据包。在任何 VPN 登场之前,先弄清有人点下“多人游戏”时,这个版本实际做的是三件事里的哪一件。

这三种并不能互换。一种走直接用本地流量,一种向服务查询还有谁在玩,一种没有账号就拒绝启动。隧道对第一种有帮助,对第二种无关,对第三种无能为力。这个顺序很重要,因为三者都可能给出同一张空列表,却有三种不同的修法。

游戏在列出主机之前会检查什么

多数多人游戏菜单会按顺序做几件事:确认已登录账号、检查版本权益、向后端查询房间或好友,最后才去看本地网络。任何一步都可能静默失败,而界面通常两种情况都显示同一张空列表。所以“局域网坏了”是一个光看屏幕下不了的诊断。后端报错、权益过期和子网隔离,在房间界面上无法区分,而其中只有一个是网络问题。

改网络设置之前,先读这个版本自己的文档。重制版常常砍掉直接 IP 加入、把局域网发现换成托管房间,或者要求原版从不需要的平台账号。例如,现行《帝国时代 II:决定版》的支持页面介绍的是在游戏服务器上托管的房间,由你选择可见性、密码和地区;那是需要针对该版本核实的应用流程,不是关于任何早期版本的证据。

除了版本名称,也要记下构建号。一次补丁可能把游戏从一种模式换到另一种,而按首发构建写的说明,描述的可能是已经不存在的菜单。

发现数据包死在第一个路由器上

直接局域网联机通常依赖广播或多播:主机向整个子网地址宣告自己,客户端监听这个宣告。这类数据包在设计上就不可路由,所以两台机器之间的路由器即使单播能通,也会把它们丢掉。同一台交换机上的两个设备能互相看见;同样的两个设备分别在不同 VLAN,或在开启客户端隔离的访客网络上,就看不见。主机和手机通常也用各自的发现协议沿用同一套路,所以平台和游戏本身一样重要。

“同一个 Wi-Fi,却没有服务器”的报告大多来自这里。开启隔离的访客 SSID、把主机放到独立网段的 mesh 系统,或把本地子网当作公共网络的防火墙配置,都会在普通上网正常的同时打断发现。在认定是游戏的问题之前,先检查客户端隔离设置和子网掩码。

房间服务不是网络通路

游戏用托管房间时,对局列表来自运营方的服务器,而不是你的子网。VPN 改变的是你的数据包通往那些服务器的路径,但不会改变服务给你看哪些房间、对局托管在哪个地区,或你的账号有没有加入资格。那些是后端给出的答案,再多路由也改不了。

在这种模式下,隧道最好的情况是一个延迟变量,最坏的情况是一个地理识别问题,因为服务看到的是出口地址,而不是你所在街道的地址。同样的道理适用于好友邀请和组队系统。它们是平台中介的账号级功能,所以才会有同一局域网上的两个玩家在房间里互相看不见,却都能加入陌生人的对局。

隧道能重建什么,不能重建什么

当玩家身处不同地点、且游戏支持按地址直接加入时,隧道才有用。路由型隧道在两个站点之间传输单播流量;桥接型隧道,或提供虚拟以太网段的覆盖网络,还能承载直接局域网联机所依赖的广播发现。这就是要理解的区别:路由在子网之间搬数据包,桥接让两个站点看起来像同一个子网。

隧道做不到的,是加上应用根本没实现的联机模式。如果这个版本删掉了直接加入,虚拟局域网段也变不回来。如果房间要求账号,隧道满足不了这项检查。如果两台机器在同一个 NAT 后面、彼此之间有隔离,覆盖网络也许能绕过隔离,但这也是绕过策略,需要跟管理网络的人谈。

测试游戏实际走的那条路

先从同一子网里一台主机、一台客户端开始,关闭隔离,不用隧道。如果这样能工作,游戏和这个版本就支持你想做的事,之后的任何失败都是路径问题。如果这里就失败,隧道从来都不是答案。

然后记下说明书对加入方式、端口或发现机制、以及任何账号要求的说法。一次只改一个变量:先子网,再网段,最后隧道。记下主机地址和确切的菜单路径,好让下一次直接复现测试,而不是重吵一遍。

把版本、谁来当主机、大家怎么加入、这一局需要哪个账号或订阅定下来,并在约好的日子之前写下来。它能结束的争论比任何隧道都多,也留下了测过什么的记录。

相关文章