跳至主要内容

使用CoreDNS加快XBOX在中国大陆的下载速度

Welcome file

简介

最近弄了个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

评论

此博客中的热门博文

国密SM2签名封装成PKCS7格式

在国内做金融行业,难免会有被强制使用国密算法的情况,而且一般还会指定必须使用硬件加密机之类的设备,所以我也稍微的研究了一下国密算法,使用软算法签名并封装 PKCS7 格式(文档中的一个交互)。 以下是基于 Bouncy Castle 的示例,密钥对的生成可以参考 Bouncy Castle 中 test 包下 SM2 相关代码 public static String sign ( ) throws Exception { //加载公钥 byte [ ] plainText = "hello, world" . getBytes ( ) ; FileInputStream input = new FileInputStream ( "F:\\certificate\\public.cer" ) ; CertificateFactory certificateFactory = new CertificateFactory ( ) ; X509Certificate certificate = ( X509Certificate ) certificateFactory . engineGenerateCertificate ( input ) ; input . close ( ) ; //加载私钥,private为换成实际的私钥 PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec ( "private" . getBytes ( ) ) ; //SM2算法实际上为ECC算法,并指定了一些参数值,所以这里的参数是EC KeyFactory factory = KeyFactory . getInstance ( "EC" , "BC" ) ; PrivateKey privateKey = factory . generatePrivate ( spec ) ; //以下为签名并封装成PKCS7格式 byte [ ] signedMessag

Spring Boot Actuator 2 示例

Welcome file 简介 Spring Boot Actuator为应用程序提供了各种开箱即用的运维特性,可以与应用方便的交互和监控。 使用环境:Java 11 和 Spring Boot 2.4.3.RELEASE 集成Spring Boot Actuator 在Spring Boot中集成Spring Boot Actuator与集成其他的框架类似,在 pom.xml 里引入相关的starter就可以: < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-actuator </ artifactId > </ dependency > < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-web </ artifactId > </ dependency > 由于大部分的使用场景还是web,所以这里也用Spring MVC做示例。 配置好 pom.xml 后,默认actuator仅暴露一些基本功能,实际使用中,根据需求暴露对应功能。为了简便测试,这里在 application.yml 中配置暴露全部功能: management : endpoints : web : exposure : include : "*" endpoint : health : enabled : true show-details : always probes : enabled : true shutdown : enabled : true metr

NextCloud数据目录迁移

最近服务器的环境坏了,所以迁移了NextCloud的数据目录。不过在迁移过程中有点小问题。 环境: Ubuntu 18.04 Docker 19.03.7 1.NextCloud页面不正常,Docker日志显示XX目录permission denied 参考了 这里 的做法,不过是把  /var/www/html/   整个目录的权限都修改为  chown -R www-data:www-data ,之后就不再报权限问题了。 2.数据库配置修改 因为NextCloud是在初始化时填的数据库连接信息,所以直接迁移数据目录的情况下,会导致应用连不到新的数据库环境。此时可以找到数据目录下的  config/config.php 文件,直接修改数据库连接配置。