按小时计费的游戏服务器,玩多久付多久。

如何搭建一台朋友能通过互联网加入的 CS:GO 服务器

搭建一台朋友真的能通过互联网加入的旧版 CS:GO 服务器,比看上去要难。CS2 发布时 Valve 冻结了 CS:GO,随后关掉了官方匹配和游戏内服务器浏览器。你用常规方法开的服务器启动没问题,但每个想连接的朋友都只会看到 "connect failed after 30 retries"。本指南解释原因,并给出真正可用的配置。这里的每一步都在真实公网服务器上测试过。

为什么直连会失败

有两点会挡住一台联网的旧版 CS:GO 服务器:

  • 没有 GSLT。公网 CS:GO 服务器需要一个游戏服务器登录令牌(Game Server Login Token)。没有它,控制台会显示 "No Steam account token was specified. Connections will be restricted to LAN only."
  • 大厅预约门槛。即使有令牌,CS:GO 也会让直连走它的匹配预约系统。Valve 为冻结版本关掉了这套系统,所以服务器创建的预约永远无法完成。这就是你看到的 "30 retries"。

你需要准备的

  • 一台拥有真实公网 IP 的机器(一台 VPS,而不是路由器后面的家用电脑)。
  • CS:GO 专用服务器文件(steamcmd app 740)。
  • 为玩家所用应用准备的 GSLT:免费独立 CS:GO 应用用 4465480,CS2 的 csgo_legacy 分支用 730。在 steamcommunity.com/dev/managegameservers 创建。
  • MetaMod:Source、SourceMod 以及 NoLobbyReservation 插件。

可用的搭建方案

  1. 用 steamcmd 安装: +login anonymous +app_update 740 validate
  2. 删除自带的 bin/libgcc_s.so.1。冻结版本附带的是一个老旧副本,在现代 Linux 上会出问题(服务器加载 libtier0.so 时会崩溃并反复重启)。删掉它,系统的库就能改为加载。
  3. 把 MetaMod:Source 和 SourceMod 安装到 csgo/ 模组文件夹,然后加上 NoLobbyReservation。NoLobbyReservation 正是用来去掉预约门槛的,没有它客户端根本无法连接。它是最关键的一环。
  4. 按玩家使用的客户端在两个文件中设置 app id:csgo/steam.inf(appID= 那一行,保留 Windows 换行符)和 srcds_run 旁边的 steam_appid.txt。独立应用用 4465480,CS2 的 csgo_legacy 分支用 730。steamcmd validate 会把 steam.inf 改回 730,所以每次启动前都要重新设置。
  5. 把你的 GSLT 写进 server.cfg: sv_setsteamaccount YOUR_TOKEN
  6. 在真实端口上启动: -port 27015 +sv_lan 0. 如果机器有多个网络接口,还要加上 -ip 和你的公网地址,让服务器监听正确的接口。
  7. 朋友从游戏内控制台连接: connect YOUR_IP:27015

常见坑

  • "STEAM validation rejected" 表示客户端与服务器的 app id 不匹配。一个服务器只接受一种客户端:独立应用为 4465480,CS2 的 csgo_legacy 分支为 730。请检查两个 app id 文件,并确认 GSLT 是为同一个应用创建的。
  • 从随便某个仓库拿来的预编译 NoLobbyReservation .smx 往往加载不了(它是针对另一个 SourceMod 版本编译的)。请对着你的 SourceMod 重新编译一份。
  • 即使配置正确,在和服务器同一个家庭网络里测试也会失败,因为连接会在你的路由器上发夹回绕(hairpin)。请从真正的外部网络测试。

或者干脆全都跳过

对于一款 Valve 不再更新的游戏,要让这么多环节一直正常运转是很麻烦的。在 2hours.gg 上,一台 CS:GO 服务器已经把令牌、插件和配置都预先做好了。你只管部署、选地图,朋友连接 IP 就行。不用编译插件,也不用管理令牌。 部署一台 CS:GO 服务器.

← 返回所有指南