Mobile wallpaper
1014 字
5 分钟

解决Windows下DNS泄露问题

2025-10-21
浏览量 加载中...

导致DNS泄露的原因主要就两种:

  1. 配置不对导致的
  2. Windows导致的(智能多宿主名称解析)

正确配置DNS#

NOTE

此处DNS配置仅适用于mihomo内核,其他内核格式与此不同

另外在DNS配置中始终不要使用fallback,这会直接导致泄露

  1. (推荐) 使用fake-ip
TIP

在fake-ip模式下,所有的DNS请求均会返回一个虚假IP地址,DNS 解析的责任从代理客户端转移到了代理服务器、尽可能避免在本地进行 DNS 解析,因此 Fake IP 无需额外的 DNS 转发配置、天生就具备「无视 DNS 污染」和「CDN 体验优化」两大优势。1
因此,由于DNS解析不在本地进行(直连访问依然是本地解析),配置极为简单,只需要配置default-nameservernameserver为国内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
  1. 使用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-query
TIP

你也可以使用客户端接管DNS设置并使用客户端的使用图形化界面进行调整(如果支持的话)

智能多宿主名称解析#

“智能多宿主名称解析”(LLMNR,Link-Local Multicast Name Resolution)是微软引入Windows的加快DNS解析速度的功能,通过在所有可用的网络适配器上发送DNS请求来实现,并自动选择返回速度最快的信息。
简单来说,这会导致在tun模式下DNS泄露(系统代理模式下不受此影响,如果系统代理模式下泄露请检查配置)(会给你系统默认的网卡发送一个 DNS 请求)

关闭方法#

  1. 打开组策略( Win + R 输入 gpedit.msc 回车)
  2. 计算机配置->管理模板->网络->DNS 客户端
  3. 右侧找到 禁用智能多宿主名称解析
  4. 双击,在弹出窗口中选择已启用并确定

依然泄露?#

请检查规则中是否存在IP类规则,如有请添加no-resolve参数

除了配置的问题之外

例如Firefox/Zen浏览器在经过上面两步后依然泄露,但是在相同情况下Chrome/Edge浏览器不泄漏

有两种解决办法:

  1. 启用严格路由
  • 在tun的配置中增加 strict-route: true 或者 在你的客户端中修改tun模式的配置
WARNING

这将将所有连接路由到 tun 来防止泄漏,但你的设备将无法其他设备被访问
(如遇内网无法访问,可以尝试添加排除自定义网段)

  1. 修改Firefox的设置(两种办法,Zen同理)
    1. 修改基于 HTTPS 的 DNS最大保护 (绕过系统及内核的DNS)
    2. 在内核设置中开放混合端口(默认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

https://finalpi.github.io/post/002.html

https://www.v2ex.com/t/1034325

Footnotes#

  1. 引用

赞助支持

如果这篇文章对你有帮助,欢迎赞助支持!

赞助
解决Windows下DNS泄露问题
https://blog.cmtyx.top/posts/windows-dns-leak/
作者
璨梦踏月
发布于
2025-10-21
许可协议
CC BY-NC-SA 4.0
最后更新于 2025-10-21,距今已过 26 天

部分内容可能已过时

评论区

目录