本文目录
手机显示 VPN 已连接,却无法按域名访问网页时,需要先确认普通网络本来是否可用。系统暂时没有提供解析服务器、订阅设置错误和节点断连的处理方法并不相同;用同一网络和目标保存 VPN 开启前后的结果,才能把版本修复与其他原因区分开。
连接还在,为什么 Android 上的域名却解析失败?
在 Android 上记录 VPN 连接后网页与节点域名解析失败的情况,用同一域名对照直连与 FlClash 中的请求,再核对日志。手机网络、系统 DNS 传递、配置上游或节点连接都可能造成失败,符合空列表条件后才继续。
FlClash v0.8.99 修复了 Android 网络暂时没有报告 DNS 服务器时的一条解析失败路径。旧版日志中的空 [DNS] updateDns 或 udp://: 可作线索,仍要结合直连对照判断,不代表所有 Android 断网都由它造成。
这项修复针对 Android 网络暂时没有报告 DNS 服务器、FlClash 因这条路径无法解析域名的情况。Windows、macOS、Linux 的一般 DNS 故障,或 Android 上配置错误、节点失效、私人 DNS 故障,不应直接套用这个版本修复。
关闭 VPN 的直连对照与空 DNS 线索
如果直连可用,重新开启原 Profile 和节点,再观察是否只有通过 FlClash 的域名查询失败。旧版日志中空的 [DNS] updateDns 或解析目标指向 udp://:,可与官方提交描述对照,但日志缺失也不能反过来排除此路径。
Android 的 LinkProperties.getDnsServers() 返回当前网络链路报告的 DNS 服务器列表。列表暂时为空是本文检查的输入条件,并不说明用户主动把 dns.nameserver 清空。
配置中手填的 nameserver、nameserver-policy 属于代理配置,Android 私人 DNS 则是系统设置。只改这些选项,不一定能验证系统向客户端报告空 DNS 的问题。
保留最小可复现对照
记录配置和故障发生时的状态
记录 FlClash 完整版本、Android 版本、网络类型、当前 Profile 与节点、首次失败时间,以及问题发生在连接、换网还是网络恢复后。保留日志和真实域名访问结果,不在记录前同时换节点、改 DNS 和清缓存。
关闭 VPN 测直连
在同一 Wi-Fi 或移动网络上访问真实 HTTPS 网站,确认手机网络和系统解析是否正常。
用原配置重新测试
开启 FlClash 后固定同一 Profile、节点与目标,查看日志中的第一条 DNS 错误及实际连接结果。
确认是否符合空 DNS 故障条件
只有直连正常、FlClash 中域名失败,且版本和空 DNS 线索吻合时,才继续按 v0.8.99 修复路径处理。
观察结果与下一步
| 观察到的结果 | 下一步 |
|---|---|
| 关闭 FlClash VPN 后,同一网络仍不能解析域名 | 直连仍无法解析时,恢复手机网络、路由器或运营商 DNS;不要把升级 FlClash 当作唯一答案。 |
| 直连正常,旧版 FlClash 的 DNS 日志出现空 updateDns 或 udp://: | 符合本次修复线索,备份后核对官方 v0.8.99。 |
| 仅某个节点或单个域名失败,其他请求正常 | 检查节点地址、DNS 上游、规则与目标服务,不推断整个系统 DNS 列表为空。 |
| Android 私人 DNS 提示不可达,或另一个 VPN 正在接管 | 先核对系统的私人 DNS 和 VPN 状态,保留设置记录再做单变量对照。 |
- 空 DNS 列表为什么会阻止正常回退
- 修复前,Android 服务把空列表传给 Go 内核时成为空字符串,代码再用 strings.Split 分割,得到一个空地址。Mihomo 将它视为 udp://: 名称服务器,使系统解析器误以为已配置服务器,不能走默认回退。v0.8.99 改为传入真正的空列表。
从官方 APK 更新 v0.8.99,并保留原配置
先在 FlClash 的本地备份功能保存当前配置,确认备份文件能找到,并记下订阅来源与选中的 Profile。订阅令牌、节点密码和个人地址可能随配置进入备份,不要把原始文件上传到公开 issue 或在线转换站。
项目 README 列出 arm64-v8a、armeabi-v7a 和 x86_64 包。不要按别人的手机型号猜架构,也不要从未核实的镜像取包。
更新前先停止 FlClash VPN,确认普通联网可用。升级时保留应用数据和事前备份,不清空数据库、不删除全部 Profile,也不为这项修复随意替换订阅 DNS 或填入陌生公共服务器。
v0.8.99 的代码改动是让空系统 DNS 列表保持为空,再由解析器执行其正常回退,并不是给每个设备强制指定某个 DNS 地址。若真实问题来自上游服务器不可达或配置错误,升级不会替代对应排查。
只改变客户端版本的一次验证
记录升级前的配置与结果
保存本地备份和失败日志,记录同一网络、Profile、节点与目标网站,避免把配置变化误当成版本效果。
核对来源与架构
打开 chen08209/FlClash 项目的 v0.8.99 正式 Release,按设备 ABI 选择 Android APK,通过设备正常的应用更新流程安装。
重新开启 FlClash VPN
确认 Profile 和设置仍在,重新开启 FlClash VPN,继续使用升级前相同的节点和网站。
对照 DNS 与真实请求
检查域名查询日志、连接记录及完整 HTTPS 页面加载,不以 VPN 图标或节点延迟数字代替验证。
稳定联网与换网后的 DNS 检查
确认应用版本显示 v0.8.99,且当前 Profile、节点和网络类型与升级前记录一致。先在普通稳定网络下访问同一真实 HTTPS 网站,并从 FlClash 的 DNS 查询、请求或日志页面核对该域名的解析与出站结果。
随后在日常使用中发生 Wi-Fi 与移动网络自然切换或断线重连时,再复查同一个目标。官方提交针对网络报告空 DNS 服务器的瞬间;正常网络始终有 DNS 服务器时,单次成功只能证明当前连接可用,不能单独证明上述空列表故障已修复。
若更新后日志不再出现本次无效服务器线索,域名与真实 HTTPS 请求都恢复,可以记录为本机复测通过。若只有网页仍打不开而域名已经解析,应查看规则、节点、连接记录或目标服务,不继续把所有超时解释成空系统 DNS。
验证清单
- 客户端来自项目正式 v0.8.99 Release,Android APK 架构与设备匹配
- 升级前备份保留,原 Profile、节点和覆写设置仍可核对
- 同一网络与同一目标下,关闭 VPN 的直连和开启 VPN 的结果都有记录
- FlClash 中域名可解析,真实 HTTPS 页面完整加载,连接记录显示预期出站
- 日常网络切换或重连后复查 DNS 与请求,日志没有本次空地址导致的失败
v0.8.99 上仍失败,怎样回退并提交证据?
先在 FlClash 中停止 VPN,确认 Android 回到普通网络且域名和 HTTPS 请求可以访问。若普通网络也失败,暂时不要反复重装客户端;按当前 Wi-Fi、移动网络或私人 DNS 状态修复系统连接。
如果为排查改过 Profile、覆写或其他配置,只恢复这次改动涉及的内容,并从事前备份核对原值。不要删除所有客户端数据、覆盖唯一备份或强行把系统 DNS 指向陌生服务器。回装旧版本可能重现此次缺陷,只能作为保留备份后的临时选择。
若 v0.8.99 上仍出现空 [DNS] updateDns 或 udp://:,向项目 issue 报告 Android 和 FlClash 版本、网络类型、VPN 直连对照、同一 Profile 的最小复现及第一条相关日志。
同时记录网络切换前后的结果。提交前遮盖订阅令牌、节点密码、个人域名和设备标识;原始备份与完整日志留在本机。
如果只有 nameserver-policy: system 命中的域名失败,不要把它直接并入本次空列表故障。项目旧 issue #1393 记录过 v0.8.88 预发布版的类似 udp://: 日志,但其配置触发条件和版本不同;应把自己的当前证据单独列出。
