Clash Meta for Android DNS 设置:覆写、Fake-IP 与断网排查
简答:先看设置中的“覆写”是否为“不修改”:如果订阅已有 DNS,优先不要重复覆盖。首次排错建议先用 redir-host,确认普通域名、分流域名和局域网是否正常,再测试 Fake-IP;改完后重启服务并查看日志,失败就恢复“不修改”并关闭其他 VPN 做对照。
定义:Clash Meta for Android 的 DNS 设置,是通过客户端覆写或配置文件控制 mihomo 内核的 DNS 开关、上游解析器、Fake-IP/redir-host 模式及过滤规则。
先试这三步:入口、模式、回滚
本文面向 Android 上已经导入配置,或准备使用 Clash Meta for Android 处理 DNS、VPN 接管和域名解析的用户。本文是第三方使用指南,不代表客户端开发方;菜单名称和可见选项可能随安装版本变化,实际页面请以当前版本为准。
| 先做什么 | 判断标准 | 下一步 | 失败时回滚 |
|---|---|---|---|
| 打开“设置/覆写” | 确认 DNS 是“不修改”、启用还是已有具体参数 | 优先查看订阅配置中的 dns: | 恢复“不修改” |
| 首次选择模式 | 普通网站、分流域名和局域网都能测试 | 先用 redir-host 做基线 | 停止服务后恢复原模式 |
| 重启并看日志 | 没有配置解析错误、DNS 启动失败或端口绑定错误 | 再测试 Fake-IP 或 TUN | 停止 Clash VPN,恢复原配置 |
- 先确认当前配置来源,不要同时修改订阅、覆写和本地 YAML。
- 首次排错使用
redir-host,避免把 Fake-IP 兼容性问题与上游 DNS 问题混在一起。 - 每次只改一层,保存后重启服务,按普通域名、分流域名、局域网地址和具体应用的顺序测试。
当前源码包含名为 OverrideSettingsActivity 的设置页面定义,但这只能证明源码存在相关页面,不能保证所有发布版本都在相同菜单路径展示。ClashMetaForAndroid AndroidManifest
DNS 配置到底由谁生效:订阅、覆写与本地 YAML
这里要区分三个概念:订阅是导入的配置来源,客户端覆写是 Android 图形界面提供的修改层,本地 YAML 是用户直接编辑的配置内容。一般 mihomo 文档说明的是内核配置字段,不等于已经证明某个 Android 客户端会怎样合并多个来源。
| 来源 | 作用 | 如何确认 | 不确定时怎么处理 |
|---|---|---|---|
| 订阅原始配置 | 可能已经包含 dns:、上游和 Fake-IP 规则 | 查看配置内容中是否存在 DNS 字段 | 先不修改覆写 |
| 客户端 Override | 可能对导入配置进行覆盖或补充 | 查看覆写页面的当前值,并重启后看日志 | 恢复“不修改”再测试 |
| 本地 YAML | 由用户直接维护的配置片段或完整配置 | 检查字段、缩进和启动日志 | 只保留一份最小改动并备份原文件 |
不要把“订阅、Override、本地 YAML”的实际合并规则想当然地排成固定优先级。对当前版本最可靠的确认方式是:备份原配置,记录覆写值,停止服务后只改变一个字段,重新启动并观察日志及实际解析结果。如果结果不明确,恢复“不修改”并以订阅原始配置作为基线。
mihomo 官方 DNS 文档确认了 enable、enhanced-mode、fake-ip-range、fake-ip-filter、nameserver 和 default-nameserver 等字段,但没有替 Android 客户端定义统一的 Override 合并规则。mihomo DNS 配置文档
设置→覆写:先用保守参数验证 DNS
不同版本的菜单文字可能不同。如果当前页面提供 DNS 覆写控件,可按以下顺序操作;如果找不到某个字段,不要用相近名称的字段替代。
- 停止 Clash VPN 服务后进入设置中的“覆写”或相近页面。这样做是为了避免运行中的旧配置与正在编辑的新配置混淆;如果当前版本明确允许在线修改,则以界面提示为准。
- 如果订阅已经有完整 DNS 配置,先选择“不修改”,重启服务并观察结果。
- 如果域名解析失败,再临时启用 DNS 覆写,并只改变一个模式或一组上游。
- 首次排错优先选择
redir-host。mihomo 官方文档列出fake-ip与redir-host两种模式,并将redir-host标为默认值。 - 保存后重启服务,依次测试普通域名、需要分流的域名、局域网地址和出问题的应用。
上游 DNS 不能只按“看起来常用”选择。应先确认当前 Wi-Fi、移动网络、企业网络策略和隐私要求,再测试该地址是否可达。DoH、DoT 或普通 DNS 的可用性会受网络环境影响,本文不把任何地址视为全球通用推荐。
default-nameserver 用于解析 DNS 服务域名的引导解析。官方示例和配置说明展示了 IP 地址以及加密 DNS 写法,但具体格式支持仍应以当前 mihomo 内核文档和版本为准;无法确认时优先使用文档中明确列出的纯 IP 形式。mihomo 配置示例
最小 YAML 结构片段:只改 DNS,不覆盖节点
下面是语法示例,不是完整订阅,也不是针对所有网络环境的推荐组合。示例地址来自 mihomo 官方资料中的配置写法;使用前仍需确认当地网络可达性、企业网络策略和个人隐私需求。不要把这段单独导入后期待它包含节点、策略组和规则。
dns:
enable: true
ipv6: false
enhanced-mode: redir-host
default-nameserver:
- 223.5.5.5
nameserver:
- https://doh.pub/dns-query
fake-ip-filter:
- '*.lan'
enable:是否启用内核 DNS;关闭时使用系统 DNS 解析。ipv6:设为 false 时,AAAA 查询会返回空结果;依赖 IPv6 的网络不要盲目关闭。enhanced-mode:在fake-ip与redir-host之间选择。default-nameserver:用于解析 DNS 服务域名的引导解析。nameserver:主要上游 DNS 列表。fake-ip-filter:指定不使用 Fake-IP 映射的域名或域名集合。
保存前备份原配置。若重启后出现解析错误、所有应用断网或局域网失效,停止服务,删除新增覆写,恢复“不修改”,再重新启动。
Fake-IP 与 redir-host:按兼容性和接管需求选择
| 模式 | 官方字段含义 | 适合先测试什么 | 出现问题时 |
|---|---|---|---|
redir-host | 以真实目标地址处理解析结果 | 首次排错、局域网、门户认证和应用兼容性 | 继续查上游、规则和 VPN 接管 |
fake-ip | 使用 Fake-IP 地址池并由内核维护域名映射 | 需要域名接管、规则识别或与 TUN 配合的场景 | 检查过滤器、Fake-IP 地址池和应用兼容性 |
mihomo 文档定义了 fake-ip-range、fake-ip-filter 和过滤模式。启用 Fake-IP 后,先检查路由器管理地址、NAS、打印机、局域网域名、Android 网络登录页和需要特殊兼容性的应用;不要一开始把过滤器写成全量匹配。mihomo Fake-IP 字段说明
如果只有 Fake-IP 模式失败,先切换到 redir-host 做对照。切换后恢复只能说明故障范围更可能落在 Fake-IP 过滤、TUN 路由或应用兼容性,不能单独证明上游 DNS 一定正常。
看到什么现象,就先查哪一层
| 现象或日志 | 优先检查 | 最小动作 | 成功判据 |
|---|---|---|---|
| 所有域名都打不开 | VPN 服务、上游 DNS、其他 VPN | 关闭其他 VPN,恢复“不修改”后重启 | 普通域名能解析且日志无启动错误 |
| 只有部分域名失败 | nameserver-policy、规则和分流 | 先测试同一域名在 redir-host 下的结果 | 目标域名与规则命中结果一致 |
| Fake-IP 下局域网失败 | fake-ip-filter、局域网路由 | 加入确需真实地址的局域网域名或切回 redir-host | 路由器、NAS 或打印机恢复访问 |
| 只有一个应用失败 | 分应用代理、应用自带 Secure DNS、应用自身网络 | 确认该应用未被排除或设置为直连 | 目标应用恢复,其他应用状态不被误判 |
日志中出现 DNS 配置解析错误、端口绑定失败或服务启动失败时,先修复配置格式。日志正常但单个应用失败时,不要继续盲目更换上游 DNS,应转查分应用代理、规则命中、应用自带加密 DNS 或系统设置。
Android VPN、Private DNS 和浏览器 Secure DNS 冲突排查
Android 的 VPN 服务可以配置虚拟接口上的 DNS 和路由,但 VPN 图标只说明 VPN 服务已经建立了某个连接,不足以证明所有应用、所有域名和所有规则都已正常。Android VpnService API VpnService.Builder API
- 先关闭其他 VPN:包括另一个代理客户端、企业 VPN、广告过滤器或安全软件的 VPN 模式。
- 临时调整 Private DNS:把 Android Private DNS 临时设为“自动”或关闭,重新测试。这里是排查对照,不把“同时启用必然冲突”当作 Android 官方定论。
- 只在浏览器失败:临时关闭浏览器 Secure DNS,观察是否仅浏览器路径异常。
- 检查分应用代理:确认目标应用没有被排除在 VPN 外,也没有被设置为直连。
- 最后检查 TUN、DNS 劫持和自动路由:这些选项影响范围较大,修改前记录原值,失败后完整恢复。
Android 官方文档可以证明 VPN 服务能够配置 DNS 和路由;Private DNS 与 VPN 的实际表现还可能受系统版本、厂商实现和其他网络应用影响,因此建议采用“关闭其他 VPN—调整 Private DNS—重启服务—按应用测试”的对照顺序。
标准保存、测试与回滚流程
- 备份:保存原订阅配置和当前覆写内容,不要公开完整订阅链接、令牌或私钥。
- 记录原值:记下 DNS 模式、Private DNS、是否启用 TUN、分应用代理和其他 VPN 状态。
- 停止后修改:建议先停止服务;若当前版本支持在线编辑,则以界面提示为准。
- 只改一层:先只改
enable、enhanced-mode或一组上游,不要同时改规则和 TUN。 - 重启并看日志:确认没有 YAML 解析错误、DNS 启动失败或端口绑定错误。
- 分层测试:普通域名→分流域名→局域网地址→具体应用。
- 回滚:停止服务,删除新增覆写,恢复“不修改”和原配置,关闭 Clash VPN 后确认 Android 系统网络恢复。
一次响应成功只能证明该次测试的局部链路,不等于长期稳定性或所有应用都兼容。记录测试网络、DNS 模式、是否启用 TUN、失败域名和日志时间,便于复现。
常见问题 FAQ
Clash Meta for Android 的 DNS 设置在哪里?
通常可在应用设置中的“覆写”或相近页面找到,但菜单名称和是否展示会随安装版本变化。当前源码包含 Override 设置页面定义,但不能据此保证每个发布版本都使用相同入口。找不到时先检查配置文件中的 dns:,不要重复导入订阅。
覆写里的“不修改”是不是关闭 DNS?
不是。它通常表示客户端不主动覆写该部分配置;如果订阅本身包含 dns:,内核仍可能按订阅配置运行。是否关闭 DNS,要看生效配置中的 dns.enable 和启动日志。
Fake-IP 和 redir-host 哪个更好?
没有脱离场景的固定答案。排错、局域网和兼容性优先时先用 redir-host;需要更强域名接管或规则识别时再测试 fake-ip,并补充必要的 fake-ip-filter。
为什么设置 DNS 后所有应用都无法联网?
优先查上游 DNS 是否可达、是否运行其他 VPN、Private DNS 是否造成对照差异,以及 YAML 缩进和字段类型是否正确。最快回滚方式是停止服务、恢复“不修改”、关闭其他 VPN,再逐项恢复。
设置了 DoH 还需要 default-nameserver 吗?
取决于 DoH 地址写法和当前内核版本。如果 DNS 服务地址使用域名,需要考虑该域名如何完成首次解析;mihomo 官方资料将 default-nameserver 用于解析 DNS 服务域名。无法确认时先检查现有订阅和当前版本文档,不要盲目增加字段。
常见问题
Clash Meta for Android 的 DNS 设置在哪里?
通常在设置中的“覆写”或相近页面,但菜单和展示方式会随版本变化。找不到时先检查配置文件中的 dns,不要重复导入订阅。
覆写里的“不修改”是不是关闭 DNS?
不是。它通常表示客户端不主动覆写该项;是否启用 DNS 要看生效配置中的 dns.enable 和启动日志。
Fake-IP 和 redir-host 怎么选?
首次排错、局域网和兼容性优先时先用 redir-host;需要更强域名接管或规则识别时再测试 fake-ip。
为什么设置 DNS 后所有应用都无法联网?
先查上游 DNS 是否可达、是否运行其他 VPN、Private DNS 是否造成冲突,以及 YAML 字段和缩进是否正确。
default-nameserver 一定要填写吗?
不一定。是否需要取决于上游 DNS 的写法和当前内核版本;先检查现有订阅与官方字段说明。