Android 系统设置私密 DNS

Android 系统设置私密 DNS

💡 原文中文,约9900字,阅读约需24分钟。
📝

内容提要

本文介绍了作者为安卓用户重新设计的 DNS over HTTPS (DoH) 服务 ZNS,解决了安卓系统无法直接使用的问题。通过将用户标识放入子域名中,支持 DoH 和 DNS over TLS (DoT) 协议,并分享了申请泛域名证书的过程及安全措施,最终实现了 ZNS 服务的正常运行。

🎯

关键要点

  • 作者推出了自建的 DNS over HTTPS (DoH) 服务 ZNS,解决安卓用户无法直接使用的问题。

  • 为了支持安卓,用户标识被放入子域名中,形式为 https://${TOKEN}.zns.lehu.in/dns-query。

  • 申请泛域名证书需要使用 DNS-01 challenge,存在安全风险,因此在安全设备上申请并上传证书。

  • 使用 acme.sh 脚本申请泛域名证书,并通过 rsync 同步到 ZNS 服务器。

  • ZNS 服务实现了自动加载 SSL 证书的功能,确保证书更新时不会影响服务。

  • 安卓系统默认不支持 DoH,只有在白名单中的私密 DNS 才会使用 DoH,其他则使用 DoT。

  • 实现 DoT 协议的处理逻辑,监听 853 端口并将请求转换为 DoH 请求处理。

  • ZNS 支持 DDR(RFC9462),通过 SVCB 记录告知客户端支持的通信协议。

  • 希望安卓能够支持通过 DoT 查询 DDR 的 SVCB 记录,以便自动选择更优的协议。

🔎

延伸解读

安卓系统的私密 DNS 限制

安卓系统对私密 DNS 的支持存在限制,用户只能在白名单中的 DNS 服务使用 DoH 协议,其他则默认使用 DoT。这种设计可能影响用户体验,尤其是对希望使用 DoH 的用户来说,需注意选择合适的 DNS 服务。

安全性与证书管理

在申请泛域名证书时,使用 DNS-01 challenge 可能带来安全风险。作者通过在安全设备上申请证书并上传到 ZNS 服务器,降低了风险。这一过程强调了在处理敏感信息时,安全措施的重要性。

ZNS 服务的协议兼容性

ZNS 服务通过实现 DoT 协议的处理逻辑,能够将 DoT 请求转换为 DoH 请求处理。这种兼容性设计使得用户在不同协议间切换时更加灵活,提升了服务的可用性。

延伸问答

ZNS 服务是什么?

ZNS 服务是一个自建的 DNS over HTTPS (DoH) 服务,旨在解决安卓用户无法直接使用 DoH 的问题。

如何在安卓系统中设置私密 DNS?

在安卓系统中设置私密 DNS 时,需要输入格式为 https://${TOKEN}.zns.lehu.in/dns-query 的域名。

申请泛域名证书的过程是怎样的?

申请泛域名证书需要使用 DNS-01 challenge,通过提供域名管理 API 创建和删除特定 TXT 记录来验证域名所有权。

安卓系统为什么不支持 DoH?

安卓系统默认不支持 DoH,只有在白名单中的私密 DNS 才会使用 DoH,其他则使用 DoT 协议。

ZNS 如何处理 DoT 请求?

ZNS 通过监听 853 端口,将 DoT 请求转换为 DoH 请求处理,并将返回内容转换为 DoT 数据返回给客户端。

DDR 和 SVCB 记录有什么关系?

DDR(RFC9462)使用 SVCB 记录来告知客户端当前递归解析服务器支持的通信协议,以便客户端选择合适的协议。

🏷️

标签

➡️

继续阅读