Clash DNS设置怎么配置?完整 YAML 与排查步骤
简答:Clash DNS设置建议先从最小配置开始:启用 dns,选择 fake-ip 或 redir-host,填写可达的 nameserver,再根据局域网、公司内网和 IPv6 情况补充例外规则。使用 Mihomo 内核时,DNS 字段应放在配置文件顶层的 <code>dns:</code> 段;Clash Verge Rev 可从 Profiles 中打开当前配置的 Extend Config 或编辑配置文件。先备份,再保存、校验、重新载入,最后查看日志和实际解析结果。
定义:Clash DNS配置是由内核接管域名解析并按照解析模式、上游 DNS、域名策略和 Fake-IP 例外规则处理请求的一组 YAML 设置。
先试这份最小配置:适合大多数 Mihomo 配置文件
如果你只是想让 Clash 接管 DNS,先不要同时修改 TUN、代理组和大量分流规则。下面的配置使用 Mihomo 当前文档支持的字段:enable 开启 DNS 模块,enhanced-mode 选择解析模式,nameserver 指定主要 DNS,default-nameserver 用于解析 DNS 服务器域名。字段含义和支持的 DNS 类型以 Mihomo DNS 配置文档 为准。
dns:
enable: true
ipv6: false
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
default-nameserver:
- 223.5.5.5
nameserver:
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
fake-ip-filter:
- '*.lan'
- '*.local'
- localhost
这只是示例,不代表这些上游 DNS 在每个网络环境中都一定可达。若 DoH 访问失败,可以把 nameserver 替换为当前网络可访问的普通 UDP、TCP、DoT 或其他受支持地址;Mihomo 支持的写法可查看 Mihomo DNS 类型说明。
无注释版:
dns:
enable: true
ipv6: false
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
default-nameserver:
- 223.5.5.5
nameserver:
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
fake-ip-filter:
- '*.lan'
- '*.local'
- localhost
| 字段 | 作用 | 新手建议 |
|---|---|---|
enable | 是否启用 Mihomo DNS 模块;关闭时使用系统 DNS。 | 需要由 Clash 处理 DNS 时设为 true。 |
enhanced-mode | 选择 fake-ip 或 redir-host。 | 先使用 fake-ip;局域网、旧应用异常时再测试 redir-host。 |
nameserver | 主要域名解析服务器。 | 填当前网络实际可达的地址,不要盲目堆很多服务器。 |
default-nameserver | 解析 DNS 服务器域名的默认 DNS。 | 使用 IP 地址;它不是所有域名查询的主要出口。 |
fake-ip-filter | 指定不返回 Fake-IP 映射的域名。 | 优先放局域网后缀、打印机、NAS 和内网域名。 |
Clash DNS设置入口:配置文件与 Extend Config 怎么选
不同客户端的菜单名称会随版本变化,但配置本质仍是内核接收的 YAML。以 Clash Verge Rev 当前项目界面定义为例,Profiles 菜单包含 Edit File、Extend Config、Extend Script 等入口;相关菜单名称可在其 Profiles 界面定义 中核对。
- 先备份:在 Clash Verge Rev 中找到当前启用的配置,优先使用
Open File或复制配置文件到其他目录。 - 选择编辑位置:只改当前订阅文件时使用
Edit File;希望对多个配置追加相同 DNS 字段时,使用当前版本界面中的Extend Config。菜单若不同,可搜索Profiles、Extend Config或Edit File。 - 放在顶层:
dns:应与proxies:、proxy-groups:、rules:等顶层字段同级,不要缩进到某个代理组下面。 - 保存并校验:检查冒号、缩进和列表短横线。YAML 不能用 Tab 代替空格。
- 重新载入:重新选择配置或执行更新、载入操作,让内核使用新配置。
- 看日志:重点观察配置解析错误、DNS 上游连接失败、端口占用和 Fake-IP 相关提示。
- 验证业务:分别测试普通网站、需要代理的网站、局域网设备和此前打不开的应用。
Extend Config 不应被当作永远不会覆盖字段的安全补丁。Clash Verge Rev 的界面说明显示,扩展配置、扩展脚本和应用设置有明确的处理顺序,且部分由应用设置管理的字段最终可能重新应用;因此,发现手写 DNS 没生效时,应检查最终运行配置和客户端设置,而不是只看原始 YAML。
fake-ip 和 redir-host 怎么选
Mihomo 文档将 enhanced-mode 定义为 DNS 处理模式,可选 fake-ip 和 redir-host。两者不是“速度快慢开关”,而是域名解析结果交给规则和连接处理的不同方式。
| 模式 | 基本特点 | 适合优先测试的场景 | 常见例外 |
|---|---|---|---|
fake-ip | 为域名返回 Fake-IP,并维护域名与地址的映射。 | 需要更完整地按域名匹配规则,或使用 TUN 接管系统流量。 | 局域网域名、打印机、NAS、部分游戏和旧应用。 |
redir-host | 返回真实解析地址,兼容某些依赖真实 IP 的应用。 | Fake-IP 导致局域网访问或特定应用异常时。 | 部分域名规则的处理方式可能与 Fake-IP 不同。 |
选择方法很简单:先保留一种模式,只改变一个变量。如果启用 Fake-IP 后局域网设备无法访问,先把对应域名加入 fake-ip-filter;仍然异常时,再临时切换为 redir-host 对比。不要同时修改 DNS 上游、TUN、IPv6 和规则,否则无法判断真正原因。
DoH、DoT、UDP 和 default-nameserver 怎么填写
Mihomo 支持普通 UDP、TCP、DNS over TLS、DNS over HTTPS 和 DNS over QUIC 等类型。常见写法如下,具体支持情况应以当前内核文档为准。
nameserver:
- 223.5.5.5
- tcp://8.8.8.8
- tls://1.1.1.1
- https://doh.pub/dns-query
- quic://dns.adguard.com:784
default-nameserver 的用途容易被误解。它用于解析 nameserver、fallback 等 DNS 服务器的域名,文档要求这里使用 IP,也可以使用加密 DNS;它不等于“所有域名都只通过这里解析”。如果你的 DoH 地址本身已经写成 IP,通常不需要为了它额外堆叠多个默认服务器。
排查时建议按这个顺序:先用一个已知可达的普通 UDP 地址验证配置是否生效,再换成 DoH 或 DoT;如果换成加密 DNS 后失败,检查网络是否能访问对应服务、系统时间是否正确,以及是否存在代理依赖。不要把多个不可达地址混在一起,否则日志会同时出现多种失败信息。
nameserver-policy:按域名指定 DNS
nameserver-policy 用于为特定域名或域名集合指定解析服务器,并优先于一般的 nameserver 和 fallback 查询。它适合处理公司内网、家庭局域网或需要固定解析路径的域名。
dns:
enable: true
nameserver:
- https://doh.pub/dns-query
nameserver-policy:
'+.corp.example':
- 10.0.0.53
'+.lan':
- 192.168.1.1
'www.example.com':
- 223.5.5.5
上面的 corp.example、10.0.0.53 和 192.168.1.1 都是示例,必须替换为你实际存在且可达的内网域名和 DNS 地址。不要把公司内网域名发送到公共 DNS;如果没有内网 DNS,就不要添加这条策略。Mihomo 文档还说明,proxy-server-nameserver 只用于解析代理节点域名,direct-nameserver 用于直连出口解析,它们应在确实需要区分代理节点或直连解析路径时再配置。
IPv6、TUN 和浏览器 DoH 的冲突排查
Mihomo 的 ipv6: false 会对 AAAA 查询返回空结果;这不是“关闭所有 IPv6 网络”的同义词,而是限制 DNS 返回 IPv6 地址。若你的网络、目标服务和客户端都能稳定使用 IPv6,可以再测试 ipv6: true;如果出现连接等待、部分网站打不开或优先走不可达 IPv6,先恢复为 false 做对照。
TUN 也有独立的 DNS 行为。Mihomo 文档将 TUN 的 dns-mode 分为 disabled、native 和 hijack;其中 hijack 会额外拦截其他接口发往 53 端口的请求,在 Windows 上需要 strict-route,在 Linux 上需要 auto-redirect。Windows、macOS 和 Android 还存在系统权限、局域网请求或 Private DNS 等平台边界,不能把某个平台的行为直接推广到所有客户端。详情见 Mihomo TUN 配置文档。
如果浏览器启用了自己的 DoH,它可能绕过系统 DNS 或 Clash 的普通 DNS 接管。排查时先临时关闭浏览器的“安全 DNS/使用安全 DNS”功能,再对比 Clash 日志;确认问题后,再决定由浏览器或 Clash 其中一方负责解析,避免两套策略互相覆盖。
DNS设置后仍打不开:按闭环排查
- 确认 YAML 生效:检查
dns.enable是否为true,并确认dns:位于顶层。 - 确认上游可达:只保留一个
nameserver,先验证普通 UDP 或一个确定可访问的加密 DNS。 - 确认日志:查看是否有 YAML 解析失败、DNS 请求超时、TLS 证书错误或连接循环。
- 确认解析结果:在 Windows 使用
nslookup example.com,在 macOS 或 Linux 使用dig example.com。这只能验证命令当前使用的解析路径,不能单独证明所有应用和 TUN 流量都没有绕行。 - 确认 Fake-IP:启用 Fake-IP 时,观察目标域名是否命中 Fake-IP 规则;局域网域名、打印机和 NAS 优先加入
fake-ip-filter。 - 确认 IPv6:先用
ipv6: false对比;如果恢复访问,说明 AAAA 解析或 IPv6 路由可能参与了问题,但还需要结合日志和系统网络状态继续确认。 - 确认 TUN 与系统代理:Clash Verge Rev 的界面将 TUN 描述为捕获系统流量的虚拟网卡模式,并提示 TUN 需要服务模式或管理员模式;开启 TUN 后通常不需要再依赖系统代理。若同时开启两套接管方式,先关闭其中一套做对比,相关界面定义见 Clash Verge Rev 设置界面定义。
- 清理缓存并复测:重新载入配置,必要时清理 DNS Cache 和 Fake-IP Cache,再依次测试普通域名、内网域名和此前失败的业务。
如果只修改 DNS 仍无法访问,问题可能在代理节点、路由规则、MTU、系统防火墙或目标服务本身。此时不要继续堆叠 DNS 服务器,应转到连接日志和规则命中结果,判断请求是否已经进入正确的代理组。
配置前后的自查清单
- 备份:保留原始配置和当前使用的订阅配置。
- 字段:确认内核支持
enhanced-mode、nameserver-policy、fake-ip-filter等字段。 - 缩进:统一使用空格,不使用 Tab;列表项与父级字段保持正确层级。
- 范围:不要把示例内网地址、域名或 DNS 服务器直接当成你的实际环境。
- 验证:完成“保存—校验—重新载入—看日志—测解析—测业务”闭环。
- 回滚:如果改完后所有连接异常,先恢复备份,再只改一个字段进行对照。
本文是第三方使用指南,不代表相关客户端或内核项目的官方页面;字段和菜单可能随版本变化,最终以当前内核文档、客户端界面和运行日志为准。
常见问题
Clash DNS配置应该写在哪里?
写在配置文件顶层的 dns: 段,与 proxies:、proxy-groups: 和 rules: 同级。若使用 Clash Verge Rev,可从 Profiles 中编辑当前配置或使用 Extend Config;保存后必须重新载入才能验证。
default-nameserver 和 nameserver 有什么区别?
nameserver 是常规域名解析使用的主要 DNS;default-nameserver 主要用于解析 DNS 服务器自身的域名,通常填写 IP。不要把两者当成完全相同的字段。
Fake-IP 一定比 redir-host 好吗?
不能一概而论。Fake-IP 更适合需要域名规则和 TUN 接管的场景,但局域网、打印机、NAS、游戏或旧应用可能需要例外;遇到兼容性问题可以加入 fake-ip-filter 或临时切换 redir-host 对照。
为什么配置了 DoH,日志里仍然看不到成功请求?
可能是 DoH 地址不可达、TLS 校验失败、代理节点域名解析形成循环,或浏览器自己的 DoH 绕过了 Clash。先只保留一个上游,检查日志和网络可达性,再暂时关闭浏览器安全 DNS 做对比。
开启 TUN 后 DNS 还是泄漏怎么办?
先确认 TUN 的 dns-mode、dns-hijack、Windows 的 strict-route 或 Linux 的 auto-redirect 是否满足条件,再检查浏览器 DoH、Android Private DNS 和其他 VPN 软件。命令行查询只能证明一次查询路径,不能单独证明所有应用流量都未绕行。
常见问题
Clash DNS配置应该写在哪里?
写在配置文件顶层的 dns: 段,与 proxies、proxy-groups、rules 同级。Clash Verge Rev 可从 Profiles 中编辑配置或使用 Extend Config,保存后重新载入。
default-nameserver 和 nameserver 有什么区别?
nameserver 是常规域名查询使用的主要 DNS;default-nameserver 主要用于解析 DNS 服务器自身的域名,通常填写 IP。
Fake-IP 一定比 redir-host 好吗?
不是。Fake-IP 更适合域名规则和 TUN 接管,但局域网、打印机、NAS、游戏或旧应用可能需要 fake-ip-filter 或 redir-host。
配置了 DoH 但仍然解析失败怎么办?
先只保留一个可达的 nameserver,查看日志中的超时、TLS 和代理循环错误,再暂时关闭浏览器自己的安全 DNS进行对比。
开启 TUN 后如何排查 DNS 绕行?
检查 TUN 的 dns-mode、dns-hijack,以及系统所需的 strict-route 或 auto-redirect;同时排查浏览器 DoH、Android Private DNS 和其他 VPN。