MCLF-CN / docs

公开的实现规范/文档
12 stars 0 forks source link

让启动器使用 HTTPS DNS #12

Closed zyxkad closed 5 months ago

zyxkad commented 5 months ago

检查项

您是什么类型的用户

第三方网站管理/负责人(MC相关的)

请简单的说一下您的想法

启动器下载资源时使用基于 HTTPS 协议的 DNS 服务器

它能解决什么样的问题/带来什么样的帮助

openbmclapi 访问量很大,并且存在很多未备案的服务器

bangbang93提供的域名 933.moe 在部分地区已经被 DNS 污染,会出现无法解析的问题

故此,需要使用加密的 HTTPS DNS 或 基于 TLS 的 DNS 替代容易被污染的 UDP DNS

期望的结果

解决部分地区无法下载资源的问题

是否有对这个方案的相关链接?

https://en.wikipedia.org/wiki/DNS_over_HTTPS

https://en.wikipedia.org/wiki/DNS_over_TLS

附注

No response

zkitefly commented 5 months ago

我在思考这是启动器能做的到的吗?

🤔

zyxkad commented 5 months ago

我在思考这是启动器能做的到的吗?

🤔

为什么不能呢,启动器控制下载连接啊

8MiYile commented 5 months ago

@zkitefly curl都能做到 启动器做不到? 启动器比curl还拉?

xiaozhu2007 commented 5 months ago

这个提议很好,可以解决大部分DNS欺骗/劫持的问题,方便特殊地区的下载

ZhaiSoul commented 5 months ago

这个需求有点奇怪,如果用户了解DoT的话,他可以给自己系统的DNS设置为DoT,而不是启动器主动设置DoT,因为有些加速器需要通过劫持解析让流量走特定的节点。

zyxkad commented 5 months ago

这个需求有点奇怪,如果用户了解DoT的话,他可以给自己系统的DNS设置为DoT,而不是启动器主动设置DoT,因为有些加速器需要通过劫持解析让流量走特定的节点。

大多数用户不会为了下载一个游戏去学技术或者请技术专家.

VPN等的原理也是新建虚拟网卡,而不是劫持DNS

ZhaiSoul commented 5 months ago

这个需求有点奇怪,如果用户了解DoT的话,他可以给自己系统的DNS设置为DoT,而不是启动器主动设置DoT,因为有些加速器需要通过劫持解析让流量走特定的节点。

大多数用户不会为了下载一个游戏去学技术或者请技术专家.

VPN等的原理也是新建虚拟网卡,而不是劫持DNS

如迅游加速器,他曾经将BMCLAPI重定向指定的节点。我并不是说VPN会劫持DNS,而是加速器会使用多种方式组合来对网络进行优化,其中就包括修改解析,如HOSTS,甚至直接DNS

同时,我们也不能给用户擅自决定选择使用哪个DoT,本质上还是需要用户自己了解了,然后自行选择,不要擅自给用户做决定。

zyxkad commented 5 months ago

同时,我们也不能给用户擅自决定选择使用哪个DoT,本质上还是需要用户自己了解了,然后自行选择,不要擅自给用户做决定。

那么可以在启动器内加入一个选项

ZhaiSoul commented 5 months ago

同时,我们也不能给用户擅自决定选择使用哪个DoT,本质上还是需要用户自己了解了,然后自行选择,不要擅自给用户做决定。

那么可以在启动器内加入一个选项

那你认为用户会去了解这个选项有什么用,并会选择开启吗? 其次,Java要17版本才能手动设置请求访问使用独立的DoT,.net需要6才支持,然而目前启动器使用的运行环境均低于这个版本。

我们也理解该issue的原因,但是DoT这个严格意义来说与我们无关,这应该属于用户自行了解的内容。

该请求基本不会考虑去实现

zyxkad commented 5 months ago

那你认为用户会去了解这个选项有什么用,并会选择开启吗?

默认指定一个服务器并开启即可

其次,Java要17版本才能手动设置请求访问使用独立的DoT,.net需要6才支持,然而目前启动器使用的运行环境均低于这个版本。

DoT是一个应用层协议,与 HTTP 类似,不存在需要特殊硬件或虚拟机支持的地方。各语言的标准库里可能没有,但第三方库一定会有

ZhaiSoul commented 5 months ago

那你认为用户会去了解这个选项有什么用,并会选择开启吗?

默认指定一个服务器并开启即可

其次,Java要17版本才能手动设置请求访问使用独立的DoT,.net需要6才支持,然而目前启动器使用的运行环境均低于这个版本。

DoT是一个应用层协议,与 HTTP 类似,不存在需要特殊硬件或虚拟机支持的地方。各语言的标准库里可能没有,但第三方库一定会有

目前各大启动器使用的WebClient之类的库均是使用语言标准库里自带的,如果要实现你说的这个功能,需要把所有用到网络请求的库替换为第三方库,相当于重构所有网络请求的代码,这么做有必要吗?如此大量的工作带来的收益呢?

zyxkad commented 5 months ago

目前各大启动器使用的WebClient之类的库均是使用语言标准库里自带的,如果要实现你说的这个功能,需要把所有用到网络请求的库替换为第三方库,相当于重构所有网络请求的代码,这么做有必要吗?如此大量的工作带来的收益呢?

标准 httpclient 是可以指定 resolver/dialer 的啊, 只要找一个实现了这个 Resolver/Dialer 接口的库就可了啊

zyxkad commented 5 months ago

对于使用 resolver, 最多加10行代码就能完成

ZhaiSoul commented 5 months ago

目前各大启动器使用的WebClient之类的库均是使用语言标准库里自带的,如果要实现你说的这个功能,需要把所有用到网络请求的库替换为第三方库,相当于重构所有网络请求的代码,这么做有必要吗?如此大量的工作带来的收益呢?

标准 httpclient 是可以指定 resolver/dialer 的啊, 只要找一个实现了这个 Resolver/Dialer 接口的库就可了啊

如果你能找到相对应语言的第三方库,你可以提交给其他启动器作者,问他们的想法,但我们之前经过讨论得出一致看法,该功能付出的时间成本不值得。目前各大启动器自己的issue都未必有时间处理完,你要求各大启动器还去花时间找这类库并尝试迁移,这里面的时间成本谁来承担?

zyxkad commented 5 months ago
Screenshot 2024-03-28 at 20 10 59
ZhaiSoul commented 5 months ago
Screenshot 2024-03-28 at 20 10 59

我们得出的一致结论就是不考虑该issue的请求,收益和付出已经不是不成正比了,而是要动手术的级别了,稍后我会关闭该issue

zyxkad commented 5 months ago

换个DNS也能成为动手术级别,,,我不理解你用的什么语言写的启动器

Silverteal commented 5 months ago

这并不是一个“需要”标准化的问题,不同启动器对此拥有自己的实现不会带来什么问题。通俗的讲,标准化只关注那些“存在不一致会带来显著麻烦”的问题。

wifi-left commented 5 months ago

这是系统层面的问题,而不是启动器的问题

burningtnt commented 5 months ago

现在 BMCLAPI 节点的默认域名到底有多大的污染?如果影响很大,应当重新打开本 Issue 以让启动器一起支持强制性的 HTTPS DNS 解析

wifi-left commented 5 months ago

9X P 8}I`7$BOR`O2@FH_JA

8MiYile commented 5 months ago

如果启动器层面不做更改,那么发联名公告,

遇到下载问题
请访问 https://alidns.com https://dns.pub 
尝试根据教程修改DNS,并重试下载
JingHai-Lingyun commented 5 months ago

PCL 这边是拒绝了,见 Hex-Dragon/PCL2#3579