1. 问题的原因及复现
DNS 泄露的原因:
在 Windows 7 以上版本的 Windows 操作系统中,系统默认的多宿主名称解析策略会同时向系统内所有网卡发起 DNS 查询请求,Clash 无法拦截发给物理网卡的 DNS 查询请求。因此在系统默认配置下,开启虚拟网卡(TUN)模式,必然出现 DNS 泄露。
复现方法:
开启虚拟网卡模式,分流规则选择为全局,打开 https://browserleaks.com/dns, 如果 DNS 列表中出现中国 DNS 地址,则你的网络环境中存在 DNS 泄露。
2. DNS 泄露的影响
如果你的网络环境中存在 DNS 泄露,那么你的运营商(电信、移动、联通)可以追踪你的网络行为,获取你的目标域名。
例如,你观看一个 YouTube 视频,运营商可以获知你正在访问 www.youtube.com 这个网站。
注:本内容含义为从技术层面运营商可以获知你的目标域名,而不是你的运营商一定做了获知你目标域名的操作。
3. DNS 泄露的解决
非家庭版 Windows 操作系统:
- 打开开始菜单,搜索 组策略,打开“编辑组策略”。
- 依次进入:计算机配置 → 管理模板 → 网络 → DNS 客户端。
- 找到 禁用智能多宿主名称解析。
- 双击打开该策略,选择 已启用。
- 点击 确定 保存设置。
gpupdate /force强制刷新策略
家庭版 Windows 操作系统:
- 复制以下代码:
reg add "HKLMSOFTWAREPoliciesMicrosoftWindows NTDNSClient" /v DisableSmartNameResolution /t REG_DWORD /d 1 /f
- 打开开始菜单,搜索 CMD。
- 找到“命令提示符”,右键选择 以管理员身份运行。
- 将上面的代码粘贴到窗口中并按 Enter 执行。
- 执行完成后,重启操作系统。