Clash Meta DNS 机制全解
从 DNS 污染到 Fake-IP 虚拟解析,从 TUN 系统接管到 nameserver-policy 策略分发,彻底搞懂 Meta 的域名解析与全局代理引擎。
Clash Meta 为什么如此重视 DNS?
DNS 不仅是域名到 IP 的转换,更是分流正确性的基石
DNS 污染是代理环境的头号难题。在国内网络环境中,部分域名的 DNS 解析可能被投毒或劫持,返回错误的 IP 地址。如果 Clash 使用被污染的 DNS 结果进行规则匹配,就可能导致国内流量误走代理,或国外流量直连失败。因此,Meta 必须构建一套可靠的 DNS 体系来保证解析结果的真实性和准确性。
分流决策高度依赖 DNS 信息。规则引擎中的 DOMAIN、DOMAIN-SUFFIX、GEOIP 等匹配条件,都需要基于域名或解析后的 IP 进行判断。特别是在 GEOIP 规则下,如果国外域名被错误地解析到国内 IP,规则就会将其分流至 DIRECT,导致网站无法访问。因此,DNS 的准确性直接决定了分流效果。
Fake-IP 机制是 Meta 的创新方案。通过在 DNS 层返回虚拟 IP 并维护映射表,Meta 在处理流量时可以轻松还原域名信息,从而让基于域名的规则在连接阶段依然有效。这种设计解决了“先 DNS 再规则”的顺序问题,同时减少重复 DNS 查询,极大提升了代理效率。
DNS 还承担着隐私保护的角色。通过支持 DoH(DNS over HTTPS)和 DoT(DNS over TLS),Meta 可以将 DNS 查询加密传输,防止运营商或中间设备窃取浏览习惯。结合 nameserver-policy 实现按域名分配上游 DNS 服务器,进一步确保国内域名的解析速度与国外域名的隐私安全。
Fake-IP 模式深度拆解
虚拟 IP 池、请求映射与数据回流机制
🔄 Fake-IP 模式
- 返回 198.18.0.0/15 虚拟 IP 段
- 维护 域名 ↔ 虚拟IP 映射表
- 后续连接通过映射表还原域名
- 规则匹配时可继续使用域名条件
- 减少重复 DNS 查询,速度更快
- 适用于绝大多数代理场景
📡 Redir-Host 模式
- 返回真实 DNS 解析 IP
- 不保留域名信息
- 规则匹配只能依赖 IP 或 GeoIP
- 遇到 DNS 污染易分流错误
- 兼容性更好,但准确性下降
- 适合对延迟极度敏感的特殊场景
📋 Fake-IP 配置示例
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- '*.lan'
- 'localhost'
nameserver:
- 223.5.5.5
- 119.29.29.29
fallback:
- https://dns.cloudflare.com/dns-query
- https://dns.google/dns-query
通过 fake-ip-filter 可以排除内网域名,避免内网设备被分配虚拟 IP;fallback 则指定当国内 DNS 无法解析时使用的加密 DNS 服务器。
TUN 模式:从应用代理到系统接管
虚拟网卡如何实现全局流量透明代理
创建虚拟网卡
Meta 内核在系统中注册一个虚拟 TUN 接口,操作系统将其视为一张真实网卡。
修改路由表
将系统默认路由指向该虚拟网卡,所有出站 IP 数据包(TCP/UDP)被送入 Meta 处理。
读取原始数据包
Meta 从 TUN 接口读取 IP 层数据包,解析出源地址、目标地址和端口信息。
规则匹配与转发
数据包的目标 IP 或域名被送入规则引擎,决定 DIRECT / PROXY / REJECT,然后由代理模块发出或直连。
📌 TUN 配置要点
tun:
enable: true
stack: system # 或 gvisor (用户态)
dns-hijack:
- any:53
auto-redir: true
auto-route: true
auto-detect-interface: true
dns-hijack 劫持系统 DNS 请求至 Meta 内部,确保 DNS 也走代理逻辑;stack 选 system 性能更高,gvisor 更安全但稍慢。TUN 开启后,无需为每个应用单独设置代理即可实现全局转发。
DNS 策略系统:nameserver-policy
按域名分配上游 DNS,实现分流与防泄漏的精确控制
nameserver-policy 是 Meta DNS 系统的核心定制工具。它允许用户根据域名规则指定不同的 DNS 服务器。例如,所有以 .cn 结尾的域名使用国内 DNS(如 223.5.5.5),而其他域名则使用 Google 或 Cloudflare 的 DoH 服务。这样既保证了国内域名的解析速度,又避免了国外 DNS 被污染导致的错误结果。
配置中支持 DOMAIN, DOMAIN-SUFFIX, DOMAIN-KEYWORD, GEOSITE 等匹配条件,优先级从上到下。未命中任何规则的域名将使用 nameserver 或 fallback 字段指定的默认服务器。这种分层设计让 DNS 分流与规则分流策略保持高度一致,是实现无泄漏代理的关键一环。
⚙️ nameserver-policy 配置示例
dns:
nameserver-policy:
'geosite:cn':
- 223.5.5.5
- 119.29.29.29
'geosite:geolocation-!cn':
- https://dns.cloudflare.com/dns-query
- https://dns.google/dns-query
利用 geosite 分类可以批量指定国内外域名的 DNS 服务器,结合 Meta 内置的 GeoIP 数据库自动区分,大幅降低手写规则的成本。
DNS 与规则分流的深度联动
解析结果直接影响分流决策,形成完整的流量控制链路
DNS 是规则引擎的“前哨站”。当 Meta 从 TUN 或代理端口收到连接请求时,首先通过 DNS 获取目标 IP(或使用 Fake-IP 映射),然后规则引擎基于域名或 IP 进行匹配。如果 DNS 返回了错误的 IP,后续的规则判断就会全部失效。因此,设计 DNS 策略时必须与规则中的 GEOIP、DOMAIN-SUFFIX 等条件保持一致,确保“国内域名国内 DNS 解析,国外域名国外 DNS 解析”,这才是一套完整、无泄漏的分流体系。