DNS 模块

范围与目标

DNS 模块决定在策略路由之前如何解析域名。在 Clash 家族客户端中,DNS 行为会显著影响规则命中精度、延迟以及抗污染能力。

本页以 clash-rs 和 Mihomo 的行为作为参考,同时标注当前 chimera_client 的成熟度。

为什么 DNS 设计很重要

  • 域名规则要求查询结果与连接流之间保持稳定映射。
  • 即使应用后续按 IP 建连,fake-IP 模式仍可保留域名语义。
  • 解析器选择会影响抗封锁能力、启动可靠性和隐私泄露风险。

配置要点

  • 上游:UDP / DoH / DoT 端点及其顺序。
  • 模式:fake-IP 与 real-IP。
  • 基于 DNS 的策略路由:nameserver-policy 与 fallback 策略。
  • 缓存策略:容量、TTL 边界与预取行为。
  • 安全控制:fake-IP 过滤、hosts 覆盖与 ECS 处理。
  • 引导:用于解析加密 DNS 端点的明文 DNS。

模式对比

模式优势取舍典型用途
fake-ip建连后能更好保留域名规则语义需要仔细维护过滤列表TUN / 透明代理部署
redir-host / real-IP 风格更简单的应用兼容性以 IP 建连后可能丢失域名语义面向保守 DNS 目标的应用层代理

解析器选择流程(参考)

  1. 检查 hosts 覆盖和缓存。
  2. 按策略(基于域名 / 集合)或默认列表选择解析器。
  3. 查询主解析器。
  4. 当校验 / 延迟条件失败时,执行回退路径。
  5. 缓存并返回结果。

兼容性状态

能力chimera_client 当前状态clash-rs / Mihomo 参考
系统解析器透传主要路径也支持
Clash 风格本地 DNS 服务器开发中成熟
Fake-IP 工作流目标状态成熟
Nameserver 策略 / fallback 过滤目标状态成熟

配置参考

chimera_client(当前保守配置)

dns:
  enable: false
  ipv6: false

与 Clash/Mihomo 对齐的目标结构

dns:
  enable: true
  listen: 127.0.0.1:1053
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - "*.lan"
    - "*.local"
  default-nameserver:
    - 1.1.1.1
    - 8.8.8.8
  nameserver:
    - https://dns.alidns.com/dns-query
    - tls://1.1.1.1:853
  fallback:
    - 9.9.9.9
  fallback-filter:
    geoip: true
    geoip-code: CN

实践建议

  • 从 real-IP / 系统解析器行为起步以确保稳定性。
  • 仅在端到端验证完域名规则工作流后再启用 fake-IP。
  • 保持 fake-IP 排除项尽量精确且可审计。
  • 跟踪 fallback 命中率;突然升高通常意味着上游退化或被阻断。

故障排查清单

  • 确认本地 DNS 监听器可达(例如:dig @127.0.0.1 -p 1053 example.com)。
  • 确认系统解析器或 TUN 协议栈确实指向客户端监听器。
  • 检查日志中是否存在上游超时、TLS 握手错误或污染响应。
  • 可临时强制使用单一 UDP 解析器,以隔离 DoH/DoT 连通性问题。

对齐参考

  • clash-rs:clash-lib/src/config 及 DNS 运行时模块中的 DNS 结构与运行时行为。
  • Mihomo:enhanced-mode、nameserver-policy 与 fallback-filter 语义的生产参考。