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网络。在这种情况下,有多少实体能够知道你访问了哪些网站呢?

  1. 会议组织者(即Wi-Fi管理员)
  2. 会议组织者的互联网服务提供商(ISP)
  3. 所有路由该ISP流量的ISP或公司

在2013年之前,大多数网络流量都是通过未加密的HTTP传输的,这意味着上述所有实体都能看到你访问了哪些具体的网页。如今,由于HTTPS和Let's Encrypt的普及,大多数流量都已加密。尽管这些实体仍然可以看到你访问了某个域名(如wikipedia.org),但他们很难确定你访问了哪个具体的页面。这是因为你的设备在访问网站之前会发送DNS查询,将域名解析为IP地址。

1.png

加密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
  • Google
  • OpenDNS
  • Quad9
  • 以及其他10多个配置文件

在iOS上,安装配置文件后,进入系统设置 => 通用 => 配置文件,选择下载的配置文件并点击“安装”按钮。

所有配置文件都可以在Github上找到,欢迎你查看源代码并根据需要进行调整。

好了,废了这么多话,我们来开始安装一个, 我这儿用dnspod,也就是腾讯云的...


手机版原理是一样的,也是下载描述文件,然后在设置中安装证书即可.

下载需要的配置文件

3.png

比如我,选择的dnspod,双击提示我已经下载
4.png

查看描述文件,如果你的版本低于14,那就搜索一下,搜描述文件
2.jpg
有个黄色感叹号,表示未安装
5.png
双击它
6.png
点击左下角这个安装
7.png
确认安装,输入系统密码
8.png
它已经正常了,现在双击打开它,看详情
9.png
是不是有个未签名,对的,我们选择的是profiles目录下的,所以它是未签名的,那么还有个目录signed目录,有同样的文件,我们用这个目录下的dnspod安装
10.png
步骤同上,再次查看结果,红色的未签名已经没有了...
11.png


未签名的配置文件(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证书加密的,至于加密方法,此章不讨论,下章我们研究一下,它可以用来签发应用...嘿嘿

标签: macOS

相关文章

macOS下对现有 DMG 文件进行空间扩容

在macOS下对现有的DMG文件进行空间扩容,可以通过使用hdiutil命令来实现。具体步骤如下:打开终端应用。使用hdiutil resize命令来调整DMG文件的大小。例如,如果你想将一个名...

我的macOS工具箱 常用软件整理

开发工具Java、Go、PHP、前端、iOS等,我基本上就用这五个,最近最出的cursor很火,但是用了一段时间后,还是没有IDEA全家桶来的爽...数据库Mysql常用的是Sequel Ace...

图片Base64编码

CSR生成

图片无损放大

图片占位符

Excel拆分文件