我发现,如果我尝试访问家庭网络内部的基于 Web 的服务,Chrome 将无法正确解析 URL。例如,如果我尝试使用其 fqdn plex.mydomain.com 浏览我的 Plex 服务器。这仅在启用“安全 DNS”设置时才会发生。它似乎将我的 Web 请求定向到我网络之外的 DNS 服务器。我实际上会被重定向到 pfsense 路由器上的一个页面,并出现错误警告我可能存在 DNS 重新绑定攻击。
我运行自己的内部 DNS 服务器。它是一台简单的 Windows 2012r2 服务器。我内部网络上的所有内容都指向此服务器,该服务器配置为将请求转发到 Google 的 DNS 服务器以获取其不知道的记录。
我喜欢使用安全 DNS(或 HTTPS 上的 DNS)。但由于上述原因,我似乎无法使用它。不过,我想知道,如果我将内部 DNS 服务器配置为支持 DNSSEC,那么可能会解决问题。我想我还需要调整 Chrome 设置以使用内部 DNS 服务器提供安全 DNS 服务。这些听起来正确吗?
还有其他人注意到这个问题吗?
答案1
您需要在 DNS 服务器上启用 DNS-over-HTTPS 支持才能使其正常工作。如果您的本地 DNS 服务器不支持 DoH,Chrome 将自动升级请求并绕过您的本地 DNS 设置,并使用 Google 首选的 DoH 服务器。遗憾的是,Microsoft DNS 目前不提供此功能。
假设您为 plex.mydomain.com 设置了公共 DNS,那么 Chrome 会测试您的 Windows DNS 服务器是否支持 DoH。Chrome 发现不支持,然后使用 DoH 向 8.8.8.8 发出请求,DoH 会解析您的公共 IP。然后,您的客户端会尝试连接到您的公共 IP,而不是内部 IP,而 pfsense 会阻止可能被视为重新绑定攻击的行为。如果您使用的是台式机,而不是有时需要外部连接的笔记本电脑,您可以通过将 Plex 服务器的本地 IP 添加到 hosts 文件中来解决这个问题。通常,hosts 文件中的条目永远不会进入操作系统级别的 DNS。但鉴于 Chrome 已经用自己的 DNS 解析器替代,您可能就没那么幸运了。
有关 DoH 在 Chrome 中的工作原理的更多信息: https://www.chromium.org/developers/dns-over-https
具体来说,来自该页面:
- Chrome 将有一个表来将非 DoH DNS 服务器映射到其等效的 DoH DNS 服务器。
- 根据此表,如果已知系统的递归解析器支持 DoH,Chrome 将升级到该解析器的 DoH 版本。换句话说,这将升级用于 DNS 解析的协议,同时保持用户的 DNS 提供商不变。同样值得注意的是,DNS over HTTPS 并不妨碍其运营商提供家庭安全过滤等功能。
- 在某些平台上,这可能意味着 Chrome 以前使用操作系统 DNS 解析 API,现在使用自己的 DNS 实现来实现 DoH。
- 将提供组策略,以便管理员可以根据需要禁用该功能
- 最终用户将能够从设置页面控制该功能(例如禁用、自动升级、选择或指定特定提供商)