windows加密DNS请求
在之前的微软更新公告中,windows 21H1加入了基于HTTPS的DNS请求(DOH)这一功能,目前来看是要推迟到21H2版本了,可以使用以下方法暂时在21H1非预览版中代替DOH功能。
配置
- 从https://github.com/cloudflare/cloudflared/releases下载对应系统的版本
- 新建一个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