先确认 iPhone 上安装的是什么
iOS 上通常安装的是兼容 Clash、Clash Meta(mihomo)配置格式的第三方网络工具,而不是桌面端 Clash 程序本身。受 iOS 沙盒与 Network Extension 机制限制,客户端需要通过系统提供的 Packet Tunnel Provider 建立本机 VPN 通道,再把应用流量交给规则引擎处理。界面名称、策略组操作和配置兼容范围会因客户端而异,但获取应用、导入订阅、授权 VPN、选择节点和验证规则这几步基本一致。
选择客户端时,先查看 App Store 商品页中的开发者名称、最近更新时间、系统版本要求和配置格式说明。仅凭应用名称或相似图标无法判断兼容性。商品页若明确写有 Clash、Mihomo、YAML、Rule Provider、VLESS、Hysteria2 等关键词,仍应继续核对开发者文档,因为“支持订阅”可能只表示支持该客户端自己的 JSON 格式,并不一定能读取 Clash YAML。
| 核对项目 | 应查看的位置 | 判断依据 |
|---|---|---|
| 系统要求 | App Store → 应用详情 → 兼容性 | 确认当前 iOS 主版本满足最低要求,例如 iOS 17 或 iOS 18 |
| 配置格式 | 应用详情、开发者网站或内置帮助 | 明确列出 Clash YAML、Mihomo 或对应订阅类型 |
| 维护状态 | App Store → 版本记录 | 查看最近更新日期及修复内容,而非只看首次发布日期 |
| 开发者身份 | 商品页开发者字段 | 与项目文档提供的 App Store 链接和开发者名称交叉核对 |
App Store 搜不到客户端时检查账号区域
App Store 展示内容取决于“媒体与购买项目”当前登录账号的商店区域,不完全取决于 iPhone 的语言、时区、SIM 卡或「设置」→「通用」→「语言与地区」。同一个应用可能在部分区域可获取,在另一些区域不显示,也可能因开发者调整发行范围而下架。因此,改系统地区通常不能解决搜索不到的问题。
先用开发者提供的商品页链接
- 从客户端项目文档或开发者网站打开 App Store 商品页,不先依赖关键词搜索。
- 核对商品页开发者名称、应用图标、版本记录和系统要求。
- 如果页面提示“此 App 在你所在的国家或地区尚未提供”,再检查媒体购买账号区域。
- 若页面显示应用已移除,不要安装名称相近的替代品;重新查看项目当前推荐的客户端。
iOS 18 中可进入「设置」→「Apple 账户」→「媒体与购买项目」→「查看账户」→「国家或地区」查看当前商店区域。系统可能要求验证 Face ID、Touch ID 或设备密码。Apple 对更改区域有账户余额、有效订阅、家庭共享和付款方式等条件;页面若提示存在未完成事项,应按 Apple 的账户规则处理,而不是反复切换系统语言。
只退出媒体购买账号时要分清范围
「设置」→「Apple 账户」→「媒体与购买项目」中的退出操作,作用于 App Store、音乐和媒体购买,不等同于退出顶部的整个 Apple 账户。不要在不清楚照片、通讯录和 iCloud 同步状态时点击 Apple 账户页面底部的整机退出。应用成功下载后,其后续更新通常仍与最初获取它的媒体购买账号关联,更新时可能要求对应账号验证。
准备一条能被客户端识别的订阅链接
订阅不是节点名称,也不是单独的服务器地址。它通常是一条 HTTPS URL,客户端请求后得到 Clash YAML、Mihomo YAML 或服务商定义的配置内容。一个典型地址可能类似下面这样:
https://sub.example.net/clash?token=abc123
这个地址仅用于说明结构。实际链接应来自订阅提供方的控制面板,并选择明确标注为 Clash 或 Mihomo 的格式。如果面板同时提供 Base64 通用订阅、Sing-box、Surge 和 Clash,多数 iOS Clash 类客户端应选择 Clash/Mihomo 项,而不是看到“iOS”字样就随意复制。
导入前做三项检查
- 协议:优先使用 HTTPS。复制时不要带前后的空格、换行、中文引号或聊天软件生成的省略号。
- 有效期:确认订阅未过期、流量未耗尽,面板状态为可用;旧链接若已重置 token,需要复制新地址。
- 格式:浏览器打开后若直接下载 YAML 文件或显示以
proxies:、proxy-groups:开头的文本,通常属于 Clash 配置;若只返回登录页 HTML,则不是可直接导入的订阅响应。
部分订阅服务器会根据请求的 User-Agent 返回不同格式。Safari 能打开链接,不代表客户端请求一定得到相同内容;反过来,Safari 显示空白也不代表订阅失效,因为响应可能是下载文件。准确判断方式是查看客户端更新日志中的 HTTP 状态码和解析错误。
在 iOS 客户端中导入订阅
不同客户端的菜单文字可能是「配置」「订阅」「Profiles」或「远程配置」。通用路径是:打开客户端 → 进入配置管理 → 新建远程配置 → 粘贴 URL → 设置名称与更新周期 → 保存 → 立即更新。首次操作建议把自动更新设为 24 小时或 1440 分钟,先手动更新一次,确认格式可读后再启用后台刷新。
方式一:从剪贴板粘贴 URL
- 在订阅控制面板点击“复制 Clash 订阅”,避免长按后漏选查询参数。
- 打开客户端的「配置」→「添加配置」→「从 URL 下载」或对应入口。
- 粘贴地址后检查开头是否为
https://,末尾是否多出句号或空格。 - 名称填写便于识别的文字,例如“日常订阅”,不要把 token 当作名称。
- 保存后点击更新,等待客户端显示节点数、策略组数或更新时间。
如果 iOS 弹出“允许粘贴”提示,应核对来源应用后选择允许。该提示属于剪贴板隐私控制,不是 VPN 授权。拒绝后可重新点击输入框并使用系统编辑菜单粘贴;部分应用也能在「设置」中单独调整粘贴权限。
方式二:导入本地 YAML 文件
订阅提供方若给出 .yaml 或 .yml 文件,可先存入“文件”应用,再从客户端选择「从文件导入」。文件应为 UTF-8 文本,且顶层字段缩进一致。下面是用于识别结构的简化示例,不包含可连接节点:
mixed-port: 7890
mode: rule
proxies: []
proxy-groups:
- name: PROXY
type: select
proxies:
- DIRECT
rules:
- GEOIP,CN,DIRECT
- MATCH,PROXY
本地文件不会自动跟随远程订阅更新。节点变更后需要重新下载并导入,或者改用远程配置 URL。若客户端同时保留多个配置,应明确选中刚导入的配置;“下载成功”只表示文件进入配置列表,不代表它已经成为当前运行配置。
完成 VPN 配置授权与首次连接
客户端第一次启动隧道时,iOS 会显示“想要添加 VPN 配置”之类的系统对话框。点击允许后,系统可能要求输入设备密码或进行生物识别。这个过程由 iOS 创建 Network Extension VPN 配置;未完成授权时,客户端即使能更新订阅,也无法接管其他应用的网络流量。
- 在客户端策略页选择一个可用节点或自动选择策略组。
- 返回首页,打开“连接”“启动”或“VPN”开关。
- 在系统弹窗中点击“允许”,完成设备身份验证。
- 等待状态从连接中变为已连接,通常应在 2 至 10 秒内完成。
- 进入「设置」→「通用」→「VPN 与设备管理」→「VPN」,确认对应配置状态为已连接。
iOS 同一时间通常只允许一个个人 VPN 隧道处于活动状态。如果设备已经连接企业 VPN、其他代理客户端或安全软件的本地 VPN,启动新客户端时可能自动断开旧连接,也可能持续卡在“正在连接”。排查时先关闭其他 VPN,再回到目标客户端重试。
iOS 上的 TUN 与系统代理有什么区别
iPhone 没有桌面系统中常见的全局 HTTP 代理开关供客户端统一接管所有网络。Clash 类客户端通常借助 Packet Tunnel 建立类似 TUN 的虚拟网络接口,把 IP 数据包交给内置核心,再根据 DOMAIN、DOMAIN-SUFFIX、IP-CIDR、GEOIP、GEOSITE 或规则集决定直连、代理或拒绝。部分客户端把这个入口直接命名为 TUN,部分只显示 VPN 开关,底层目标相近但实现细节可能不同。
连接后顶部状态栏不一定持续显示 VPN 字样,尤其在刘海屏和灵动岛机型上。更可靠的确认方式是打开控制中心查看 VPN 状态,或进入「设置」→「通用」→「VPN 与设备管理」检查。客户端日志中还应出现网络接口启动、DNS 初始化和规则加载记录。
用具体步骤验证节点、DNS 与规则
首次连接不要只看开关颜色。建议分别验证隧道、节点和规则三层:先确认 VPN 已连接,再做延迟测试,然后检查一个直连域名和一个代理域名的规则命中。若客户端提供实时日志,把日志级别暂时设为 Info,完成测试后再恢复默认,避免长期保留大量记录。
一组可复现的首次测试
- 关闭蜂窝网络,只保留稳定 Wi-Fi,避免测试过程中切换出口。
- 在节点页对同一节点连续测试 3 次,记录 TCP 或 URL Test 延迟。
- 选择该节点并启动 VPN,打开 Safari 访问两个不同规则类别的网站。
- 回到客户端日志,查看目标域名命中的策略组和最终节点。
- 锁屏 30 秒后解锁,再次打开网页,确认隧道没有因后台切换中断。
例如在同一 Wi-Fi 下,某节点三次 URL Test 为 86 ms、91 ms、88 ms,波动约 5 ms,可以继续做网页测试;如果结果依次是 90 ms、680 ms、超时,说明链路稳定性比平均延迟更值得关注。延迟只反映测试地址的连接耗时,不等于实际下载速度,也不能证明所有协议都可用。
| 现象 | 优先检查 | 可执行动作 |
|---|---|---|
| VPN 已连接,但所有网页都打不开 | DNS 初始化、节点可用性、配置是否选中 | 切换节点,查看日志中的 DNS timeout 或 connection refused |
| 国内网站也走代理 | 运行模式和规则顺序 | 把模式改为 Rule,检查 MATCH 是否放在规则末尾 |
| 浏览器可用,个别应用不可用 | UDP、IPv6、应用自身连接机制 | 查看该应用域名与 IP 的日志,确认是否被 REJECT 或错误直连 |
| 锁屏后经常断开 | 按需连接、低电量模式、客户端后台状态 | 关闭低电量模式测试一次,并查看客户端是否支持按需连接 |
订阅导入失败的常见原因
HTTP 401、403 或订阅返回登录页
401 Unauthorized 通常表示 token 缺失、错误或已被重置;403 Forbidden 可能来自账户状态、请求限制或订阅服务器的访问策略。先回到订阅控制面板重新复制 Clash/Mihomo 链接,不要手动拼接 token。若 Safari 打开后跳到登录页,客户端拿到的往往也是 HTML,解析时可能显示“unexpected character <”或“invalid YAML”。
显示超时或无法连接服务器
更新订阅发生在隧道启动前时,客户端通常使用当前 Wi-Fi 或蜂窝网络直连订阅域名。先在 Safari 测试该域名是否能建立 HTTPS 连接,再切换 Wi-Fi 与蜂窝网络各试一次。一次更新超过 30 秒仍无响应,可以终止后重试;持续超时应检查 DNS、证书时间、订阅服务器状态,而不是连续点击更新。
YAML 解析失败
常见原因包括缩进使用 Tab、冒号后缺少空格、策略组引用了不存在的节点、规则集字段只被特定内核支持,或配置使用了当前客户端未实现的 Mihomo 扩展。查看错误提示中的行号和字段名。如果是订阅提供方生成的远程配置,应反馈完整错误文字与客户端版本,但不要附带原始订阅 URL。
导入后节点数量为 0
先确认复制的是 Clash 配置而不是订阅转换页面地址。有些面板的“复制订阅”按钮会根据当前选项生成不同格式;Base64 通用订阅在浏览器里看起来是一长串字符,Clash 客户端未必自动识别。还要检查流量套餐是否过期,以及远程响应中是否确实存在 proxies: 或 proxy-providers:。
更新成功但启动后立即断开
这类问题通常已经越过订阅下载阶段,应转查运行配置。先关闭其他 VPN,确认当前配置被选中,再查看启动日志中是否有端口占用、DNS 监听失败、规则集下载失败或内核不支持字段。桌面配置中的 external-controller、局域网监听和固定网卡名称不一定适合 iOS,直接复制整份桌面配置时需要按客户端文档调整。
连接稳定后的设置建议
首次连接验证完成后,可以把订阅更新周期设为 12 至 24 小时。更新太频繁会增加失败提示,也可能触发订阅服务器的请求限制;长时间不更新则可能错过节点地址和规则集变化。远程配置更新后,部分客户端需要重新加载配置或重启隧道,策略页的更新时间变化并不总是立即作用于正在运行的核心。
- 模式保持 Rule:日常使用按规则分流;Global 会让全部匹配流量进入同一代理策略,Direct 则绕过代理。
- 保留一个手动策略组:自动测速失效时,可以直接选择已知可用节点。
- 按需连接谨慎启用:先确认手动连接稳定,再根据 Wi-Fi、蜂窝网络或域名条件设置自动启动。
- 定期清理旧配置:删除已失效的重复订阅,避免启动时选错配置,但保留当前可用配置的导出副本。
- 日志按需开启:Info 级别适合日常排查;Debug 记录更细,完成诊断后应恢复默认级别。
完整的成功标准是:App Store 获取的客户端身份可核对,订阅能更新并产生节点与策略组,系统 VPN 配置已授权,连接后规则日志能显示预期命中,锁屏和网络切换后仍可恢复。若其中某一步失败,按“商店账号 → 订阅响应 → 配置解析 → VPN 授权 → 节点连接 → 规则匹配”的顺序定位,比同时修改 DNS、节点和运行模式更容易找到原因。