#启用 Win11 原生支持的 DoH (DNS over HTTPS) 和配置自定义的 DoH 服务
更新
使用 Win11 22H2 可直接在网络设置中配置,无需参考此文。
- 22.1.23:发现有的 dns 配置没有首选的 dns 加密,好像是用无线的时候就会没有,不影响,看情况 2 就行
为了方便,直接给出一些模板(国内可用的)
netsh dns add encryption server=223.5.5.5 dohtemplate=https://dns.alidns.com/dns-query autoupgrade=yes udpfallback=no netsh dns add encryption server=223.6.6.6 dohtemplate=https://dns.alidns.com/dns-query autoupgrade=yes udpfallback=no netsh dns add encryption server=101.101.101.101 dohtemplate=https://dns.twnic.tw/dns-query autoupgrade=yes udpfallback=no # 这个是台湾的DoH服务 netsh dns add encryption server=120.53.80.136 dohtemplate=https://doh.pub/dns-query autoupgrade=yes udpfallback=no #这个是腾讯dnspod的doh服务,server的地址需要自己ping一下doh.pub改一下,因为不是固定的ip
配置
情况 1
可以看到有首选的 DNS 加密选项 设置 – 网络和 Internet – 以太网(根据自己情况来)- DNS 服务器分配 – 编辑
Win11 原生支持以下 DoH 服务: IPv4
– Google:8.8.8.8 and 8.8.4.4- Cloudflare:1.1.1.1 and 1.0.0.1- Quad9:9.9.9.9 and 149.112.112.112
IPv6
– Google:2001:4860:4860::8888 and 2001:4860:4860::8844- Cloudflare:2606:4700:4700::1111 and 2606:4700:4700::1001- Quad9:2620:fe::fe and 2620:fe::fe:9
自定义的 DoH 服务配置
然鹅,上面三个都是连不上的,因为众所周知的原因。此时输入其他的 DoH 服务的 IP 地址(例如 223.5.5.5),首选的 DNS 加密位置是灰色的,没办法选择,原因是 Win11 没有内置这些地址的 DoH 模板,需要手动添加。
查看系统中的 DoH 模板命令:
netsh dns show encryption
管理员权限,使用 netsh 或者 Powershell 添加 DoH 服务模板:
netsh dns add encryption server=[resolver-IP-address] dohtemplate=[resolver-DoH-template] autoupgrade=yes udpfallback=no Add-DnsClientDohServerAddress -ServerAddress '[resolver-IP-address]' -DohTemplate '[resolver-DoH-template]' -AllowFallbackToUdp $False -AutoUpgrade $True
举个例子,比如想用阿里 223.5.5.5 的 DoH,可以从其 DNS 官网或者 找到他们的 DoH 链接是 https://223.5.5.5/dns-query
我们输入 netsh dns add encryption server=223.5.5.5 dohtemplate=https://223.5.5.5/dns-query autoupgrade=yes udpfallback=no
就可以添加这条 DoH 配置
图里这个用不了啊,因为 doh.pub 解析不指向 119.29.29.29,所以 doh 是连不上的
然后去最开始的设置的地方,再输入 223.5.5.5,此时首选的 DNS 加密就可以选择了。
设置好以后,用 Wireshark 抓包,使用过滤条件 ip.addr==223.5.5.5
就可以看到 TLS 加密的报文,而此时过滤 dns
报文,基本上是空的,说明配置成功了。
情况 2
没有首选的 DNS 加密选项
此时先确保无论是 dhcp 分配的,还是手动指定的 dns 服务,是支持 doh 的,比如此时我是 dhcp 分配的 223.5.5.5
使用情况 1 中的添加方法,添加 223.5.5.5 对应的 doh 模板 netsh dns add encryption server=223.5.5.5 dohtemplate=https://223.5.5.5/dns-query autoupgrade=yes udpfallback=no
这条命令的含义是添加加密 dns 模板,服务器是 223.5.5.5,模板是 https://223.5.5.5/dns-query,自动升级允许(意思是你要是配置 223.5.5.5 作为 dns 的话,就会自动启用 doh),回退不允许(只能 doh,不允许降级)
此时再进行 dns 查询就都是加密的啦
情况 3
据说组策略也可以修改 doh 加密,不过我没研究透和上面这个是啥关系,有兴趣的可以搞下:
路径:组策略 – 计算机配置 – 管理模板 – 网络 – DNS 客户端
相关的配置有两个:
1. 配置通过 HTTPS 实现的 DNS(DoH)名称解析 1. DNS 服务器
自己研究吧:)
DoH 列表
参考 上面这个可能有点问题,也可以看这个 还有一个宝藏列表,还算全:https://dnscrypt.info/public-servers/
推荐使用阿里和腾讯的 https://223.5.5.5/dns-query https://223.6.6.6/dns-query https://dns.alidns.com/dns-query https://doh.pub/dns-query
https://doh.360.cn/dns-query https://dns.cfiec.net/dns-query
国外的,大概率无法使用: https://dns.google/dns-query https://dns.quad9.net/dns-query https://doh.opendns.com/dns-query https://1.1.1.1/dns-query https://1.0.0.1/dns-query https://cloudflare-dns.com/dns-query