windows加密DNS请求

在之前的微软更新公告中,windows 21H1加入了基于HTTPS的DNS请求(DOH)这一功能,目前来看是要推迟到21H2版本了,可以使用以下方法暂时在21H1非预览版中代替DOH功能。

配置

  1. https://github.com/cloudflare/cloudflared/releases下载对应系统的版本
  2. 新建一个config.yaml文件,文件内容如下

proxy-dns: true
proxy-dns-address: 0.0.0.0 # 监听全部IP,可以给内网其他客户端提供加密的DNS服务,需要关闭防火墙
proxy-dns-upstream:

其他DOH服务器列表可以参考这里:DNS over HTTPS - 维基百科,自由的百科全书

启动

管理员权限运行powershell,运行以下命令启动服务端

cloudflared-windows-amd64.exe –config PATH\config.yaml

启动后在IP地址设置中设置DNS为127.0.0.1,并参考以下“测试”章节对DNS流量进行测试

测试

使用WIN10自带的Packetmon 工具分析网络流量,验证当前DNS请求状态是否加密

# 管理员权限打开powershell

重置网络流量分析

pktmon filter remove

过滤普通DNS服务器的53端口流量

pktmon filter add -p 53

开始抓包

pktmon start –etw -m real-time

  随便ping几个不常见的域名,如果服务生效,Packetmon抓不到任何请求

安装服务

将cloudflared-windows-amd64.exe复制到system32文件夹下,并在管理员权限的powershell中执行以下命令安装服务

cloudflared-windows-amd64.exe service install

安装完成后,会看到

1
2:47PM INF Installing Argo Tunnel Windows service 2:47PM INF Argo Tunnel agent service is installed windowsServiceName=Cloudflared

在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cloudflared中编辑ImagePath项为上面命令行启动时的命令 保存后,在powershell中执行以下命令启动服务(安装好后开机会自动启动)

Start-Service Cloudflared