解决 Xbox 在国内下载速度慢

October 23, 2021

今年入手了 Xbox Series X,发现 Xbox 在国内下载速度非常慢,无奈之下,发现遇到这个问题的玩家还不在少数,最终我花了一点时间用 Node.js 写了一个 xbox-speed-test 缓解下载速度慢的问题,它可以找到对你来说最快的 CDN 节点。

前置要求

使用本文的方法需要有一定的编程基础,且不同地区不同运营商的用户使用效果会有差距,不一定会立竿见影的效果。对于不会写代码的用户我更推荐你直接向微软客服反馈 Xbox 国行下载游戏速度非常慢,反馈的人多了微软来解决这个问题才是最好的。

要使用 xbox-speed-test,先确认以下要求是否满足:

  • 系统是 Mac 或者 Linux(Windows 可以在 WSL 环境运行)
  • 确保 Node.js 和 curl 在命令行可用

使用方法

安装 xbox-speed-test:

git clone https://github.com/isbasex/xbox-speed-test.git
cd xbox-speed-test

测试国外节点速度 (assets1.xboxlive.com):

node index.js

测试国内节点速度 (assets1.xboxlive.cn):

isCN=1 node index.js

Xbox 下载速度 测试中

测试结束后会输出各节点的速度排序表:

Xbox 下载速度排序

拿到 IP 后,在局域网内修改 DNS 记录,让 Xbox 下载强制走这个最快的 CDN 节点。

如果你用了软路由或者电脑上有 Surge、Clash、Dnsmasq 这类软件,可以很方便的修改 DNS 记录,我用 Surge 是这样配置的:

第一步:在 Surge 配置文件增加以下配置

[Host]
assets*.xboxlive.com = 23.32.241.147 // IP 指定为测试结果最快的那个
assets*.xboxlive.cn = 59.63.235.26 // 注意 .com 和 .cn 不要都指向一个 IP
dlassets.xboxlive.cn = 59.63.235.26

注意上面的配置文件我用了通配符,因为 surge 支持这种语法,对于普通 Hosts 文件这种不支持通配符语法的,你需要改成 assets1.xboxlive.com 23.32.241.147 这样的格式

第二步:在 Xbox 网络设置里选择手动,将网关地址指定为 Surge 所在电脑的 IP 地址,DNS 指定为 192.18.0.2,网络设置好之后,将 Surge 开启增强模式就可以让 Xbox 的所有请求通过 Surge 接管。

xbox-surge网络连接示意图

为了确保 Xbox 下载游戏不浪费代理流量,我额外增加了如下 Surge 代理规则:

DOMAIN,assets1.xboxlive.com,DIRECT
DOMAIN,assets2.xboxlive.com,DIRECT
DOMAIN,assets3.xboxlive.com,DIRECT

详细的 Surge 使用方法可以参考:Surge for Mac之网关模式的妙用

  1. 根据我这段时间的体验,发现只有少部分游戏下载会走 assets*.xboxlive.cn 国内节点,而大部分游戏会走 assets*.xboxlive.com 国际节点
  2. 不能给 .com 域名指定 .cn 的 ip,否则会 404
  3. 对于使用 Windows 的用户,你可以尝试在本地修改 Hosts 文件

增删 CDN 节点列表

xbox-speed-test 这个仓库里的 cdn.list 文件内置了世界各地的 Xbox CDN 节点,这些节点随着时间的推移可能会有部分失效,你可以自行通过 dig 命令配合各国的公共 DNS 查找最新的有效 CDN 节点,也可以删除无效和特别慢的节点。

dig dns

感谢

结束语

相比 PS 和 Steam,微软在 CDN 方面做的真不够好,从搜索到的信息来看好几年前就是这样。现在依旧没有改观,甚至在恶化。当两个产品整体差不多的时候。体验性细节就很重要了。
希望后续微软能尽早解决下载速度这个问题。

如果你喜欢我的内容,请考虑请我喝杯咖啡☕吧,非常感谢🥰 。

If you like my contents, please support me via BuyMeCoffee, Thanks a lot.