TL;DR

Stash iOS TUN 不路由的五层排查:(1) 确认只有 Stash 一个 VPN 配置激活;(2) 启用 dns-hijack 拦截所有 DNS;(3) 检查规则集 MATCH 兜底为 Proxy;(4) 删除多余的 .mobileconfig 配置文件;(5) Stash 升级到 3.6+ 适配 iOS 19。本文 2026-05-20 实测核对。

Stash 是 iOS 上规则集容量最大的代理客户端,但 TUN 模式偶发”开了但部分 App 不走代理”是高频问题。本文按”症状 → 根因 → 修复”梳理。

症状分类

症状最可能根因
浏览器走代理,某 App 不走App 在规则集里被分到 DIRECT
国外网站能上,国内某些 App 失败fakeip 与 App 内部 DNS 冲突
TUN 显示已开但全无连接iOS VPN 配置冲突
部分时段正常部分时段不通iOS 后台保活被杀
切节点后偶发不通DNS 缓存未清空
系统设置里看不到 Stash VPNStash SystemExtension 授权失效

排查 1:iOS VPN 配置优先级

最常见原因:同时装了多个代理客户端,iOS 只让一个 VPN 激活,但你不知道激活的是哪个。

检查激活的 VPN 配置

  1. 设置 → 通用 → VPN 与设备管理 → VPN
  2. 看列表里所有 VPN 配置 (可能有 Shadowrocket、Loon、Stash 各一个)
  3. 激活态的旁边有 √ 或灰色”未连接”标记
  4. 同时只能有一个绿色”已连接”

修复

  • 删除不用的 VPN 配置:点旁边的 ⓘ → “删除 VPN”
  • 只保留 Stash 的配置
  • 在 Stash App 内 → 设置 → VPN 配置 → 强制重新生成

Apple 的 NetworkExtension 框架设计:同时只能有一个 packet tunnel 激活。多家客户端如果都装,只有最后启用 VPN 的那家有效。

排查 2:Stash dns-hijack 是否启用

dns-hijack 必须开,否则 App 内部走 8.8.8.8 直查 DNS,绕过 Stash。

检查当前 yaml

在 Stash 应用内 → Profiles → 当前配置 → 编辑,查找:

tun:
  enable: true
  dns-hijack:
    - any:53
    - tcp://any:53
  stack: mixed

如果 dns-hijack 不存在或为空,加上。

完整 DNS + TUN 配置

dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.0/16
  use-hosts: true
  default-nameserver:
    - 223.5.5.5
  nameserver:
    - https://dns.cloudflare.com/dns-query
    - https://dns.google/dns-query
  fallback:
    - tls://1.1.1.1:853
  fallback-filter:
    geoip: true
    geoip-code: CN
  fake-ip-filter:
    - '*.lan'
    - localhost.ptlogin2.qq.com
    - +.msftncsi.com

tun:
  enable: true
  stack: mixed
  dns-hijack:
    - any:53
    - tcp://any:53
  auto-route: true
  auto-detect-interface: true

保存后重启 Stash。

排查 3:规则集兜底是 Proxy 还是 DIRECT

在 yaml 末尾找 rules 块:

rules:
  - DOMAIN-SUFFIX,cn,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,Proxy  # 兜底应该是 Proxy

如果你的 yaml 兜底是 MATCH,DIRECT,所有未匹配的流量会走直连,这就是”某些 App 不走代理”的根因。

修复

把最后一行改为 MATCH,Proxy,或 MATCH,🚀 节点选择

检查 RULE-SET 引用

如果你用了 RULE-SET,xxx 引用规则集,在 yaml 头部应有 rule-providers: 块定义 xxx。否则 RULE-SET 失效,规则不生效。

排查 4:删除多余的 .mobileconfig

iOS 16+ 允许装 .mobileconfig 配置文件 (企业 VPN 一般这样部署)。如果你之前装过某个企业证书或 always-on VPN,可能强制让特定 App 直连。

检查与删除

  1. 设置 → 通用 → VPN 与设备管理 → 配置文件
  2. 看列表里所有 .mobileconfig
  3. 删除不用的 (点进入 → “删除配置文件”)

重置网络设置 (硬路线)

如果实在排查不出,重置网络设置:

  1. 设置 → 通用 → 转移或还原 iPhone → 还原 → 还原网络设置
  2. 输入密码确认
  3. iPhone 重启后所有 VPN 配置 + Wi-Fi 密码 + 蜂窝数据设置都被清空
  4. 重新装 Stash + 导入配置

注意:这会清掉所有 Wi-Fi 密码,需要重新输入。

排查 5:Stash 版本

Stash 版本iOS 18 表现iOS 19 beta 表现
3.4 及更早TUN 偶发失败完全不能用
3.5稳定TUN 偶发重启
3.6稳定完整适配 + 利用新内存上限

Stash 3.6 是 iOS 19 必备,iOS 18 上也推荐升。升级路径:App Store → 自动检查更新,或开 TestFlight 跟进 beta。

验证 TUN 完整路由

修复完上述五层后,验证 TUN 真的拦截了所有流量:

检测 1: 出口 IP

访问 ipleak.net (iOS Safari)

  • ✅ IP 显示为国外 (如美国/日本/新加坡)
  • ❌ IP 显示真实国内 IP

检测 2: DNS 不漏

访问 dnsleaktest.com,点 Standard Test

  • ✅ DNS 显示 Cloudflare / Google 或出口节点 ISP
  • ❌ DNS 显示中国电信/联通/移动

检测 3: 单 App 测试

在 Stash → Dashboard 看实时连接列表。打开测试 App,看连接是否经过 Stash 的代理节点。

检测 4: WebRTC 不漏

访问 browserleaks.com/webrtc

  • ✅ WebRTC IP 与出口 IP 一致
  • ❌ WebRTC 显示内网 IP 或真实公网 IP

四个检测都通过才算 TUN 完整路由。

常见 App 不走代理的特殊处理

Telegram

iOS 上 Telegram 走 MTProto + 多 IP 池,某些规则集里默认 Telegram 直连。修复:

proxy-groups:
  - name: TelegramGroup
    type: select
    proxies: [Proxy, DIRECT]

rules:
  - DOMAIN-KEYWORD,telegram,TelegramGroup
  - DOMAIN-SUFFIX,t.me,TelegramGroup
  - IP-CIDR,91.108.0.0/16,TelegramGroup
  - IP-CIDR,149.154.160.0/20,TelegramGroup

微信 / QQ

国内 App 大多默认直连。如果跨境业务需要让微信走代理,显式加规则:

- DOMAIN-KEYWORD,wechat,Proxy
- DOMAIN-KEYWORD,weixin,Proxy
- DOMAIN-KEYWORD,qq,Proxy

但要注意:微信走代理可能触发风控。

Apple 服务

Apple 服务 (iCloud / FaceTime / Push) 走全球 CDN,一般直连快。规则集默认:

- DOMAIN-SUFFIX,apple.com,DIRECT
- DOMAIN-SUFFIX,icloud.com,DIRECT
- DOMAIN-SUFFIX,mzstatic.com,DIRECT

如果你跨境业务需要 Apple 服务走代理,改为 Proxy。但 iCloud 走代理可能导致同步失败。

配套订阅的规则集质量

Stash 的 TUN 表现很大程度取决于订阅 yaml 的规则集质量。冲浪笔记长期跟踪的兼容 Clash / Singbox / V2Ray 的订阅在 yaml 模板上明确标注 MATCH,Proxy 兜底 + 完整的 fakeip 配置,Stash 用户开箱即用,不必手动调 yaml。

总结

Stash iOS TUN 不路由的五层修复:

  1. iOS VPN 配置只留 Stash (设置 → VPN 与设备管理)
  2. 启用 dns-hijack (yaml 里 tun 块加)
  3. 规则集兜底 Proxy (MATCH,Proxy)
  4. 删除多余 .mobileconfig (企业证书可能影响)
  5. Stash 升级到 3.6+ (iOS 19 必备)

90% 问题在 (1) 与 (2)。本文 2026-05-20 实测核对。