简介
最近弄了个xbox series主机,在主机上下载游戏的时候,发现下载速度的随机性很大,有时候能有100Mbps左右,大部分时候在10-20Mbps之间。经过搜索,发现其实大陆是有xbox的服务器的,只是默认分配不到。也看了些方案,说是用nginx之类的web服务器拦截http请求,然后返回301或302状态,让xbox跳回带cn后缀的服务器。看了上述原理,我感觉在DNS上完成应该就行,于是在家里服务器上搭建了CoreDNS。选用CoreDNS是因为之前在k8s上用过CoreDNS,对相关配置比较熟悉,性能也不错。
安装和配置CoreDNS
CoreDNS的安装十分简单,直接下载对应平台[1]的二进制包就行,也可以用Docker安装,看个人喜好。
配置只需要在安装包的当前目录下建立一个名字为Corefile
的文件就行,最初我的配置如下:
. {
rewrite name substring xboxlive.com xboxlive.cn
forward . /etc/resolv.conf
log
errors
cache
}
保存之后直接启动./coredns
。
启动之后可以使用dig命令查看是否生效(可以修改@后的地址为服务器地址):
dig @127.0.0.1 www.xboxlive.com
通过查看应答,发现跟之前的不一样,而跟xboxlive.cn的返回一样,表示已部署成功并生效。
在xbox中设置dns
打开xbox的网络设置,然后在高级设置中配置对应地址就行。
测试xbox下载速度
马上去试了下载游戏,发现在浏览游戏界面时的速度变快了,但是下载速度还是在10-20Mbps之间。觉得有点奇怪,再次搜索相关的文章,发现可能是下载的游戏不是国区游戏的关系,最好是找到亚洲其他国家cdn的ip地址替换[2]。
经过测试几个cdn地址,最终的Corefile
配置如下:
. {
hosts {
219.76.10.33 assets1.xboxlive.com
219.76.10.184 assets1.xboxlive.com
219.76.10.33 assets2.xboxlive.com
219.76.10.184 assets2.xboxlive.com
219.76.10.33 dlassets.xboxlive.com
219.76.10.184 dlassets.xboxlive.com
fallthrough
}
rewrite name substring xboxlive.com xboxlive.cn
forward . /etc/resolv.conf
log
errors
cache
}
修改之后重启CoreDNS。
配置文件中的log那一行,在测试稳定之后可以删掉,这样以后就不会每次xbox请求都会出现日志了。
经过同一个游戏和其他游戏的下载验证,速度确实变快了很多,通常都在200Mbps左右,虽然还是没跑满带宽,但是比之前要好太多了。
不过比起ps5什么都不配置就能达到300-400Mbps的下载速度来说,xbox的真是令人一言难尽。
参考资料
[1] CoreDNS下载页面:https://github.com/coredns/coredns/releases
[2]xbox cdn相关:https://bbs.a9vg.com/thread-5478226-1-1.html
评论
发表评论