AdGuard DNS 支持结构化 DNS 错误,这是什么意思?
这次 AdGuard DNS v2.10 的发布,堪比 DNS-over-QUIC 实现的程度。AdGuard DNS 再次成为全球首个在成为正式标准前率先引入新功能的公共 DNS 解析器。这次的亮点是「结构化 DNS 错误」(英语:Structured DNS Errors,简称:SDE)。
您可以阅读以下详细解析。如果时间有限,欢迎查看简要说明:
- 当网站在 DNS 级别被阻止时,用户将看到类似「无法访问此网站」或「没有互联网连接」的错误提示,却没有说明被阻止的原因是什么。
- 为了解释这一点,DNS 服务器可以将用户重定向到带有解释的页面。但 HTTPS 网站(大多数网站都是 HTTPS),要求单独的证书。
- 更简单的解决方案是:结构化 DNS 错误 (SDE)。通过新技术,DNS 响应中可以附带更多信息(如阻止原因、责任方和联系信息),以便浏览器读取并传达给用户,从而大大提升信息传达的透明度。
- 要使该系统生效,浏览器必须支持 SDE。这正是我们所倡导的。
结构化 DNS 错误是什么:详细解析
DNS 级别过滤在全球被广泛使用,AdGuard DNS 就拥有超过 1 亿用户。人们使用 DNS 过滤来屏蔽广告、追踪器,或保护儿童。即使用户没有手动设置 DNS,他们仍然会遇到 DNS 过滤,这可能是由于所在国家或公司的政策所致。几乎所有互联网用户都曾遇到过因 DNS 被阻止的网站。
DNS 级别的阻止会限制整个域名的访问权限。当用户尝试访问 https://example.com 时,浏览器将发送 DNS 请求,DNS 服务器回复该域名已被阻止,浏览器显示「无法访问此网站」或「没有互联网连接」的通知。
若未手动阻止该域名,用户可能不明白无法打开页面的原因,疑惑是否需要重新加载页面或检查网络连接。
- 出现错误?要重新载入页面?
- 没用。互联网连接有问题?
- 互联网没问题呢。网页被阻止?是的,为什么呢?
- DNS 服务停止响应?报告错误。
缺乏 DNS 服务与用户之间的有效沟通就是一个问题。DNS 服务不仅希望而且可以解决该问题,比如将用户重定向到一个解释页面,让他们知道,发生了什么并提供相关联系信息。
那么为什么不这么做呢?
其中的难点在于以下原因:
- 如果是 HTTP 网站(连接未加密)DNS 服务器可以安全地将用户重定向到一个非加密的页面。
- 如果是 HTTPS 网站,浏览器会执行证书认证,并期望看到 https://example.com 的有效证书。如果 AdGuard DNS 将用户重定向到自己的页面,浏览器会显示证书验证错误。
一种解决方案是在用户设备上安装特定证书,但这并非总是可行或安全的。更简便的方法是在 DNS 响应中发送更多信息。
为此,2020 扩展 DNS 错误标准被引入,使得 DNS 响应可以包含一个错误代码和 EXTRA-TEXT
字段,提供进一步的说明。而结构化 DNS 错误草案还提议在 EXTRA-TEXT
字段中加入 I-JSON(一种受限的 JSON 格式)文件,便于浏览器轻松读取并以用户友好的方式显示。
这些 I-JSON 文件可以包含:
- 阻止原因
- 供查询的联系信息(如果页面被误拦截)
- 此次 DNS 过滤责任方(可选)
- 其他可选信息
这极为便捷。这样的系统可以提升 DNS 服务与用户之间的透明度,保障用户的安全。如果用户理解网站被阻止的原因,他们就不会轻易放弃一个安全的 DNS 服务而转向一个未加密的服务。
实现「扩展 DNS 错误」和「结构化 DNS 错误」需要什么
浏览器必须支持这些新技术。毕竟,浏览器决定用户能看到什么信息,无论是简单的连接错误,还是对被阻止网站的详细解释及后续措施。
因此,我们呼吁浏览器厂商支持 RFC8914 及其提议的更新。此更改将帮助数十亿用户更透明、友好地使用互联网。
AdGuard DNS 中的实际效果
我们创建了一个 Demo 扩展。它显示,如果浏览器支持「结构化 DNS 错误」的话,AdGuard DNS 将如何工作。有了这个扩展,当用户尝试访问被 AdGuard DNS 阻止的网站时,它将读取通过 SDE 发送的信息,并显示一个简洁易懂的说明页面。相比上面的例子,这更容易理解,对吧?
您可以从 Chrome Web Store 或 GitHub. 安装该扩展。
其他改进:为用户和企业提供更个性化的体验
我们的用户群体既包括为家庭设置 DNS 的个人用户,也包括大型组织。需求各异:有些人仅需手动设置 10 台设备即可,有些人则需连接 1000 台设备并倾向于自动化设置。为更好地了解用户需求,我们新增了引导问卷,以收集关于用户目标和预期设备数量的信息。
这将帮助我们为用户个性化 DNS 服务,例如为需要的用户提供更多自动化选项信息。