刚才的新闻中提到了DNS over HTTPS这项技术,这篇有问有答就简单地为各位读者介绍一下加密DNS协议的发展过程。首先我们需要了解一下传统DNS上面存在的一些问题。
DNS的安全性缺陷
DNS全称Domain Name System,在当今的互联网协议中,它是一个域名与IP对应的系统,我们通过域名访问一个地址需要经过DNS查询获取该域名的真实IP地址,比如说访问我们网站的时候,浏览器就会向系统指定的DNS服务器发送一个请求,让DNS服务器返回该域名的真实IP地址。
传统的DNS方式是通过53端口向DNS服务器发送明文的请求信息,如果有意的话,ISP可以很容易地在用户到DNS服务器之间将这个请求进行劫持,由于传统DNS请求基于无连接的UDP协议,用户端只接受最快到达的查询结果,所以ISP可以通过抢先应答的方式向用户返回错误的IP,这种做法被称为域名劫持,这是DNS协议的一个典型缺陷。
一般在完成ISP的PPPoE认证连上互联网之后,ISP会提供两个DNS服务器的IP,这两个DNS服务器就是典型的DNS缓存服务器,它缓存了用户曾经通过它请求的域名-IP对应信息,这类服务器被称为非权威域名服务器,它向用户返回的都是经过缓存的IP信息,其中就有可能存在被恶意篡改的域名-IP对,使用这台缓存服务器的所有用户在查询特定域名时都将得到错误的结果,这就是缓存投毒。
以上只是两个常见的DNS协议自身设计缺陷,它的这些缺陷主要存在于安全性方面,而利用这些缺陷,ISP可以通过域名劫持做到在网页上面插入广告,攻击者可以对用户进行DNS欺骗将用户发送的网络请求引向假的服务器以获得用户数据。而DNS协议存在的另一个缺陷就是它是用明文进行传输的,只要有心人对你的53端口进行监听,他们就可以轻而易举地知道你访问了哪些网站。
但是DNS协议作为当今互联网的基石之一,不可能轻易地用一种新的协议去取代它,只能用其他手段在DNS协议外面进行防护,提高它的安全性和私密性。从这个思路出发,人们提出了几种方案,首先是1997年提出的DNSSEC。
从DNSSEC到DNS over HTTPS
很早就有但是没完全普及的DNSSEC
DNSSEC为原本的DNS协议引入了一个数字签名验证机制,它在DNS请求包的头部加入了一段数字签名,通过现代的数字证书验证体系保证DNS查询结果的正确性,或者用信息安全的话来说,就是保证了DNS查询结果的完整性。
DNSSEC在1997年提出,发展至今已经非常成熟了,很多公共域名服务器都支持它。但是DNSSEC只解决了DNS协议的安全性问题,它没有对DNS查询内容进行加密,别人还是很容易就可以看到你访问的网站。
没有标准化的DNSCrypt
于是,又有新的选手站了出来。这次上台的是DNSCrypt,名字里面都带Crypt了那它肯定是有加密的,是的,它对DNS查询过程做了完整的加密,可以做到查询结果没有问题,别人也看不到你查询了什么域名。
但是问题来了,DNSCrypt并没有进行标准化流程,这导致了它无法在互联网上面得到广泛的应用。
DNS over TLS与DNS over HTTPS
前两个选手的挑战都没有取得完全的胜利,于是又有新的选手站上了擂台,这次的俩兄弟长得很像。DNS over TLS(DoT)使用TLS协议确保DNS查询过程的完整性和保密性,而DNS over HTTPS(DoH)则是使用HTTPS协议进行通信,比它哥哥DoT还多了一层HTTP协议。
DoT标准正式发布于2016年,而DoH标准正式成文于2018年10月,但是后者被接受的程度远超前者,这是为什么呢?还是兼容性问题。
DoH基于HTTP之上,在使用便利性上面比基于裸套TLS的DoT要高不少。相对于DoT,各大系统、浏览器都可以比较简单地将DoH整合进去。而且公共DNS对于DoH的支持速度也非常快,现在我们能够想到的国外的DNS基本都支持了DoH,它大有成为老旧DNS协议升级版的趋势。
目前支持DoH的浏览器和DNS服务器
浏览器
- Firefox
- Chrome
作为DoH标准的主要推动者,Mozila和Google自然是很快就在自家浏览器里面加入了对于DoH的支持,现在网上已经有很多在这两个浏览器中开启DoH的教程了,这里就不再赘述。
公共DNS服务器
如果想用DoH,DNS服务器的支持肯定是要的,而出于利益原因,国内ISP们的DNS短时间肯定是不会支持的,而像大的几个DNS服务器短时间内也很难加上DoH的支持,只能看国外了。
- 1.1.1.1
这是全球最大的CDN服务商Cloudflare提供的公共DNS,相当好记。
- 8.8.8.8
长期被污染的Google公共DNS在DoH下终于可以使用了。
总结
DNS over HTTPS可以说是目前最有希望的DNS协议继任者,已经得到了几大软件巨头和域名提供商的鼎力支持。如果你长期遭受DNS污染或者欺诈,在换用其他公共DNS后效果不明显的,可以尝试使用DNS over HTTPS来获得更好的网上冲浪体验。而对于非常在意自己隐私的用户来说,DNS over HTTPS更是一项不可或缺的技术,帮助你更好的保护自己的隐私不被他人窥探。