翻墙侠 - 自由上网的好帮手

Shadowrocket 规则不生效或开启后断网:Config 与 TUN 设置排查

更新于 2026-10-24 · fanqiangxia.top

简答:iPhone 和 iPad 上,Shadowrocket 通常没有单独的 TUN 开关,打开连接后就会启用系统 VPN 隧道;需要按规则分流时选择 Config,再检查活动配置、规则顺序、DNS 与隧道路由。

定义:Shadowrocket 规则配置是按域名、IP 或地理位置匹配请求,并将其交给 PROXY、DIRECT 或 REJECT;TUN 通常指由系统 VPN 数据包隧道接管符合路由的流量。

先看症状:3 秒找到第一步

Shadowrocket 常见症状速查
症状先做什么重点检查
规则写了但没有生效打开 Home,把 Global Routing 改为 Config活动配置文件、规则顺序、策略名称和命中日志
打开连接后全部断网关闭连接,确认系统原生网络正常VPN 权限、活动配置、节点连接和 DNS
局域网设备打不开先关闭连接,用局域网 IP 地址测试局域网网段、skip-proxy、tun-excluded-routes 和本地 DNS
浏览器正常但某个 App 异常分别测试网页、IPv4、IPv6 和实时通信UDP/QUIC、硬编码 DNS、IPv6 或应用自身代理兼容性

先记住一个结论:在 iPhone 和 iPad 上,Shadowrocket 通常没有一个必须单独打开、名称就是“TUN”的开关。点击连接后,应用会使用系统 VPN 网络扩展处理符合路由的网络流量;Apple 的数据包隧道文档说明,这类隧道可以接收系统转入的 IP 数据包,并通过包含路由和排除路由决定哪些流量进入隧道。可参考 Apple Packet Tunnel Provider 文档 和 Apple VPN 流量路由文档。

因此,TUN、Config、Proxy 和 Direct 不是同一层面的选项:TUN更接近系统流量接管方式,Config、Proxy、Direct则是 Shadowrocket 的流量处理模式。下面按这个顺序排查。

Config、Proxy、Direct 怎么选:先把规则分流与隧道分开

三种 Global Routing 模式的区别
模式作用适用场景不要误解为
Config按当前配置文件中的规则,将请求分配给不同策略日常使用、国内直连与其他流量分流不是关闭 VPN
Proxy把请求统一交给当前选定的代理策略或服务器对照测试节点或排查规则是否导致异常不是规则已经正确
Direct按直连策略处理请求在 Shadowrocket 连接仍开启时做直连模式对照不是关闭连接
  1. 打开 Shadowrocket 的 Home 页面,确认连接开关状态。
  2. 需要规则分流时,在 Global Routing 中选择 Config。
  3. 如果怀疑规则导致异常,临时选择 Proxy,使用同一个节点或策略测试同一目标。
  4. 如果要比较 Shadowrocket 内的直连处理,选择 Direct;如果要做完全不经过 Shadowrocket 的测试,必须关闭连接后再访问。
  5. 每次只改变一个变量,并记录网页、局域网设备和异常 App 的结果。

App Store 对 Shadowrocket 的介绍包含基于域名、域名后缀、域名关键词、CIDR IP 范围和 GeoIP 的规则能力,也列出本地 DNS 映射、IPv6 和 DNS over HTTPS、DNS over TLS、DNS over QUIC 等功能;具体入口和可用字段仍以当前应用界面为准。可查看 App Store 的 Shadowrocket 产品说明。

导入、备份和编辑配置文件:避免改错活动配置

  1. 打开 Shadowrocket 的 Config 页面,确认已经导入配置文件。
  2. 先复制或导出当前配置,保留一份未修改的备份。
  3. 确认当前选中的文件就是 Home 页面正在使用的活动配置。
  4. 进入配置编辑界面,优先检查 [General] 和 [Rule] 区域。
  5. 一次只修改规则顺序、DNS 或隧道路由中的一项,保存后重新连接测试。
  6. 如果修改后无法连接,先恢复备份,不要继续叠加新的规则和参数。

订阅链接、规则文件和配置模块都可能改变请求的处理方式。不要导入来源不明的配置、模块或证书,也不要在没有理解用途时开启 MITM、HTTPS 解密或证书相关选项。此类功能可能改变应用看到的请求内容,并带来隐私与兼容性影响;不需要调试特定 HTTPS 请求时,建议保持关闭。

配置来源也应单独核验:确认链接来源、更新时间和维护者说明,检查配置是否包含陌生域名、重写、脚本、证书或不明远程资源。无法核实来源的配置不要直接用于主要设备。

规则顺序怎么排:具体条件在前,FINAL 必须最后

本文按“自上而下匹配,命中即停止”理解规则。更具体的匹配条件放在更宽泛的条件前面,局域网和本机网段放在 GEOIP 之前,广告拦截规则放在可能覆盖它的直连规则之前,FINAL 放在最后。IP 类局域网规则可加 no-resolve,避免为了匹配 IP 规则而提前进行域名解析。

匹配类型与排列建议
建议顺序匹配类型常见用途注意事项
1IP-CIDR、IP-CIDR6局域网、本机或明确网段局域网规则通常加 no-resolve
2DOMAIN匹配一个完整域名比后缀和关键词更具体
3DOMAIN-SUFFIX匹配域名及其子域名较窄后缀放在较宽后缀前
4DOMAIN-KEYWORD按域名中的关键词匹配范围较宽,容易误伤正常域名
5GEOIP按解析后的 IP 地理位置分流不应覆盖前面的明确域名规则
6FINAL处理前面没有命中的请求必须放在最后
规则冲突的具体推演
请求先命中的规则结果
api.example.com 同时符合 DOMAIN 和 DOMAIN-SUFFIXDOMAIN,api.example.com,DIRECT命中更具体的 DOMAIN,后面的后缀规则不再覆盖
img.example.com 同时符合 DOMAIN-SUFFIX,example.com 和 GEOIP,CN,DIRECTDOMAIN-SUFFIX,example.com,PROXY先按明确后缀处理,不再继续到 GEOIP
某请求没有命中局域网、域名或 GEOIP 规则FINAL,PROXY由 FINAL 兜底,避免出现无匹配状态

规则类型和策略是两件事:DOMAIN-SUFFIX 是匹配方式,PROXY、DIRECT、REJECT 是匹配后采用的策略。不要把 REJECT 和 GEOIP 当成同一类规则,也不要把所有关键词规则放在明确域名规则前面。

最小规则示例:局域网直连、广告拦截、国内直连与兜底

下面只是语法示例,不能直接当作完整配置使用。配置中的 PROXY 必须替换为当前配置里确实存在的策略名称;如果该策略不存在,规则可能无法执行。示例域名仅用于演示,不代表任何服务可用。

[General]
skip-proxy = 192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,127.0.0.0/8
tun-excluded-routes = 192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,127.0.0.0/8

[Rule]
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
DOMAIN-SUFFIX,ads.example.com,REJECT
DOMAIN-SUFFIX,example.cn,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY

DOMAIN-SUFFIX,ads.example.com,REJECT 只是明确的占位示例,用来演示如何拦截某个广告域名后缀。不要把 DOMAIN-KEYWORD,ads,REJECT 直接复制到实际配置中,因为 uploads、downloads、leads 等正常域名也可能包含相同字符串,造成误拦截。

skip-proxy 可以理解为代理例外地址或域名列表;tun-excluded-routes 用于排除隧道路由中的网段。不同版本、不同配置编辑器对字段支持和入口可能不同,使用前应备份,并以当前应用显示的字段说明为准。若编辑器不识别某个字段,不要强行保留。

如果配置文件中没有名为 PROXY 的策略,应先查看策略列表,把最后一行替换成已有策略名称。FINAL 必须最后出现;局域网规则、明确域名规则和广告拦截规则都应位于 GEOIP 之前。

DNS、IPv6、UDP/QUIC 与异常 App:按协议逐项验证

DNS 怎么查

  1. 先关闭 Shadowrocket 连接,访问同一个域名,记录系统直连结果。
  2. 打开连接并使用 Config,再访问同一个域名,查看请求日志或规则命中情况。
  3. 如果配置编辑器提供 dns-server、DNS 覆写或本地 DNS 映射字段,先记录原值,再一次只改一项。
  4. 分别测试系统 DNS 和配置 DNS,不要在没有日志的情况下直接判断为 DNS 泄漏或节点故障。
  5. 如果只有局域网设备名称无法解析,但直接输入局域网 IP 可以访问,优先检查本地 DNS 映射或局域网 DNS。

App Store 页面列出了 Shadowrocket 的本地 DNS 映射和多种加密 DNS 能力,但这不代表每个配置文件都已经启用这些功能。配置 DNS 与系统 DNS 的实际作用取决于当前应用设置、规则和隧道路由。

IPv6 怎么查

  1. 先测试同一目标的 IPv4 访问,再测试 IPv6 访问。
  2. 如果配置编辑器提供 ipv6 或 IPv6 相关开关,先记录当前状态,再切换一次进行对照。
  3. 若关闭 IPv6 后恢复,继续检查节点、DNS 和规则是否支持 IPv6;不要只修改规则而忽略解析结果。
  4. 如果界面没有该字段,不要自行添加未经确认的配置键,以当前版本支持的设置为准。

UDP/QUIC 和游戏流量怎么查

  1. 用普通网页测试 TCP 类访问,再用视频通话、实时通信或游戏测试可能使用 UDP 的流量。
  2. 如果只有实时应用异常,查看当前节点或策略是否提供 UDP 转发选项;有开关时分别测试开启和关闭。
  3. 对浏览器类问题,可临时让应用使用 TCP 可用的访问方式进行对照,但不要把未知的 UDP 规则直接粘贴进配置。
  4. 游戏无法连接时,记录是登录、匹配、语音还是实时对战阶段失败,再分别检查 DNS、IPv6、UDP 和节点策略。

没有可复现的日志和对照结果时,不要直接断定是线路或服务端故障。Shadowrocket 的 App Store 说明列出 IPv6、DNS 与协议相关能力,但具体节点是否支持 UDP、某个 App 是否使用 QUIC,仍需以当前配置和应用表现核对。

哪些情况适合开启连接:兼容性与耗电要一起看

是否保持 Shadowrocket 连接的判断
场景建议原因或检查点
需要按域名分流、局域网直连和其他流量代理选择 Config 并开启连接规则需要在连接建立后参与流量处理
只想比较某个节点或代理策略短时间选择 Proxy减少规则变量,便于对照测试
需要确认系统原生网络是否正常关闭连接后测试避免把 Direct 模式误认为完全退出隧道
依赖局域网发现、投屏、打印或企业内网先测试局域网排除项Apple 文档说明 VPN 可设置包含和排除路由,系统路由表也可能影响最终结果
手机电量紧张或某个 App 兼容性异常暂时关闭连接做对照持续运行网络扩展可能增加系统网络处理变量,具体影响因设备、配置和流量而异

开启连接并不等于所有流量一定采用同一种策略;实际结果还受配置规则、包含路由、排除路由、系统路由表和应用自身网络实现影响。Apple 文档明确说明,系统路由表可能优先于某些包含或排除路由,因此局域网异常应结合设备 IP、路由和 DNS 一起判断,而不是只切换 Config、Proxy、Direct。

iPhone、iPad 与 Mac 的照做路径

iPhone 与 iPad

  1. 打开 Shadowrocket,进入 Home。
  2. 确认已经导入服务器或配置,并确认当前活动配置文件。
  3. 点击连接开关;首次使用时按系统提示允许添加 VPN 配置。
  4. 回到 Home,将 Global Routing 设为 Config。
  5. 进入 Config 检查 [General] 和 [Rule],先测试一个明确域名,再测试局域网 IP。
  6. 如果异常,关闭连接确认系统原生网络,再使用 Proxy 做对照。

Mac

  1. 在 App Store 打开 Shadowrocket 页面,先查看“兼容性”一栏。当前页面列出 Mac 需要 macOS 10.15 或更高版本;系统和硬件是否兼容,以 App Store 当前页面为准。
  2. 安装并打开应用,在主窗口中找到 Home 或 Global Routing。不同版本的菜单布局可能不同,不要照搬旧截图。
  3. 确认活动配置文件后选择 Config,再测试明确域名。
  4. 若 Config 异常,临时切换 Proxy 测试同一策略;Proxy 正常而 Config 异常时,优先检查规则顺序、策略名称和 FINAL。
  5. 如果找不到某个入口,使用当前版本主窗口、菜单栏或设置页中显示的同名项目,不要按其他版本的截图添加不存在的字段。

App Store 页面列出了 iPhone、iPad、Mac 等支持平台及当前兼容性信息,但应用界面和菜单位置可能随版本变化。页面主体功能包括规则匹配、配置导入、DNS、IPv6 和流量处理能力,具体以应用当前显示为准。

改完配置后的自查清单

  • 是否已备份原配置文件?
  • 是否确认当前活动配置就是刚刚修改的文件?
  • 是否确认 Global Routing 为 Config,而不是仍处于 Proxy 或 Direct?
  • 是否把 Direct 与关闭 VPN 区分开?
  • 局域网、127.0.0.0/8 和其他本机网段是否位于 GEOIP 与 FINAL 之前?
  • 明确 DOMAIN 是否位于宽泛 DOMAIN-SUFFIX 和 DOMAIN-KEYWORD 之前?
  • 广告拦截是否使用明确的 DOMAIN-SUFFIX 示例,而不是宽泛关键词?
  • IP-CIDR 局域网规则是否添加 no-resolve?
  • FINAL 是否放在规则最后?
  • 规则中的 PROXY 是否确实存在于当前策略列表?
  • 是否检查了 skip-proxy、tun-excluded-routes 和本地网段?
  • 是否分别测试 DNS、IPv4、IPv6、UDP/QUIC 和异常 App?
  • 是否避免导入来源不明的配置、模块或证书?

最小复测流程是:关闭连接测试一次,打开连接并选择 Config 测试一次,使用 Proxy 做一次对照;每轮只修改一个变量,并记录实际命中的规则。这样比单纯反复切换节点更容易定位问题。

常见问题

Shadowrocket 在 iPhone 和 iPad 上有独立的 TUN 开关吗?

通常没有一个名称就是“TUN”的独立开关。打开 Shadowrocket 的连接后,应用通过系统 VPN 网络扩展处理符合路由的流量;具体哪些流量进入隧道,还取决于配置规则、包含路由和排除路由。

Config、Proxy、Direct 应该选哪个?

需要按规则分流时选 Config;需要把同一目标统一交给选定代理做对照时选 Proxy;需要测试 Shadowrocket 内部直连策略时选 Direct。Direct 不是关闭 VPN,完全不经过 Shadowrocket 的测试必须关闭连接。

为什么规则写了却不生效?

先确认活动配置文件,再确认 Global Routing 为 Config,然后检查规则是否从上到下排列、策略名称是否存在、FINAL 是否最后,并通过请求日志或规则测试确认实际命中项。

skip-proxy 和 tun-excluded-routes 是一回事吗?

不能直接当成同一个字段。前者可理解为代理例外,后者用于隧道路由排除;具体支持方式可能随应用版本和配置编辑器变化,修改前应备份并以当前版本显示为准。

为什么开启连接后局域网设备打不开?

先关闭连接确认局域网本身正常,再用局域网 IP 地址测试。如果 IP 可以访问而设备名称不能解析,优先检查本地 DNS;如果 IP 也无法访问,检查局域网网段是否被隧道接管,以及 skip-proxy 和 tun-excluded-routes 是否覆盖该网段。

为什么浏览器正常,但游戏或某个 App 不能用?

分别检查 IPv4、IPv6、DNS 和 UDP/QUIC。查看当前节点或策略是否提供 UDP 转发选项,并分别测试开启和关闭;不要仅凭浏览器正常就判断所有应用都能通过同一连接。

Mac 能不能安装 Shadowrocket?

App Store 当前页面列出 Mac 支持,并显示 macOS 10.15 或更高版本要求;具体硬件和系统兼容性应以当前 App Store 的“兼容性”一栏为准。

相关阅读

参考资料

  1. App Store:Shadowrocket 产品说明与兼容性
  2. Apple Developer:Packet Tunnel Provider
  3. Apple Developer:Routing your VPN network traffic