🌐 DNS & TUN · 深度解析

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 模式:从应用代理到系统接管

虚拟网卡如何实现全局流量透明代理

1

创建虚拟网卡

Meta 内核在系统中注册一个虚拟 TUN 接口,操作系统将其视为一张真实网卡。

2

修改路由表

将系统默认路由指向该虚拟网卡,所有出站 IP 数据包(TCP/UDP)被送入 Meta 处理。

3

读取原始数据包

Meta 从 TUN 接口读取 IP 层数据包,解析出源地址、目标地址和端口信息。

4

规则匹配与转发

数据包的目标 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 等匹配条件,优先级从上到下。未命中任何规则的域名将使用 nameserverfallback 字段指定的默认服务器。这种分层设计让 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 解析”,这才是一套完整、无泄漏的分流体系。

📐 前往规则分流详解 →

📥 配置你的 DNS 与 TUN 方案

下载支持 Meta 内核的客户端,应用本篇 DNS 策略,体验无泄漏、低延迟的代理网络。

📦 浏览客户端下载资源
订阅配置详解 规则分流教程 Verge 客户端使用