DNS over HTTPS 配置教程
DNS over HTTPS (DoH) 简介
DNS(域名系统)负责将人类可读的域名转换为IP地址,但传统的DNS查询和应答是明文传输,极易被监控和篡改。DNS over HTTPS(DoH)是一种通过加密的HTTPS协议发送DNS请求的技术:contentReference[oaicite:0]{index=0}。它有效防止第三方窃听或篡改DNS查询数据,提升上网的隐私和安全性。相比另一种加密方案DNS over TLS(使用853端口),DoH利用HTTPS的443端口进行通信,更不容易被识别和阻断:contentReference[oaicite:1]{index=1}。下文将介绍如何在各大平台配置DoH,并比较不同DoH服务商的特点与使用建议。
Windows 10/11 配置
Windows 11 配置步骤
- 按 Windows + I 打开设置。
- 进入网络和 Internet,点击当前连接的网络旁边的属性:contentReference[oaicite:2]{index=2}。
- 向下滚动找到DNS 设置,点击编辑。
- 在弹出的编辑窗口中,将“使用加密的DNS(DNS over HTTPS)”开关切换为开。
- 在“首选 DNS”栏中,输入支持DoH的DNS服务器地址(例如
1.1.1.1
和1.0.0.1
),可选的“备用 DNS”填写次要服务器地址。 - 点击保存使配置生效。
完成以上设置后,Windows 11 会优先通过加密连接请求DNS解析。如果需要更换其他DoH服务,可将对应DNS服务器的IP及模板填入设置。
Windows 10 配置方法
Windows 10: Windows 10 尚未在正式版中提供原生的 DoH 设置界面:contentReference[oaicite:3]{index=3}。可通过以下方式启用 DoH:
- 方法一:注册表 & PowerShell(高级用户) – 确保系统更新至最新版本,然后在注册表编辑器中开启 DoH 功能(在
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
下创建或设置EnableAutoDoh
DWORD 值为2
):contentReference[oaicite:4]{index=4}。接着打开 Windows PowerShell(管理员权限),设置 DNS 服务器地址并添加 DoH 模板,例如:Set-DnsClientServerAddress -InterfaceIndex 12 -ServerAddresses "1.1.1.1","1.0.0.1" Add-DnsClientDohServerAddress -ServerAddress "1.1.1.1" -DohTemplate "https://cloudflare-dns.com/dns-query" -AllowFallbackToUdp $False -AutoUpgrade $True
上述命令将系统的 DNS 设置为 Cloudflare DNS,并添加其 DoH 查询模板:contentReference[oaicite:5]{index=5}。 - 方法二:使用第三方工具 – 借助图形化的 DNS 工具实现 DoH。例如 Simple DNSCrypt 或 YogaDNS 等,它们可以拦截系统的DNS请求并通过您指定的DoH服务器来解析,无需手动修改系统配置:contentReference[oaicite:6]{index=6}:contentReference[oaicite:7]{index=7}。
Linux 配置 (Ubuntu 等)
在 Linux 系统上配置加密DNS有多种途径,可根据发行版和需求选择:
方法一:使用 systemd-resolved
- 确认
systemd-resolved
服务版本为 247 或更高,新版本增加了对DoH的支持:contentReference[oaicite:8]{index=8}。 - 编辑
/etc/systemd/resolved.conf
配置文件,在[Resolve]
部分设置加密DNS选项。例如启用 DNS over TLS:[Resolve] DNS=1.1.1.1 1.0.0.1 DNSOverTLS=yes
上述配置开启了 DNS over TLS 加密。 - 对于支持直接配置DoH的 systemd-resolved,也可以在 DNS 列中使用 HTTPS URL(同时将
DNSOverTLS
设为no
)。例如:[Resolve] DNS=https://cloudflare-dns.com/dns-query https://dns.google/dns-query DNSOverTLS=no
这将使 systemd-resolved 通过 DoH 使用 Cloudflare 和 Google 的DNS服务:contentReference[oaicite:9]{index=9}。 - 保存文件后,重启服务:
sudo systemctl restart systemd-resolved
,然后通过systemd-resolve --status
查看当前 DNS 配置,确认已启用加密。
方法二:使用 NetworkManager
如果发行版使用 NetworkManager(如 Ubuntu 桌面版),可以通过 NetworkManager 启用加密 DNS。使用以下命令修改网络连接设置:
sudo nmcli connection modify "连接名称" ipv4.dns "1.1.1.1,1.0.0.1" ipv4.dns-over-tls yes将 连接名称 替换为实际的网络连接标识。对于 IPv6 网络,类似地设置
ipv6.dns
和 ipv6.dns-over-tls
:contentReference[oaicite:10]{index=10}。然后重启网络连接使配置生效。 方法三:使用独立 DoH 客户端
通过本地 DNS 加密代理是适用于所有 Linux 发行版的通用方案:
- Cloudflared: Cloudflare 提供的轻量级 DoH 客户端工具。可以从官方获取并安装。启动
cloudflared
后,它会在本地运行一个 DNS 代理,将查询通过 HTTPS 转发到 Cloudflare(默认)或其他上游:contentReference[oaicite:11]{index=11}。 - dnscrypt-proxy: 支持 DoH/DoT/DNSCrypt 等协议的本地 DNS 代理。在 Debian/Ubuntu 上可直接
sudo apt install dnscrypt-proxy
安装:contentReference[oaicite:12]{index=12}。安装后编辑/etc/dnscrypt-proxy/dnscrypt-proxy.toml
,指定server_names
(例如使用['cloudflare','google']
)并启用doh_servers=true
:contentReference[oaicite:13]{index=13}。启动 dnscrypt-proxy 服务后,将系统 DNS 指向127.0.0.1
即可通过它进行加密解析。 - Stubby: 一个 DNS 加密守护进程,主要用于 DoT。可通过
sudo apt install stubby
安装:contentReference[oaicite:14]{index=14}。安装后修改/etc/stubby/stubby.yml
,添加上游解析服务器地址(如1.1.1.1和1.0.0.1等)并启用 TLS:contentReference[oaicite:15]{index=15}。启动 Stubby 服务后,同样将本机 DNS 指向127.0.0.1
来生效。
采用上述任意方案后,建议在 /etc/resolv.conf
中将 DNS 服务器设置为 127.0.0.1
,确保系统的DNS查询都经由本地加密代理转发。
Android 配置
Android 9.0 (Pie) 及以上版本支持内置的“专用 DNS”功能,可用于开启加密 DNS(实际采用 DNS over TLS 实现):contentReference[oaicite:16]{index=16}:
- 打开手机设置,进入网络和 Internet选项:contentReference[oaicite:17]{index=17}。
- 在高级设置中找到并点击专用 DNS。
- 选择专用 DNS 提供商主机名模式,然后在下方输入框填写 DoH 服务商域名。例如:
dns.google
(Google 公共 DNS)、one.one.one.one
(Cloudflare),或dns.quad9.net
(Quad9):contentReference[oaicite:18]{index=18}。 - 保存设置。返回后系统即会通过所配置的加密DNS服务器解析域名。
对于Android 8.0或更低版本(没有专用 DNS 选项),可使用第三方应用实现 DoH,例如 Google 推出的 Intra 或开源应用 Nebulo 等。此类应用通过建立本地 VPN,将DNS查询拦截后转发至DoH服务器。
进阶: 高级用户可以通过 ADB 命令行配置专用 DNS,例如:
adb shell settings put global private_dns_mode hostname adb shell settings put global private_dns_specifier dns.example.com上述命令将专用DNS模式设为指定主机名,并将服务器设为
dns.example.com
:contentReference[oaicite:19]{index=19}。对于企业设备,还可通过 MDM 策略下发加密DNS配置:contentReference[oaicite:20]{index=20}。 OpenWrt 路由器 配置
在 OpenWrt 上使用 DoH,可以通过安装现成的插件来实现。这里介绍使用 HTTPS DNS Proxy (https-dns-proxy) 的方法:
- 安装软件包。在路由器的 Shell 中执行:
opkg update opkg install https-dns-proxy luci-app-https-dns-proxy
或在 LuCI 软件包列表中安装https-dns-proxy
及其 LuCI 界面插件:contentReference[oaicite:21]{index=21}。 - 安装完成后,重启 LuCI 的 RPC 服务以加载新模块:
/etc/init.d/rpcd restart
。 - 进入 LuCI 图形界面,在服务 -> HTTPS DNS Proxy页面,选择一个 DoH 提供商(例如 Cloudflare、Google 等)或自定义填写 DoH 服务器 URL:contentReference[oaicite:22]{index=22}。
- 保存并应用设置。HTTPS DNS Proxy 将启动本地监听(默认 127.0.0.1:5053),通过 HTTPS 将 DNS 请求转发至所选的上游服务器。
- 最后,前往网络 -> DHCP 和 DNS设置,将上游 DNS 服务器地址修改为
127.0.0.1#5053
(即本机 DoH 代理端口)。这样路由器的 dnsmasq 会把 DNS 查询交由 https-dns-proxy 处理。
完成以上配置后,OpenWrt 路由器将把局域网客户端的 DNS 查询通过 DoH 加密后再解析返回。您可以通过检查 /etc/config/https-dns-proxy
文件或 LuCI 状态页面,确认上游 DNS 已经指向 HTTPS 接口:contentReference[oaicite:23]{index=23}。
提示: 除了 https-dns-proxy,OpenWrt 上也可以使用 dnscrypt-proxy、SmartDNS 等方案实现加密DNS解析(包括 DoH 和 DoT)。根据实际需要,您可以选择不同工具,但上述方法对大多数用户而言更为简便。
树莓派 (Raspberry Pi) 配置
树莓派常用于搭建网络广告拦截和 DNS 中继,例如部署 Pi-hole 等。我们可以通过配置树莓派将其DNS查询上游指向DoH。以下以 Cloudflare 的 Cloudflared 工具为例:contentReference[oaicite:24]{index=24}:
- 在树莓派OS上安装
cloudflared
。Cloudflare 提供了官方软件源,或者直接提供可执行文件。这里使用APT方式安装:sudo apt update && sudo apt install cloudflared
如果仓库不可用,可以从 Cloudflare 官方下载对应架构的.deb
包并使用sudo dpkg -i 文件名.deb
安装:contentReference[oaicite:25]{index=25}。 - 创建 Cloudflared 的配置文件(
/etc/cloudflared/config.yml
),填写以下内容:proxy-dns: true proxy-dns-port: 5053 proxy-dns-address: 127.0.0.1 proxy-dns-upstream: - https://1.1.1.1/dns-query - https://1.0.0.1/dns-query
上述配置将在本机启动一个 DNS-over-HTTPS 代理,监听端口5053,并把查询通过 DoH 转发到 Cloudflare DNS:contentReference[oaicite:26]{index=26}。 - 启动并设为开机自启 Cloudflared 服务:
sudo systemctl enable cloudflared sudo systemctl start cloudflared
执行sudo systemctl status cloudflared
确认服务正在运行。 - 如果树莓派上运行了 Pi-hole,在 Pi-hole 管理界面将上游DNS服务器设置为
127.0.0.1#5053
(即本机 Cloudflared)。若未使用 Pi-hole,也可以将树莓派系统的 DNS 配置指向 127.0.0.1,使其使用 Cloudflared 代理。
完成上述配置后,树莓派将通过 Cloudflared 把 DNS 查询发送至 DoH 服务器,实现加密解析(默认上游为 Cloudflare,可在配置文件中更改为其他服务商的 DoH 地址,如 Google 等:contentReference[oaicite:27]{index=27})。类似地,您也可以使用 dnscrypt-proxy 工具在树莓派上实现相同功能:contentReference[oaicite:28]{index=28}。
补充: 此外,您可以在树莓派上安装 AdGuard Home 等软件,以图形界面方便地管理 DNS over HTTPS,并附加广告过滤等功能,一站式满足网络DNS需求。
DoH 服务商对比
目前主流公共 DNS 提供商大多支持 DoH。以下列出几家常用服务的特点:
- Cloudflare DNS (1.1.1.1):以高性能和注重隐私著称。Cloudflare 承诺不将用户的查询日志永久保存:contentReference[oaicite:29]{index=29}。提供 DoH 接口
https://cloudflare-dns.com/dns-query
,并有附加的1.1.1.1 for Families模式可过滤恶意软件或成人内容。全球 Anycast 节点众多,在各地都有快速响应。在中国等地区,Cloudflare 主域名偶有访问问题,但直接使用其IP(1.1.1.1和1.0.0.1)通常可正常解析:contentReference[oaicite:30]{index=30}。 - Google Public DNS (8.8.8.8):全球使用最广泛的公共DNS服务,可靠性高。支持 DoH 标准接口
https://dns.google/dns-query
:contentReference[oaicite:31]{index=31}。Google 会对DNS查询进行匿名化日志记录,用于改善服务,但强调不会将DNS数据用于广告目的。由于Google服务器遍布全球,大多数地区均能获得较低的解析延迟。 - Quad9 (9.9.9.9):由非营利组织运营,侧重安全防护的DNS。默认拦截已知恶意域名,提升上网安全。提供 DoH 接口(主域名
dns.quad9.net
及 IP9.9.9.9
等)来查询:contentReference[oaicite:32]{index=32}。Quad9 注重用户隐私,总部位于瑞士并遵守严格的隐私政策。对于中国用户,建议直填IP地址使用,因为其域名解析在国内网络中偶尔可能受限:contentReference[oaicite:33]{index=33}。相较Cloudflare/Google,Quad9的延迟可能稍高一些,但提供的安全过滤对希望阻挡恶意网站的用户很有价值。 - NextDNS:提供高度定制化的DNS服务。用户可创建配置,对跟踪器拦截、广告过滤、成人内容过滤等进行个性化设置,并可查看详尽的查询日志和统计。NextDNS 为每个用户配置生成唯一的 DoH URL(如
https://dns.nextdns.io/您的配置ID
),并在全球部署服务器以就近解析。免费版对每月查询数有一定限制,付费后可不限量使用。适合对隐私和安全有更高要求、希望自行定制规则的用户。 - 阿里公共 DNS (AliDNS, 223.5.5.5):阿里巴巴提供的公共 DNS,在国内解析速度快、稳定性好。支持 DoH 接口
https://dns.alidns.com/dns-query
:contentReference[oaicite:34]{index=34}(及其IP直连)。阿里DNS 对国内网站的解析做了优化,并支持 EDNS 子网(ECS)用于根据用户地域返回更合适的解析结果。然而,其返回结果会符合中国的域名管理要求,对于受限制的网站可能返回不可访问的IP;另外据社区反馈,阿里公共DNS 对 DoH 请求可能存在频率限制,在大批量查询时需要注意:contentReference[oaicite:35]{index=35}。 - DNSPod 公共 DNS (119.29.29.29):腾讯旗下的免费DNS服务。提供 DoH 接口
https://doh.pub/dns-query
,以及便于国内解析的IP地址(如https://1.12.12.12/dns-query
和https://120.53.53.53/dns-query
):contentReference[oaicite:36]{index=36}。DNSPod 在国内有良好的速度和连通性,同样遵循本地网络规范,对敏感域名会返回经过处理的结果。此外,DNSPod 的DoH服务在极高并发时可能触发限流策略:contentReference[oaicite:37]{index=37}。 - 其他 DoH 服务:AdGuard DNS(国外知名广告拦截公司提供,支持无过滤和含过滤模式,DoH 接口如
https://dns.adguard.com/dns-query
),Cloudflare Family(Cloudflare的家庭模式DNS,1.1.1.2 与 1.1.1.3,可过滤恶意和成人内容),CleanBrowsing(提供家庭、防成人内容的DNS选项),OpenDNS(Cisco旗下老牌DNS,提供家庭过滤选项,DoH可通过其IP地址实现:contentReference[oaicite:38]{index=38})等。不同服务商各有特色:如 AdGuard 和 CleanBrowsing 专注于拦截广告及不良内容,OpenDNS 提供较长久的运营经验等。用户可根据需求挑选。
选择 DoH 服务商时,可以考虑以下几点:
- 隐私: 服务商的日志策略和隐私承诺(例如 Cloudflare 和 Quad9 均承诺严格保护隐私)。
- 速度: DNS服务器距您的网络距离和延迟,本地服务商在访问国内站点时通常更快。
- 安全过滤: 是否需要拦截恶意网站或广告等功能(Quad9、AdGuard 等提供内置安全/过滤功能)。
- 可靠性: 服务的稳定性和可用性,长期运行情况如何。
DoH 生效验证方法
配置完成后,建议通过以下方法验证 DoH 是否正常启用:
- 在线工具检测: 打开浏览器访问一些 DNS 测试网站,例如 DNSLeakTest 或 Cloudflare 提供的 1.1.1.1/help 页面,运行测试:contentReference[oaicite:39]{index=39}。如果DoH生效,这些网站应显示您的DNS提供商为所配置的服务商,而非本地ISP,并确认“使用加密DNS”状态为是。
- 命令行检测: 在终端/命令提示符下使用
nslookup
或dig
工具测试。例如,在 Windows 上打开命令提示符,输入nslookup example.com
并回车,查看返回结果中的“Server”是否为您设置的 DoH DNS服务器(或本地地址127.0.0.1,如果使用了本地代理):contentReference[oaicite:40]{index=40}。在 Linux/macOS 上,可使用dig @127.0.0.1 example.com
测试本地代理解析是否正常,或dig +short whoami.cloudflare @127.0.0.1
查看返回的解析服务器信息,以确认查询经由预期的DoH服务。 - 浏览器验证: 某些浏览器内置了自己的 DoH 开关。例如 Firefox 可在设置中启用“通过 HTTPS 优先解析DNS”,并选择服务商;Chrome 则在设置 -> 安全性中提供“使用安全DNS”选项。如果浏览器也开启了DoH,要确保其配置与系统一致(否则浏览器会使用自己的DoH设置)。可以分别测试浏览器和系统,看解析出的DNS服务器是否都符合预期。
- 网络抓包: 对于高级用户,可使用抓包工具(如 Wireshark)进一步验证。当 DoH 正常工作时,你在网络流量中不应看到明文的 DNS 查询(UDP/53 或 TCP/53),取而代之的是在 TCP/443 端口上的加密TLS流量。
常见问题解答 (FAQ)
Q: 启用 DoH 后测试仍显示 DNS 请求未加密,怎么办?
A: 先确认您的操作系统已正确配置所有网络适配器使用加密DNS。例如在 Windows 11 中,需确保已为所用的网络(以太网/Wi-Fi)都开启了 DoH 且未勾选允许明文回退。其次,清空DNS缓存并重启设备或网络服务,然后再次测试解析:contentReference[oaicite:41]{index=41}。如果仍有泄漏,可能是某些应用绕过了系统DNS(例如自行嵌入了DNS解析),这不在系统DoH控制范围内。
Q: 启用 DoH 后上网速度会变慢吗?
A: 理论上,加密DNS增加了TLS握手过程,可能稍微增加延迟。但实际使用中,由于DNS查询数据包很小,握手开销可以通过连接复用和缓存等机制摊平:contentReference[oaicite:42]{index=42}。多数用户感觉不到明显差异。如担心延迟,可选择距离近、速度快的DoH服务器,并确保路由器或本地DNS有缓存功能来减少查询频率。
Q: 在公共 Wi-Fi 或公司网络下使用 DoH 是否有影响?
A: 大部分情况下可以正常使用。但某些公共热点或企业网络出于审计目的,可能拦截自定义DNS通信。如果在此类网络开启DoH后发现网页无法加载,可能是网络阻断了DoH连接。这时可暂时关闭DoH或切换到该网络提供的DNS。对于需要强制使用DoH的情况,可以考虑通过VPN隧道来绕过此类限制。
Q: DoH 和 DoT 有什么区别,我该用哪一个?
A: 两者都是加密DNS协议,主要区别在于端口和传输层不同:DoT使用专用的TCP 853端口,DoH使用标准HTTPS 443端口。后者因为混在常规Web流量中,更不易被识别和阻断:contentReference[oaicite:43]{index=43}。如果环境支持,优先使用DoH即可;但如您的设备或工具仅支持DoT,也完全可以使用,安全性上没有差别。
Q: 使用 DoH 后我的网络查询就是匿名的吗?
A: 部分匿名。DoH 加密了DNS查询内容,第三方无法窃听或篡改您的DNS请求,但您的DoH服务商仍能看到您查询了哪些域名(只是别人不知道而已)。因此请选择值得信赖的DNS服务商。如果需要更高匿名性,DoH 可以与 VPN、代理等工具结合使用,从而隐藏您的IP地址和更多上网行为。
按照本教程,您应能在 Windows、Linux、移动设备和路由器等平台成功配置 DNS over HTTPS,让您的网络访问更私密、安全。在享受加密DNS带来的安全便利时,请记得根据需要选择合适的服务商,并留意官方公告以获取最新的配置和支持。