TL;DR: 手机设置里的"私人DNS",是安卓 9(Android Pie)开始由系统原生提供的一项功能,本质是把原本明文发出的域名查询,通过 TLS 加密隧道发给指定的加密 DNS 服务器(协议即 DNS over TLS,简称 DoT,标准端口 853,见 RFC 7858)。它能防止你"查了哪个网站"被局域网、运营商偷看或中途篡改,但它不是 VPN——只加密"查域名对应地址"这一步,不加密网页内容,也挡不住恶意软件去改 hosts 文件。
私人DNS到底是什么?先从一个比喻说起
我们可以把上网想象成打电话:你想联系"张三",但手机只能拨号码,于是需要先查一本"电话簿"——你说一句"张三的号码是多少",电话簿回给你一串数字。这本电话簿就是 DNS(域名系统),那个查询动作就是 DNS 查询。
问题在于,传统 DNS 查询是明文的,像一张写在明信片上的便签:从你的手机到电话簿服务器之间,路过的每一个环节(家里的路由器、咖啡店的 WiFi、运营商的线路)都能读到你写了什么。你查了哪家银行、哪个购物网站、哪台设备,全程可见。
"私人 DNS"做的事,就是把这张明信片塞进一个密封信封:查询内容在手机本地用 TLS 加密,到达加密 DNS 服务器后才拆开。路上任何人只能看到"你在和某个加密 DNS 服务器通信",看不到具体查了哪个域名。
安卓设置里的"私人DNS":官方定义到底是什么
很多人第一次见到"私人 DNS"这四个字,是在安卓手机的「设置 → 网络和互联网 → 高级」里面。根据 Android 官方文档,从 Android 9(Pie)开始,系统引入了名为"Private DNS"的机制,它使用 DNS over TLS 为 DNS 查询提供安全与隐私保护。进入该菜单后,通常有三个选项:
| 选项 | 含义 |
|---|---|
| 关闭 | 退回传统明文 DNS,完全不加密 |
| 自动(Automatic) | 系统尝试用加密 DNS,若网络不支持则静默回退到明文(即 RFC 7858 所说的"机会式隐私") |
| 指定主机名(Private DNS provider hostname) | 强制走你填写的加密 DNS 服务器,连不上就直接报错,不回退明文(严格模式) |
需要强调:安卓这个"私人 DNS"菜单,走的是 DoT(端口 853),而不是浏览器里常见的 DoH。 如果你在浏览器设置里看到"安全 DNS",那通常是另一套基于 HTTPS 的实现。两者最终目的相似,但技术路径不同,下文和本站加密 DNS 首页有专门区分。
它的工作原理:TLS 隧道到底包了一层什么
按照 RFC 7858 的规定,一台支持 DoT 的 DNS 服务器必须在 TCP 的 853 端口上监听并接受连接;客户端想获得隐私时,也要主动向服务器的 853 端口建立一条 TCP 连接,紧接着完成 TLS 握手。握手通过后,这条通道就被加密了,之后所有的查询和响应都在这条加密通道里传输。
RFC 7858 还明确了一条安全细节:853 端口上绝不允许传输明文 DNS 消息,哪怕 TLS 握手失败也不行——这样做是为了防止"降级攻击",即有人故意让你的加密连接失败,逼你退回明文。
和这个机制配套的还有两种"信任等级":
- 机会式隐私(Opportunistic):能加密就加密,连不上就算了,优先保证能用;
- 密钥固定/指定主机名(Key-pinned):你事先认准某台服务器的身份证书,只信它一家,连不上就报错,安全性更强但更"挑网络"。
安卓的"自动"对应前者,"指定主机名"对应后者。
私人DNS能帮你挡住什么,又挡不住什么
这是最容易被误解的地方。一张表说清楚:
| 场景 | 私人DNS(加密)能防吗 |
|---|---|
| 在公共 WiFi 下,别人偷看你查了哪些域名 | 能,查询内容被 TLS 加密 |
| 中途有人篡改你的 DNS 回答、把你导去假网站 | 能,TLS 校验服务器身份,伪造回答通不过 |
| 运营商或本地网络记录你的浏览域名偏好 | 能,他们只能看到你在和加密 DNS 服务器通信 |
| 加密网页(HTTPS)本身的内容 | 不需要——网页内容本来就该由 HTTPS 加密 |
| 不加密网页(HTTP)的内容 | 不能,私人 DNS 只管"查地址"那一步 |
| 恶意软件在你手机里改 hosts 文件 | 不能,那是系统本地文件层面的问题 |
| 病毒、钓鱼链接、木马下载 | 不能,那是内容与终端安全范畴 |
一句话总结:私人 DNS 保护的是"你和 DNS 服务器之间这一段路",不是你的整段上网。 它不是 VPN,VPN 加密的是你几乎所有流量;私人 DNS 只加密域名查询这一小类流量。
它和运营商DNS、公共DNS、自建DNS是什么关系
这几个概念经常被混在一起,其实它们是不同维度的东西:
- 运营商 DNS:你插卡、连宽带后自动分配的那台 DNS,通常明文、默认开启;
- 公共 DNS:像 Google、Cloudflare 等提供的免费递归 DNS 服务,你可以手动指定地址;其中一部分同时支持 DoT/DoH 加密;
- 自建 DNS:自己在服务器上搭一套解析服务(比如 AdGuard Home),地址由你说了算。
"私人 DNS"描述的是传输方式(加密),而不是某一台特定的服务器。你可以把私人 DNS 指向某家公共加密 DNS,也可以指向自己家搭的加密 DNS。本站的免费加密 DNS 服务汇总整理了常见可选地址,可按需挑选。
你属于该开私人DNS的那一类人吗?
如果你符合下面任意两条,就建议开启:
- 经常在咖啡店、机场、酒店等公共 WiFi 下上网;
- 在意"运营商能看到我访问了哪些网站"这种长期隐私画像;
- 曾遇到过打开网页被强制跳到广告页、运营商登录页;
- 想要一个"设一次、全局生效"的加密方案,而不是每个 App 单独配。
反过来,如果你长期只在自己家里、受信任的网络环境使用,且对隐私不敏感,那它对你的提升有限;部分校园网、企业内网还依赖内网域名,强制指定严格模式的私人 DNS 可能导致内网服务打不开——这时建议先用"自动"模式观察。具体连不上时的排查,可参考本站安卓私人 DNS 连不上的排查全流程。
常见问题 FAQ
Q:私人 DNS 开了之后会不会变慢?
A:加密握手确实增加了一点点开销,但主流加密 DNS 服务器都有任播节点,实测多数场景下差异很小,某些情况下反而比运营商 DNS 更快。
Q:iPhone 上也有"私人 DNS"吗?
A:iOS 没有安卓那个同名菜单,它通过"配置描述文件"来开启加密 DNS,设置路径和安卓不同,但底层同样是 DoT/DoH 这类加密协议。
Q:私人 DNS 能代替 VPN 吗?
A:不能。私人 DNS 只加密域名查询,VPN 加密的是你几乎所有网络流量,两者解决的问题范围完全不同。
参考来源
- RFC 7858 — Specification for DNS over Transport Layer Security (TLS), IETF, 2016:支撑"DoT 标准、TCP 853 端口、机会式与密钥固定两种隐私剖面、853 端口禁止明文传输"等事实。
- Android Developers — Behavior changes in Android 9 (Pie) DNS privacy:支撑"Android 9 起系统引入 Private DNS、应用需遵循 DNS-over-TLS 行为"的官方定义。
- Google Public DNS — Get Started (Android Private DNS 配置说明):支撑"Android 9+ 在 设置 → 网络和互联网 → 高级 → 私人 DNS 中配置主机名"的操作路径。
- Google Support — Manage advanced network settings on your Android phone (Private DNS 三模式):支撑"关闭 / 自动 / 指定主机名"三档模式的官方说明。