解决Windows下DNS泄露问题
导致DNS泄露的原因主要就两种:
- 配置不对导致的
- Windows导致的(智能多宿主名称解析)
正确配置DNS
NOTE此处DNS配置仅适用于mihomo内核,其他内核格式与此不同
另外在DNS配置中始终不要使用fallback,这会直接导致泄露
- (推荐) 使用fake-ip
TIP在fake-ip模式下,所有的DNS请求均会返回一个虚假IP地址,DNS 解析的责任从代理客户端转移到了代理服务器、尽可能避免在本地进行 DNS 解析,因此 Fake IP 无需额外的 DNS 转发配置、天生就具备「无视 DNS 污染」和「CDN 体验优化」两大优势。1
因此,由于DNS解析不在本地进行(直连访问依然是本地解析),配置极为简单,只需要配置default-nameserver和nameserver为国内DNS即可
dns: enable: true enhanced-mode: fake-ip fake-ip-filter-mode: blacklist fake-ip-range: 28.0.0.1/8
# 其他设置
# 默认 DNS, 用于解析 DNS 服务器 的域名 # 必须为 IP, 可为加密 DNS # 推荐使用国内DNS/运营商DNS default-nameserver: - tls://223.5.5.5 # 访问直连域名使用的DNS服务器 # 默认的域名解析服务器 # 推荐使用国内DNS/运营商DNS nameserver: - https://dns.alidns.com/dns-query - https://doh.pub/dns-query- 使用redir-host
dns: enable: true enhanced-mode: redir-host
# 其他设置
# 默认 DNS, 用于解析 DNS 服务器 的域名 # 必须为 IP, 可为加密 DNS # 推荐使用国内DNS/运营商DNS default-nameserver: - tls://223.5.5.5 # 访问非直连域名使用的DNS服务器 # 推荐使用国内外DNS # 把下方#后的 自动选择 和 节点选择 替换为你的配置中真实的代理组(这个代理组的节点会用于访问DNS),这里仅为示例 nameserver: - tls://1.1.1.1#自动选择 - https://dns.google/dns-query#节点选择 # 访问直连域名使用的DNS服务器 # 推荐使用国内DNS/运营商DNS direct-nameserver: - https://dns.alidns.com/dns-query - https://doh.pub/dns-queryTIP你也可以使用客户端接管DNS设置并使用客户端的使用图形化界面进行调整(如果支持的话)
智能多宿主名称解析
“智能多宿主名称解析”(LLMNR,Link-Local Multicast Name Resolution)是微软引入Windows的加快DNS解析速度的功能,通过在所有可用的网络适配器上发送DNS请求来实现,并自动选择返回速度最快的信息。
简单来说,这会导致在tun模式下DNS泄露(系统代理模式下不受此影响,如果系统代理模式下泄露请检查配置)(会给你系统默认的网卡发送一个 DNS 请求)
关闭方法
- 打开组策略( Win + R 输入 gpedit.msc 回车)
- 计算机配置->管理模板->网络->DNS 客户端
- 右侧找到 禁用智能多宿主名称解析
- 双击,在弹出窗口中选择已启用并确定
依然泄露?
请检查规则中是否存在IP类规则,如有请添加no-resolve参数
除了配置的问题之外
例如Firefox/Zen浏览器在经过上面两步后依然泄露,但是在相同情况下Chrome/Edge浏览器不泄漏
有两种解决办法:
- 启用严格路由
- 在tun的配置中增加
strict-route: true或者 在你的客户端中修改tun模式的配置
WARNING这将将所有连接路由到 tun 来防止泄漏,但你的设备将无法其他设备被访问
(如遇内网无法访问,可以尝试添加排除自定义网段)
- 修改Firefox的设置(两种办法,Zen同理)
- 修改基于 HTTPS 的 DNS为最大保护 (绕过系统及内核的DNS)
- 在内核设置中开放混合端口(默认7890)打开Firefox的连接设置,改为手动配置代理,在SOCKS 主机主机处填写IP(mihomo内核运行在本机使用就127.0.0.1)和端口(默认7890),确保使用SOCKS_v5,并勾选使用 SOCKS v5 时代理 DNS 查询
如果你还想了解更多DNS/fake-ip相关的内容,建议阅读Sukka的博客
参考资料:
https://linux.do/t/topic/198120
https://linux.do/t/topic/1061825
https://medium.com/@ValdikSS/beware-of-windows-10-dns-resolver-and-dns-leaks-5bc5bfb4e3f1
https://wiki.metacubex.one/config/dns/#default-nameserver
Footnotes
赞助支持
如果这篇文章对你有帮助,欢迎赞助支持!
部分内容可能已过时