在一部分 DNS 问题严重的地方,将运营商 DNS 更换为公共 DNS 可能还是不能解决 DNS 劫持等问题。
这是因为我们的 DNS 流量没有经过加密,就和 http 协议一样,运营商或是第三方还是能够清楚的知道:我们发起了一个 DNS 请求,我们想要知道 xxx 网站的地址。下图展示了一个 DNS 请求发起的过程,可以很清楚的看到,我请求了什么网址〔用十六进制码显示,右侧是转义以后的结果〕

如果我们给我们的 DNS 流量加个密,就和 https 流量一样,那么运营商不就不知道我们我们的 DNS 请求了吗。这就是 DNS over HTTPS (下文简称 DoH )和 DNS over TLS (下文简称 DoT )技术要做的事。
他们分别利用 HTTPS 〔超文本传输安全协议〕和 TLS〔传输层安全协议〕这两种行业通用的安全协议,将我们的 DNS 请求发往 DNS 服务器。运营商或是第三方在整个传输过程中,只能知道发起者和目的地,除此以外别的什么都知道,甚至都不知道你发起了 DNS 请求。
同时 HTTPS 和 TLS 都会使用网络数字证书确保对面的身份,这样传输的过程中无论是任何第三方都不能修改 DNS 的请求内容和最后的结果。保证你请求的结果就是你最后想要的。
DoH 和 DoT 不仅能为经常被运营商和第三方劫持 DNS 的人群提供安全可靠的 DNS 解析结果,还能给极为看重隐私人群补上上网隐私保护流程中的最后一块短板。
下图是目前支持 DoH 或者 DoT 的 DNS 服务器列表,右键新标签放大

我应该怎么使用 DoH 和 DoT 技术
对于 iOS 设备
大家可以前往 App Store 中下载 Cloudflare App〔也被称为 1.1.1.1〕,下载以后,打开应用,直接打开开关即可享用到来自 Cloudflare 提供的 DoH 服务。

Adguard iOS 版的用户可以手动选择 DNS 服务器〔需要高级订阅〕,前往 Adguard iOS 版本的设置,选择 DNS,再选择合适的 DNS 服务器即可
,当然你也可以选择手动输入自定义的 DNS 服务器〔DoH 和 DoT 均支持〕使用这项功能。

对于 Android
Android 9 以及以上的版本,你可以前往无线和网络,选择指定加密 DNS 服务(部分设备上可能被命名为:私人 DNS〕
,输入 DNS over TLS 的地址即可。

对于 Android 9 以下的版本,或者没有指定加密 DNS 服务,你可以前往各大应用市场下载 Intra 应用,进行配置。前往 Intra 的设置,选择 DNS over HTTPS 服务器,输入或者选择 DNS over HTTPS 服务器
即可。

当然,如果你是 Adguard Android 版的用户,你可以前往 Adguard Android 版本的设置,选择 DNS,再选择合适的 DNS 服务器即可
,和 iOS 版本一样你也可以选择手动输入自定义的 DNS 服务器,使用更适合自己的 DNS 服务器。

对于 macOS & Windows
对于完全不熟悉终端命令的用户来说,现在想在 macOS 或者 Windows 上得到安全可靠的解析,那么 Firefox 浏览器是首选,前往 Firefox 的设置,常规-网络设置-设置,选择启用基于 HTTPS 的 DNS
,这样就打开了 Firefox 上的 DoH 服务了。

当然,用户基数更大的 Chrome 在未来也会在实验性设置里提供对应的选项〔本文写作时 Chrome 正式版本为 77,从 78 版本开始将在实验性设置里提供对应的选项,78 正式版本将在 10 月 22 日推送〕。打开你的 Chrome,在地址栏中输入 chrome:https://flags/#dns-over-https,回车,在右侧下拉箭头中选择 Enable。
这样就打开了 Chrome 78 上的 DoH 服务了。

如果你自己有的技术基础,也可以选择 DNScrypt 作为本地的 DNS 客户端,提供安全可靠的 DNS 解析。当然你对代码有更深入的了解,想要给全家或是全公司提供安全的 DNS,那么红鱼的这份文档就特别适合你。当然,希望在未来这两大操作系统能加入对应的设置,给我们提供额外的安全的选择。
以上就是这篇文章的所有内容了,希望能够让你能够了解到目前的 DNS 的发展情况,并帮助到因为 DNS 被劫持或是默认 DNS 不那么好用,备受苦恼的你。