💡
原文中文,约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 记录,以便自动选择更优的协议。
❓
延伸问答
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 记录来告知客户端当前递归解析服务器支持的通信协议,以便客户端选择合适的协议。
➡️