20

DNS-over-HTTPS杂谈(2)没有想象的那么好

 4 years ago
source link: https://www.tuicool.com/articles/YrQZNzR
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

《DNS-over-HTTPS杂谈(1)概述》 介绍了DoH机制的一些原理,本文说下我对它的一些疑问,主要观点来源于 Curl 的作者 Daniel Stenberg,他发博文的频率非常高,曾经也是 Mozilla 的员工,如果想要了解 HTTP&Web 相关方面的知识,他的博客是必须订阅的。

第一个问题就是DoH为什么要使用HTTPS协议传输,而不是使用TLS协议(或其他协议)传输?

这一方面说明了HTTP(HTTPS)协议的通用性,HTTP协议虽然感觉上性能不佳(其实这属于旧观点了),但通用性非常好,只要是互联网应用,都可以轻松使用它传输消息,而且考虑到DoH是浏览器厂商力推的,Chrome和Firefox如果要发送DoH查询请求,那是非常的方便。

如果使用TLS协议承载DoH,那么DoH Clinet的改造就比较大了,没有HTTPS协议处理那么方便,比如要自行校验证书。

并且HTTPS协议的443端口一般不会被block(屏蔽),而如果使用其他端口传递DoH,很有可能被路由器、代理服务器过滤掉。

再比如你要搭建一个DoH Server(递归DNS),简单使用HTTPS Proxy就可以了,根本无需了解DNS知识,非常的方便。

我第一次听说DoH的时候,第一个考虑的问题是性能问题,传统DNS基于UDP,只要一个RTT就能响应,而HTTPS协议可并不是这样的。

其实HTTP/2协议可以多路复用,连接可以复用,你在浏览器访问十个不同的网站,Chrome只要和DoH Server建立一次连接;甚至基于Server Push功能,DoH Server能够主动给你发送更新,所以从这个角度看,性能问题不用太担心,但实际情况可能没有那么乐观。

传统DNS服务器是使用IP地址访问的,而DoH使用主机域名访问,能够进行负载均衡,通过CDN技术,让你访问最近的DoH Service。

第二个问题,对DoH基于HTTPS协议的一些质疑,传统DNS协议是非常轻量的一个应用层协议,而DoH感觉是对DNS协议的一个改造,并且还要使用HTTPS协议传输消息,总感觉怪怪的。

DoH更像一个集中式的服务,而DNS本身是阶层式的服务,DoH Service对外是一个递归服务器,内部还是采用迭代式的传统DNS查询方式,如果全面推广DoH,难道迭代式的查询就没了?比如你查询一个DNS解析,首先向Root DNS查询,它如何响应?告诉你下一个DNS的主机名(用于你迭代解析),由于这一块我还没深入了解,目前是我提出的一个疑问。

采用DoH,需要用户(或应用程序)去单独配置DoH Service(不是全局配置),还要考虑soft fail问题,使用起来非常麻烦。

采用DoH,由于是HTTPS协议,也很容易被跟踪,比如Cookie,带来新的一系列安全性问题,同时DoH Service能够了解到更多用户的行为,会不会爆发出新的罪恶之源?

采用DoH,是基于Geo获取用户的地址,如果获取不准,会导致DNS解析出的结果不一样,比如你在北京,权威服务器解析出的主机地址可能是A,如果Geo定位错误,权威服务器根据你的IP地址可能会解析到另外一个主机IP。

传统DNS排查非常容易,而如果采用DoH,出现问题如何排查?到底是DNS服务器的问题,还是HTTPS传输的问题?HTTPS消息是加密的,怎么知道具体问题是什么?

第三个问题,DoH会替代传统DNS吗?

我觉得不会,而且很有可能这个项目会失败,至少不会有大量的推广应用,本来很简单的一个DNS查询,因为有HTTPS协议的存在会衍生出新的问题。

对于用户来说,DoH配置那么复杂,有多少人会操作呢?任何一项技术,如果让用户难以使用,那么很难推广。

另外DoH还是要和传统DNS配合使用,比如第一次需要解析DoH Service的主机名,所以还难全面替换,从设计上来看,为了安全,把本来很简单的解决方案搞复杂了。

最重要的是DoH打破了原有DNS的工作机制,现在的PC,手机上的程序都基于系统的lib查询DNS,而如果改为DoH,就要自行处理DNS查询,且不说复杂度,这个过渡时间没十年根本不可能,所以没有动力去改造。

大家想想HTTPS的推广目前做的不错,原因在于Chrome等浏览器的推广,Web网站不改造,我就告诉用户你的网站不安全,逼得你要去改,同时Web改造工作量也不大(仅仅是http到https的替换)。可DoH,Chrome等浏览器没有大杀器逼着用户去配置使用DoH,所以目前的服务对象只能是我们这样的技术人员。

再考虑ISP愿意去改造吗?Windows这样的操作系统会愿意改造吗(让你全局配置DoH Service),且不说主观意愿,复杂度也高了很多,尤其对于ISP,可能还会破坏他们的既得利益。

再比如Root DNS,权威DNS会改造吗?你如何说服他们?如果他们也改造了,那传统DNS消息格式可能就不存在了。

所以目前DoH只能是浏览器厂商的一个尝试性项目,解决访问网站的安全性问题(且还存在很多问题),很难全面替换,即使要部分替换也要花上数十年,但技术是不断提高的,未来可能会有新的、更好的解决方案,让我们拭目以待。

aYbieiq.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK