本文主要基于 Windows 系统,其他系统请自行确认。
本文尚不完整,但我不一定什么时候能写完。先发出来,能帮到一些人。
同时也是整理我自己的思路。如果你有更好的方案,请不吝赐教。
玩游戏的代理方案
要解决代理引起的问题,首先要明白代理的工作原理、数据包会被怎样处理。
玩游戏需要什么代理
支持 UDP 转发:UDP 是网络游戏通信的主要手段。
网络质量:全程要求丢包少、低延迟。
代理的服务端
主要有这几种情况:
自建代理或翻墙机场的普通节点:线路质量一般都不足以满足游戏要求的丢包少、低延迟。机场节点可能不支持 UDP 转发。而自建代理也需要一定的网络知识才能配置正确。
机场的游戏节点:没用过,待补充。
游戏加速器:原理上也是境内服务器中转流量到境外,专门对延迟、丢包做了优化。
(《游戏加速器的工作原理》还在研究中。)
已经买了翻墙服务,有必要再买游戏加速器吗?
游戏加速器跟中转机场的工作原理是类似的,运营方式也是类似的(境内服务器、境外服务器、运维)。
游戏加速器是合法生意,机场是非法生意。
综上,同价格下,机场要承担更大风险,无法提供更好的服务。
上面这一段只是理论分析,我没怎么用过机场,欢迎读者让我长见识。
代理的客户端
游戏一般都不支持配置代理?
我主要玩单机游戏。在我玩过的网络游戏中,我确实想不到哪个游戏平台客户端、游戏是支持配置代理的。
欢迎读者列举支持配置代理的游戏,我会收集在这里。
本地用哪种方式进行代理?
系统代理、TUN / TAP ,还是透明代理?
不同的代理方式会带来不同的问题。
如果使用游戏加速器的话,是否与正在使用的代理冲突?
劫持软件网络调用( LSP 、WFP )
待补充
Layered Service Provider
例如:Proxifier
系统代理
使用时简单明了,灵活、侵入性小。但可能也是导致问题最多的。
软件一般默认,甚至只支持 HTTP 代理而非 SOCKS5 ,而 HTTP 代理不支持转发 UDP 。
而且,由于 HTTP 代理是应用层代理(七层代理),代理软件可能会修改 HTTP 报文,导致应用故障。
TUN / TAP (本机)
待补充
我目前需求还不强烈,没有仔细研究。
透明代理
待补充
游戏加速器的路由器插件,属于这种模式(我自己分析的,不一定正确)。添加路由表、iptables 劫持流量,TUN 响应 fake IP 。只代理游戏流量,其他直连。代理规则不透明,且不支持配置。
VPN
待补充
分流规则(路由)
除了游戏加速器,其他的代理方案都需要配置分流规则。
游戏域名的代理需求复杂
- 下载游戏要直连
- 游戏社区( steamcommunity.com )要代理
- 游戏通信:到服务端的要代理,P2P 的境内直连、境外代理
- 游戏商店:有时要直连,有时要代理(国区、跨区购买)。
这是游戏玩家使用代理时的一个主要的麻烦来源。
如果玩一些不够热门的游戏,那一般也找不到资料总结它的分流规则。于是就需要自己抓包研究。且不说所需的网络知识,自己研究的这个过程就挺麻烦的,而且浪费时间。
有网友维护规则,但域名都不够完善:
UsbEAm Hosts Editor ( UHE )
这是网友 Dogfight360 在持续维护软件。我简单分析一下(不一定正确):
工作原理是通过改 Hosts 选择合适的 CDN 服务器来解决下载、使用问题。它不是代理,它只是帮你优选 IP 。对于没有翻墙代理,也没有游戏加速器的玩家,这个软件非常棒。但它有这些局限性:
- 不管怎么优选 IP 也还是直连,无法解决:自己宽带差、国际线路丢包等问题
- 域名不全
- Hosts 文件不支持泛解析。遇到多个子域名的服务,维护困难。
Steam
Steam 客户端下载与访问分流 / 下载使用境内服务器
本段内容于 2024-12 月验证
Steam 客户端支持系统代理,不支持手动配置代理。Steam 客户端会自动判断所在区域,并分配最近的下载服务器;可以在 设置 - 下载 - 下载地区 确认。或者运行(Win+R) steam://open/console ,打开 Steam 控制台,输入 user_info ,回车,查看 IPCountry 。
使用「绕过大陆」路由时,会发现下载地区也变到了代理所在地区,这时下载游戏会消耗代理节点的流量。
fshexray 、Xray 配置以下域名直连,其他代理,即可实现 Steam 下载与访问分流:
domain:steamserver.net,
geosite:steam@cn,
steam@cn 包括哪些域名,可点击链接查看。
配置逻辑(转载自 zhanbao2000 ):
- steam 客户端通过 steamserver.net 最终判断下载位置,该域名在 geosite:steam 中,且没有 @cn 标记。
- 若 steamserver.net 经过代理,则 steam 会从 steamcontent.com 域名下载游戏(例如 cache1-hkg1.steamcontent.com )。
- 若 steamserver.net 不经过代理,则 steam 会从 xz.pphimalayanrt.com 域名(阿里云)下载游戏,该域名在 geosite:steam@cn 中。
- 该操作不影响 steamcommunity.com 等没有 @cn 标记的域名,这些域名依旧会被代理。
Xbox
Windows 无法打开 Xbox 游戏( XGP / PGP )
如果是开启系统代理后无法打开
本段内容于 2024-12 月验证
游玩 XGP 游戏时,需要验证帐户身份(「是否允许此应用访问你的信息?」)才能打开游戏。而开启系统代理后,验证身份的那个页面必然报错:
发生了错误
请稍后再试。
0X80190001
发送反馈
Windows 上的 Xbox 应用是 UWP 应用,网络环境默认是隔离的,需要解除回环限制能才访问系统代理。
可以用 Fiddler ( fshexrayN 、Clash 等)附带的 EnableLoopback.exe(解除 Win10 UWP 应用回环代理限制)。
打开软件,在需要解除限制的应用前打勾,最后 Save Changes,就可以了。
但是,具体要给哪些应用取消限制,我在网络上还没发现能解决我的问题的方法。这个问题持续了 2 年多,最近被我偶然解决了。
对于 Xbox 应用:
- 只勾选 Xbox 这一个就行,其他的 Xbox 开头的应用,没发现有代理的必要。勾选后可以加快打开 Xbox 应用的速度,及应用内的页面加载速度。
- 而负责帐户验证的应用是「你的帐户」,Package 名:
Microsoft.Windows.CloudExperienceHost_cw5n1h2txyewy 。勾选解除限制后,就能开着系统代理,正常打开游戏了。(我在互联网上还没看到有人提过这个)
- 可以顺便把 Microsoft Store 、OneDrive 、邮件和日历,也勾选
如果不开代理也打不开
微软认证服务的域名是 licensing.mp.microsoft.com 。
2023-02 月开始,微软的认证服务器 IP ( 20.197.103.57 )被墙( 例 1、例 2 )。2024-12-13 测试,这个 IP 443 端口 TCP 也还是不通。
这个 IP 被墙超过 1 个月之后(具体时间不详),微软才配置 DNS 解析去掉这个 IP 。在此期间,只能把域名加入代理,或者使用加速器,才能玩 Xbox 游戏。
Ubisoft 育碧
分流规则
本段内容于 2024-12 月验证
育碧的服务器目前是在亚马逊云美国机房,并且会根据源 IP 自动切换商店语言。相关域名没有被 GFW 屏蔽。
以下列出下载域名,使用的是 Akamai 的服务,「绕过大陆」下会通过代理下载。
测试用的游戏是《疯狂兔子:编程学院》(免费游戏)。只是简单测试,不一定完整,也不一定适合你的情况。
e11196.dscd.akamaiedge.net (主要)
e11196.g.akamaiedge.net
e7923.d.akamaiedge.net
a1961.g2.akamai.net
a109.d.akamai.net
这几个域名都没被上文提到的几个分流规则集收录,IP 位于境外。添加直连的时候,最好精确匹配域名,避免影响其他服务。
Ubisoft Connect 侦测到无法复原的错误且必须关闭
本段内容于 2024-12 月验证
Ubisoft Connect 侦测到无法复原的错误且必须关闭。
损毁转储已保存于"C:/ProgramFiles (x86)/Ubisoft/Ubisoft Game Launcher/crashes"
这个转储文件一直都是空的,也没法分析。
系统代理为 HTTP 代理的情况下,打开 Ubisoft Connect 可能是正常的,但下载游戏时必然会出现这个错误。
如果系统代理为 SOCKS5 代理,那 Ubisoft Connect 直接就打不开,报错如下:
登录 Ubisoft Connect 时发生错误。请重启客户端后再试。(Error dolphin-028)
如果你使用了代理才出现这个报错,那么 育碧官方支持 的方法是没用的。
这个问题的原因是育碧客户端对 HTTP 代理的适配不好(转载自 shunf4 ):
这个是 HTTP 响应头部字段的顺序问题,当 Ubisoft Connect 通过 HTTP 代理请求 http://uplaypc-s-ubisoft.cdn.ubi.com/uplaypc/downloads/... 后取得的响应,其头部字段必须按照原响应的头部字段顺序进行排列,否则当某些头字段顺序不符合时就会报这个错。
原响应的头部字段顺序排列如下,供参考:
如果你用的是 TUN 模式或透明代理,注意观察下载游戏时有没有走代理。
我的做法:
我主要使用系统代理,目前就只有育碧这一个平台需要调整配置,而且也不经常用,所以我不太想花时间研究它的报错。
使用时,关闭系统代理,打开 Ubisoft Connect 。之后看需要,因为我的宽带直连也基本能玩,有需要的时候,再开加速器。注意登录平台时,保持 IP 属地固定(直连、代理都行,但是要固定),这样可以减少登录平台时输入账号、密码、验证码的次数(那个「记住本设备」从来没有管用过)。
Nintendo 任天堂
以前写过一篇以 Switch 为例的网络优化的教程:
《为什么开了加速器还掉线?《斯普拉遁 3 》》
更新日志
2024-12-12 初版。本文计划把用代理玩游戏时的常见问题都收录。我目前只知道这么多,先发出来,可以帮助其他玩家。未来学习、研究后会继续完善。
我是个爱自由、爱生活、认真生活的人,兴趣是分享信息。
我想跟你交朋友,在那之前,要确认一下我们是不是同类。
https://t.me/fengwq
|