#启用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