如何把无公网的求生之路 2 服务器借助 VPS 转发注册到 Steam Master 列表中
如何把无公网的求生之路 2 服务器借助 VPS 转发注册到 steam master 列表中 先说在前,这个方法解决的是:一台无公网的游戏服务器,单靠 frp 等软件内网穿透不能进入匹配列表和路人联机的问题,因为 l4d2server 的注册方式是向 steam master server 发送注册请求和心跳包,上报服务器 IP 和端口。下面的方法需要至少具备以下条件: 有一台 gameserver 和一台公网 VPS 操作系统均为 Linux 发行版 了解 wireguard 的基本使用 可能只对很少人感兴趣,因为目前大部分服务器都会加上 -nomaster 隐藏来防止扫段 DDOS,只留给部分亲友联机,或者确实有人有这方面需求但是有自己的方法(反正我没搜到相关帖子) 背景 Master Server Query Protocol - Valve Developer Community 详细写了关于 gameserver 的注册流程和请求响应报文格式,开始我的想法就是反向代理然后手动构建注册请求,结果在 Discussion 末尾有人提到 16 年之后游戏注册和查询使用了内部加密协议,之后的查询只能用 steam webAPI。如果尝试在 gameserver 启动后的控制台输入 heartbeat 同时抓包, 会出现几个使用 TLS 加密的 packet。经过一番搜索,最终只得出来两个可能的方法:1.逆向报文/server 端 2.让公网 VPS IP 作为默认网关。 第一种方法显然对我来说不可能(有这技术我还折腾这吗)随后知道了 Linux network namespace 机制的存在,它可以让 srcds_run 在虚拟的网络空间运行,并且把 VPS 当出口网关,同时不影响我服务器上其他正常的业务。 ...