macOS中或iOS等苹果系统中使用DNS over HTTPS(DoH)保护你的网络隐私
2020年9月17日,苹果终于在其最新的操作系统iOS 14和macOS Big Sur中加入了对DNS over HTTPS(DoH)和DNS over TLS(DoT)标准的支持。这两种技术统称为加密DNS,旨在提升用户的网络隐私和安全性。
熟悉描述的直接可以下载使用.如果发现已经过期请移步Github
未签名:Google DnsPod Alibaba
已签名:Google DnsPod Alibaba
加密DNS的背景
想象一下,你正在参加一个会议,并使用会议提供的公共Wi-Fi网络。在这种情况下,有多少实体能够知道你访问了哪些网站呢?
- 会议组织者(即Wi-Fi管理员)
- 会议组织者的互联网服务提供商(ISP)
- 所有路由该ISP流量的ISP或公司
在2013年之前,大多数网络流量都是通过未加密的HTTP传输的,这意味着上述所有实体都能看到你访问了哪些具体的网页。如今,由于HTTPS和Let's Encrypt的普及,大多数流量都已加密。尽管这些实体仍然可以看到你访问了某个域名(如wikipedia.org),但他们很难确定你访问了哪个具体的页面。这是因为你的设备在访问网站之前会发送DNS查询,将域名解析为IP地址。
加密DNS的作用
通过加密DNS,中间人(如ISP)只能看到一个IP地址(如91.198.174.192),这是wikipedia.org的IP地址。有趣的是,ipinfo.org告诉我们,至少有19个域名与这个IP地址相关联。这意味着,你可能是访问了invoker.com,而这个网站今天恰好使用了相同的IP地址。在这种情况下,ISP无法区分你访问的是哪个域名。
这种技术在云计算时代尤为重要,因为一个亚马逊的IP地址可能被五个不同的客户共享使用。
注意:即使使用了加密DNS,TLS连接中仍然包含未加密的域名信息,称为SNI(服务器名称指示)。不过,通过使用TLS 1.3和加密的SNI,这个问题可以得到解决。
DoH与DoT:哪个更好?
虽然有很多文章比较DoH和DoT,但归根结底,它们的主要区别在于:
- DoH:DNS over HTTPS更难被中间人监控和审查,因为它看起来像普通的HTTPS流量,而DoT需要使用单独的端口853。
- DoT:理论上,DNS over TLS可能更快,因为它位于网络协议栈的更低层,但根据基准测试,实际情况并非如此。
因此,我的建议是直接使用DoH。
加密DNS的风险
如果ISP不再解析DNS地址,那么谁来解析呢?
目前,最常见的选择是Cloudflare的1.1.1.1公共DNS,或者是Google的8.8.8.8。这意味着,与其让ISP监控你的DNS流量,不如让Cloudflare或Google来做这件事。
当然,他们可以将收集到的数据出售,或者用来创建某个人的档案。
理想情况下,应该有成千上万个快速的公共加密DNS服务器。
当然,你也可以选择不使用公共DNS服务器。如果你想要更高的隐私保护,可以设置自己的加密DNS服务器。
如何使用DoH/DoT
如果你一直在使用Firefox,启用DoH就像在网络设置中输入DNS服务器IP一样简单。
要在iOS和macOS上为所有应用程序原生启用DoH/DoT,你需要安装一个配置文件。这个配置文件会告诉操作系统使用DoH/DoT。注意:仅仅在系统偏好设置中设置Cloudflare(或其他)服务器的IP是不够的,你需要安装一个配置文件。
可用的配置文件
- Cloudflare
- OpenDNS
- Quad9
- 以及其他10多个配置文件
在iOS上,安装配置文件后,进入系统设置 => 通用 => 配置文件,选择下载的配置文件并点击“安装”按钮。
所有配置文件都可以在Github上找到,欢迎你查看源代码并根据需要进行调整。
好了,废了这么多话,我们来开始安装一个, 我这儿用dnspod,也就是腾讯云的...
手机版原理是一样的,也是下载描述文件,然后在设置中安装证书即可.
下载需要的配置文件
比如我,选择的dnspod,双击提示我已经下载
查看描述文件,如果你的版本低于14,那就搜索一下,搜描述文件
有个黄色感叹号,表示未安装
双击它
点击左下角这个安装
确认安装,输入系统密码
它已经正常了,现在双击打开它,看详情
是不是有个未签名
,对的,我们选择的是profiles
目录下的,所以它是未签名的,那么还有个目录signed
目录,有同样的文件,我们用这个目录下的dnspod安装
步骤同上,再次查看结果,红色的未签名
已经没有了...
未签名的配置文件(dnspod-https.mobileconfig)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>DNSSettings</key>
<dict>
<key>DNSProtocol</key>
<string>HTTPS</string>
<key>ServerAddresses</key>
<array>
<string>1.12.12.12</string>
<string>120.53.53.53</string>
</array>
<key>ServerURL</key>
<string>https://doh.pub/dns-query</string>
</dict>
<key>PayloadDescription</key>
<string>Configures device to use DNSPod Encrypted DNS over HTTPS</string>
<key>PayloadDisplayName</key>
<string>DNSPod over HTTPS</string>
<key>PayloadIdentifier</key>
<string>com.apple.dnsSettings.managed.C498EC0C-EF6C-44F0-BFB7-0000658B99AC</string>
<key>PayloadType</key>
<string>com.apple.dnsSettings.managed</string>
<key>PayloadUUID</key>
<string>065AB183-5E34-4794-9BEB-B5327CF61F27</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>ProhibitDisablement</key>
<false/>
</dict>
</array>
<key>PayloadDescription</key>
<string>Adds the DNSPod to Big Sur and iOS 14 based systems</string>
<key>PayloadDisplayName</key>
<string>DNSPod over HTTPS</string>
<key>PayloadIdentifier</key>
<string>com.paulmillr.apple-dns</string>
<key>PayloadRemovalDisallowed</key>
<false/>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>030E6D6F-69A2-4515-9D77-99342CB9AE76</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
签名的就不折腾了,它用的是https证书加密的,至于加密方法,此章不讨论,下章我们研究一下,它可以用来签发应用...嘿嘿
版权声明:本文为原创文章,版权归 全栈开发技术博客 所有。
本文链接:https://www.lvtao.net/system/apple-macos-ios-doh-dns-over-https.html
转载时须注明出处及本声明