通过 HTTPS 保护 DNS 客户端 (DoH)

从 Windows Server 2022 开始,DNS 客户端支持 DNS-over-HTTPS (DoH) 。 启用 DoH 后,Windows Server 的 DNS 客户端和 DNS 服务器之间的 DNS 查询会通过安全的 HTTPS 连接传递,而不是以纯文本形式传递。 通过跨加密连接传递 DNS 查询,可以保护它免受不受信任的第三方的拦截。

配置 DNS 客户端以支持 DoH

如果为网络接口选择的主 DNS 服务器或辅助 DNS 服务器位于已知 DoH 服务器列表中,则只能将 Windows Server 客户端配置为使用 DoH。 可以将 DNS 客户端配置为需要 DoH、请求 DoH 或仅使用传统的纯文本 DNS 查询。 若要将 DNS 客户端配置为支持具有桌面体验的 Windows Server 上的 DoH,请执行以下步骤:

  1. 在“Windows 设置”控制面板中,选择“ 网络 & Internet”。

  2. 在“网络 & Internet”页上,选择“ 以太网”。

  3. 在“以太网”屏幕上,选择要为 DoH 配置的网络接口。

    以太网设置的屏幕截图

  4. 在“网络”屏幕上,向下滚动到 “DNS 设置 ”,然后选择“ 编辑” 按钮。

  5. 在“编辑 DNS 设置”屏幕上,从自动或手动 IP 设置下拉列表中选择“手动”。 此设置允许配置首选 DNS 和备用 DNS 服务器。 如果已知 DoH 服务器列表中存在这些服务器的地址,则会启用 “首选 DNS 加密 ”下拉列表。 可以在以下设置之间进行选择,以设置首选的 DNS 加密:

    • 仅通过 HTTPS) 加密 (DNS 。 选择此设置后,所有 DNS 查询流量都将通过 HTTPS 传递。 此设置为 DNS 查询流量提供最佳保护。 但是,这也意味着如果目标 DNS 服务器无法支持 DoH 查询,则不会进行 DNS 解析。

    • 加密首选,允许未加密。 选择此设置后,DNS 客户端将尝试使用 DoH,然后回退到未加密的 DNS 查询(如果无法这样做)。 此设置为支持 DoH 的 DNS 服务器提供最佳兼容性,但如果 DNS 查询从 DoH 切换到纯文本,则不会为你提供任何通知。

    • 仅未加密。 发到指定 DNS 服务器的所有 DNS 查询流量均未加密。 此设置将 DNS 客户端配置为使用传统的纯文本 DNS 查询。

      dns 设置的屏幕截图

  6. 选择“ 保存 ”,将 DoH 设置应用于 DNS 客户端。

如果使用 cmdlet 使用 PowerShell Set-DNSClientServerAddress 为客户端配置 DNS 服务器地址,则 DoH 设置将取决于服务器的回退设置是否位于已知的 DoH 服务器表列表中。 目前,无法使用 Windows Admin Center 或 sconfig.cmd 为 Windows Server 2022 上的 DNS 客户端配置 DoH 设置。

通过 组策略 配置 DoH

Windows Server 2022 本地和域组策略设置包括配置 DNS over HTTPS (DoH) 名称解析策略。 可以使用它将 DNS 客户端配置为使用 DoH。 此策略位于 节点中 Computer Configuration\Policies\Administrative Templates\Network\DNS Client 。 启用后,可以使用以下设置配置此策略:

  • 允许 DoH。 如果指定的 DNS 服务器支持该协议,将使用 DoH 执行查询。 如果服务器不支持 DoH,将发出非加密查询。

  • 禁止 DoH。 将阻止将 DoH 用于 DNS 客户端查询。

  • 需要 DoH。 将要求使用 DoH 执行查询。 如果配置的 DNS 服务器不支持 DoH,则名称解析将失败。

    DNS 配置的屏幕截图

不要为已加入域的计算机启用“需要 DoH”选项,因为Active Directory 域服务严重依赖 DNS,因为 Windows Server DNS 服务器服务不支持 DoH 查询。 如果需要加密Active Directory 域服务网络上的 DNS 查询流量,请考虑实施基于 IPsec 的连接安全规则来保护此流量。 有关详细信息 ,请参阅使用 IKEv2 保护端到端 IPsec 连接

确定哪些 DoH 服务器位于已知服务器列表中

Windows Server 附带已知支持 DoH 的服务器列表。 可以使用 PowerShell cmdlet 确定此列表中 Get-DNSClientDohServerAddress 有哪些 DNS 服务器。

powershell 命令的屏幕截图

已知 DoH 服务器的默认列表如下所示:

服务器所有者 DNS 服务器 IP 地址
Cloudflare 1.1.1.1
1.0.0.1
2606:4700:4700::1111
2606:4700:4700::1001
Google 8.8.8.8
8.8.4.4
2001:4860:4860::8888
2001:4860:4860::8844
象限 9 9.9.9.9
149.112.112.112
2620:fe::fe
2620:fe::fe:9

将新的 DoH 服务器添加到已知服务器列表

可以使用 PowerShell cmdlet 将新的 DoH 服务器添加到已知服务器 Add-DnsClientDohServerAddress 列表中。 指定 DoH 模板的 URL,以及是否允许客户端在安全查询失败时回退到未加密的查询。 此命令的语法是:

Add-DnsClientDohServerAddress -ServerAddress '<resolver-IP-address>' -DohTemplate '<resolver-DoH-template>' -AllowFallbackToUdp $False -AutoUpgrade $True

将名称解析策略表与 DoH 配合使用

可以使用名称解析策略表 (NRPT) 将特定 DNS 命名空间的查询配置为使用特定的 DNS 服务器。 如果已知 DNS 服务器支持 DoH,则与该域相关的查询将使用 DoH 执行,而不是以未加密的方式执行。