进阶配置 阅读约 16 分钟

Clash Meta nameserver-policy 怎么写?按域名指定 DoH 分步配置(2026)

Clash MetaMihomo)里只有一套 nameserver 时,常遇到「境内站点希望走国内递归拿对 CDN」「境外服务只想走指定 DoH」「公司内网后缀必须交给自建转发」这类需求。把它们写进 nameserver-policy,就是在 DNS 层做按域名的上游分流:与代理规则并行,但解决的是解析出口而不是 TCP 走哪张网卡。本文给可复制的 dns 骨架、常见 policy 模式与验证顺序,并与站内 DNS 防泄漏fake-ip-filter 专文衔接。

Clash 编辑组 nameserver-policy · DoH · Mihomo · 按域名 DNS

为什么需要按域名的 DoH:和「规则分流」不是一回事

很多教程会把「打不开某个站」直接引导去改 rules。确实,最终连哪条隧道由规则决定,但若解析阶段就拿错了 IP(例如境内站被境外递归给了次优的 CDN 边缘,或流媒体需要特定地区的权威应答),后面再怎么切换节点都只能在错误的目的地上反复握手

nameserver-policy 的作用,是在内核收到某次 DNS 查询时,先看被查询的名字是否命中策略键:命中则使用你为该键配置的专用上游列表;未命中则回落到常规的 nameserver 流程,并仍受 fallbackfallback-filter 约束。把它理解成「DNS 版的按域名选表」,比单纯堆更多全局 DoH 更可控,也更好排查。

若你尚未搭过完整的 Meta DNS 栈,建议先通读 Meta 内核 DNS 防泄漏终极指南:FakeIP、DoH、DoT 完整配置,建立 dns 各字段的全景;本篇只深挖 policy 的写法与落地验证,避免与泛化 DNS 长文重复。

1和 policy 联动的前置字段:先排好「默认池」

在动手写 nameserver-policy 之前,务必保证三件事清晰: 谁负责引导启动阶段解析你的 DoH 主机名(通常是 default-nameserver,用轻量 UDP/TCP 或运营商 DNS 即可); 无策略命中时,默认递归用哪几条(nameserver); 何时启用备用池(fallback + fallback-filter)。policy 不是替代品,而是在默认池之上插入的例外映射

实务上常见组合是:nameserver 放对「大部分大陆域名友好」的 DoH/DoT,fallback 放境外可信递归;再用 nameserver-policygeosite:cn 或具体后缀钉死到国内 DoH,把 +.google.com+.openai.com钉到你希望的境外 DoH,让解析意图与后续代理组/geo 规则一致。这样做比在 fallback-filter 里硬凑所有场景更直观——policy 直接回答「这个名字找谁问」。

policy 命中后还会不会走 fallback?

高层理解:policy 指定的是本次查询优先使用的上游集合;是否进一步触发 fallback,取决于该上游返回的结果是否被判定为「需要降级」以及你的 fallback-filter 设置。别把 policy 当成「绕过所有保护」的开关;若你发现 policy 上游偶发污染,仍应保留全局的降级逻辑,只是在调试时可以用单个域名缩小问题面。

2教学用骨架:nameserver-policy 在 dns 段中的位置

下面是一段强调结构的 YAML:nameserver-policynameserverfallback 并列于 dns 下。示例中的 URL 仅为演示,请替换为你可信、且在当前网络可达的端点;企业环境还需遵守内部网络与合规要求。

dns:
  enable: true
  ipv6: false
  listen: 127.0.0.1:1053
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  default-nameserver:
    - 223.5.5.5
    - 119.29.29.29
  nameserver:
    - https://dns.alidns.com/dns-query
    - https://doh.pub/dns-query
  fallback:
    - https://dns.google/dns-query
    - tls://1.1.1.1
  nameserver-policy:
    "geosite:cn":
      - https://doh.pub/dns-query
      - https://dns.alidns.com/dns-query
    "+.google.com":
      - https://dns.google/dns-query
    "+.cloudflare.com":
      - https://1.1.1.1/dns-query
  fallback-filter:
    geoip: true
    geoip-code: CN

键名支持多种形式:完整主机名、带 +. 前缀的后缀规则、以及 geosite:某分类(需你的运行环境已加载对应路由与数据集)。同一后缀 family 建议先汇总再精修:从少量条目验证路径正确,再逐步扩展,避免一次粘贴超大表后难以 diff。

3常见写法模式:境内外、流媒体、内网与「单站调试」

境内外分路最简单也最常用:把大陆域名字典映射到国内 DoH,把海外常用业务域指向你愿意信任的境外递归。其直觉目标是让解析轨迹尽量与路由意图同向,减少「规则走了代理但 IP 仍像在大陆」或相反的割裂感。注意 geosite:cn 覆盖面大,若与你的自定义直连表存在冲突,应以更具体的后缀策略微调优先。

流媒体与区域敏感业务常需要特定地区的应答;policy 适合把明确后缀绑到对这些业务更友好的上游。务必同时检查代理节点的地理位置与账号区域,否则「解析对了、出口仍不对」依旧会失败。若你通过 Clash Meta 的 GEOIP 与 GEOSITE 分流 把某族流量固定到指定策略组,DNS 上也建议用同样的域名集合做 policy,形成端到端一致的预期。

企业内网后缀(例如 +.corp.example)应指向可达的内网转发器或 Split DNS,而不是公网 DoH;这类名字往往还要出现在 fake-ip-filter 与局域网直连域名 一节中提到的 fake-ip-filter,否则 FakeIP 可能先制造「假地址」,让 policy 根本来不及按你设想工作。内网与 FakeIP 的耦合排错顺序在同站 fake-ip 专文里写得更细,此处只强调两条配置要一起核对

单站调试推荐新增一行极具体键(完整域名或单一后缀),观察日志里对应查询是否切换上游;通过后再合并进更大的 geosite 或规则集。遇到「看起来像 policy 没生效」,很多时候是合并配置被覆写实际查询名与想象不同(CNAME 链、前缀差异、国际化域名等),需要用日志里的原始 QNAME 对照。

4FakeIP 场景下的协作顺序

enhanced-mode: fake-ip 下,未被 fake-ip-filter 放行的查询会进入 FakeIP 语义;被放行的查询则会去做真实递归,此时 nameserver-policy 才有机会按域名挑选 DoH。若你观察到「policy 写了但永远走默认池」,第一步要确认该名字是否误入了 FakeIP 快路径、或客户端根本没有把查询送进内核 DNS。

第二步行文检查 dns-hijack 与 TUN 打开顺序:Clash Verge Rev TUN 模式完整开启教程 可以帮助你确认系统查询确实指向本机 DNS 监听地址。若应用使用 DoH 旁路直出,你需要不同的收口策略——那不是 policy 能单独解决的,但症状常被误判成「policy 写错」。

5验证:别只相信一次性 dig

验证分三层:配置是否加载(合并后的 YAML 是否含目标 policy 段);查询是否命中(日志里能看到为某 QNAME 选择了期望上游);解析结果是否与路由一致(连接阶段是否仍因规则顺序提前匹配而走错组——可对照 Clash Meta 规则顺序与 MATCH)。

FakeIP 模式下,系统自带的 dig 有时只能看到 198.18 段的映射,这并不代表 policy 无效;要以内核日志、调试面板或 API中对「真实域名 → 选用上游 → 返回记录」的链路为准。若你在 IPv6 双栈环境,顺便阅读 IPv6 与 DNS 双栈排查,避免 AAAA 路径与 policy 叠加后更难观测。

常见问题(速览)

  • policy 与 nameserver 谁优先?对被查询名命中策略键时,使用 policy 指定的上游集合;未命中才用默认 nameserver
  • 可以只写 DoH 吗?可以,但请保证 default-nameserver 能解析你的 DoH 主机名,且网络允许 HTTPS/TLS 出网。
  • geosite 键需要额外规则吗?policy 使用的是 DNS 侧的 geosite 分类数据,与 rules 里的 GEOSITE 相关但服务点不同;两者建议用同一套维护源,减少「规则认、DNS 不认」的偏差。
  • 写了 policy 仍异常?先缩减到单个域名验证,再查覆写层、mixin、远程订阅是否在后加载阶段改写了 dns 段。

合规提示:在企事业网络或受管设备上调整 DNS 与劫持范围前,请遵循当地法规与组织策略。本文示例仅供技术学习,请替换为你有权使用且可达的上游。

下载与源码:日常客户端安装包请优先使用 本站下载页;GitHub 上的 Mihomo 发行说明便于核对字段语义,与「获取已签名安装包」分开即可。

小结

nameserver-policyClash Meta 用户在 DNS 层实现「按域名指定 DoH」的核心手段:先把 default-nameservernameserverfallback 理顺,再用策略键把境内外、流媒体或内网后缀映射到合适的上游,并与 fake-ip-filter、TUN 劫持与应用真实查询路径交叉验证。

与只能在界面里二选一「系统 DNS / 加密 DNS」的轻量工具相比,支持 Meta 的客户端让你能在同一份 YAML 里维护可版本化的 DNS 策略,长期演进成本更低;出了问题也能从日志逐条回放「谁先匹配、谁该背锅」。

若你还没用过带规则编辑与连接日志的图形客户端,从零手搓多个 DNS 出口往往容易在合并层迷失;统一管理订阅、覆写与 DNS 段能显著降低这类心智负担。

如果你希望省去来回比对配置文件与查找文档的时间,可以免费下载 Clash,配合本文示例在本地用最小用例验证 policy,再渐进合并进自己的主力配置。

Clash Meta / Mihomo 客户端 DNS · DoH

nameserver-policy 需要可视化合并结果与 DNS 日志对照修改;一体化客户端能更快验证按域名 DoH 是否命中。

按域名选 DoH

policy 与默认上游分离

与分流规则对齐

解析意图匹配 GEOIP 组

可审计 YAML

便于 diff 与回滚

专题衔接

防泄漏与 fake-ip-filter

上下篇导航

相关阅读

按域名 DoH:先查 policy 命中

用支持 Meta 的客户端查看 DNS 日志,对照单个域名逐步加 policy,再合并进 geosite。

免费下载客户端