首页资讯教程all-proxy、all、always-allow分别是什么意思?

all-proxy、all、always-allow分别是什么意思?

约 9 分钟阅读

在管理Shadowrocket配置中的all-proxy、all和always-allow参数时,用户应明确all-proxy是强制所有流量走代理的全局开关且优先级高于所有分流规则,all在大多数场景下是all-proxy的同义词或已弃用,而always-allow则是系统服务的底层直连白名单且优先级高于all-proxy以确保系统基础功能的可用性。在日常使用中,推荐保持all-proxy和all为未配置状态以依赖灵活的规则分流体系,仅在需要强制全局代理的特殊网络环境中才将all-proxy设置为true,并同步确认always-allow默认白名单能够覆盖苹果系统服务的本地直连需求。当配置后出现系统时间无法同步或App Store无法加载等故障时,优先检查是否因all-proxy开启而系统域名未在always-allow白名单中,必要时在配置文件中添加前置的DOMAIN-SUFFIX直连规则作为补充豁免手段。

all-proxy参数的核心定义与作用范围

控制所有流量的统一代理策略

all-proxy是Shadowrocket配置文件[General]段落中的一项全局布尔参数,当设置为true时,它会强制将所有网络流量(包括TCP和UDP)全部通过代理节点转发,无论配置文件中的规则列表如何定义,所有直连规则和GEOIP规则都会被完全覆盖。这个参数的优先级高于任何分流规则,相当于在规则引擎的最上层增加了一层“强制代理”开关。当all-proxy开启时,配置文件中所有的DOMAIN-SUFFIX,DIRECTIP-CIDR,DIRECT直连规则全部失效,设备所有应用的所有网络请求全部无差别地走代理通道。

与代理模式的核心区别与互补关系

all-proxy与Shadowrocket主界面的路由模式切换(配置/代理/直连/拒绝)在功能上存在重叠但本质不同。路由模式切换是用户界面层的手动控制,而all-proxy是配置文件层的强制策略。当all-proxy = true时,即使主界面的路由模式显示为“配置”或“直连”,所有流量依然会被强制走代理,因为配置文件参数的优先级高于界面选择。用户如果希望在不修改配置文件的情况下临时切换全局代理,应使用界面上的路由模式切换而非修改all-proxy参数,因为修改参数需要重新加载配置而界面切换即时生效。

该参数对规则引擎的覆盖逻辑

all-proxy启用时,Shadowrocket的规则匹配流程会发生根本性变化:引擎会在执行任何DOMAIN-SUFFIXGEOIPIP-CIDR规则之前,先行检查all-proxy的状态。若检测到该参数为true,引擎会跳过整个规则列表的遍历,直接将请求转发至当前选中的代理节点,其效率远高于逐条匹配规则。但这也意味着用户精心编写的广告拦截规则、国内直连规则和安全拒绝规则全部失效,所有流量均暴露在代理通道中,包括原本应该被直接丢弃的广告追踪请求。

all参数的多重含义与上下文区分

[General]段落中的all参数作为全局开关

在配置文件的[General]段落中,all参数通常被用作一个简化的全局代理开关,其功能与all-proxy类似但行为可能因Shadowrocket版本而略有差异。在某些旧版本中,all = true等同于all-proxy = true,强制所有流量走代理。但在新版中,all参数可能已被弃用或重定向至all-proxy,用户应优先使用明确的all-proxy参数以避免歧义。如果配置文件中同时出现allall-proxy,引擎通常会以all-proxy的值为准,因为后者是更明确和优先的参数名。

Proxy段落中的all作为策略组速记符

在配置文件的策略组定义中,all有时被用作策略组节点选择列表中的速记符,表示该策略组包含当前所有可用的节点,而不是特指某个具体节点。这种用法使得策略组能够自动适配订阅更新后新增的节点,无需手动在策略组编辑页面重新勾选。例如策略组定义中若出现Proxy = select, all,意味着该选择器策略组的候选列表包含了所有已导入的代理节点,用户可通过下拉菜单从完整列表中手动选择任一节点。

规则动作中的all与通配符语境

在某些规则书写语境中,all可能被用作规则动作的通配符,表示匹配所有流量或所有协议类型,但这种用法在Shadowrocket的标准配置语法中并不常见。用户若在第三方配置文件中见到类似“all,PROXY”的写法,通常意味着该配置可能源自其他代理工具(如Clash或Surge),其语法与Shadowrocket的规则格式不完全兼容。正确的Shadowrocket语法应明确指定规则类型(如DOMAIN-SUFFIX或GEOIP)而非使用all作为规则匹配条件。

always-allow参数的功能定位与设计目的

系统关键服务与本地链路通行的白名单机制

always-allow是Shadowrocket中一项特殊的网络访问豁免参数,它定义了即使在all-proxy开启或全局代理模式下,也始终允许直连的特定目标IP段或域名列表。该参数的核心设计目的是确保设备与苹果系统服务、网络时间同步服务器和本地路由器之间的通信不受代理策略的影响,避免因强制代理导致系统功能异常。默认情况下,always-allow已包含了Apple的系统服务域名、NTP时间同步服务器以及本地链路地址段,用户通常无需手动修改该列表。

解决全局代理下系统功能异常的终极手段

all-proxy开启导致App Store无法加载、系统时间无法同步或iCloud无法正常备份时,这些故障的根本原因是苹果系统服务被强制通过代理节点访问,但代理节点可能无法正确处理这些请求或延迟过高。always-allow通过将这些系统服务的域名加入白名单,确保它们始终直连本地网络,从而在全局代理的框架下维持系统基础服务的正常运行。该参数是规避全局代理导致系统功能瘫痪的标准配置方法,尤其适用于需要长期保持全局代理模式的特殊使用场景。

与分流规则中DIRECT策略的优先级差异

always-allow的优先级高于配置文件中的任何DOMAIN-SUFFIX,DIRECTIP-CIDR,DIRECT规则,因为该参数作用于规则引擎的更底层。即使配置文件中没有为某个系统域名编写直连规则,只要该域名在always-allow的白名单中,请求就会绕过所有规则匹配直接走本地直连。这种底层白名单机制确保了系统关键服务不会因用户配置错误而被错误地强制代理,是保障设备基本联网功能的最后一道安全防线。

三个参数在实际场景中的协同与冲突

all-proxy与always-allow的优先级博弈

all-proxyalways-allow同时存在于配置文件中时,两者的优先级遵循“特殊豁免优于全局覆盖”的原则:always-allow白名单中的流量优先直连,不受all-proxy强制代理的影响。这种设计使得用户可以在开启全局强制代理的同时,精确地豁免某些关键系统服务,实现最大程度的代理覆盖和最小程度的系统干扰。例如,当all-proxy=truealways-allow包含了apple.com域名时,App Store的流量会直连本地网络而其他所有流量则经过代理节点。

三者并存时的规则解析顺序

当一个配置文件中同时存在all-proxyallalways-allow时,引擎的处理顺序为:首先检查请求目标是否在always-allow白名单中,若命中则直接直连并结束处理。若未命中,则检查all-proxyall参数是否为true,若为真则直接走代理并跳过所有规则列表。只有在all-proxyall均为false或不存在时,请求才进入正常的分流规则匹配流程。这种优先级链条确保了系统服务的可用性始终优先于代理策略的强制执行。

多参数混用下的典型配置陷阱

用户在配置文件中同时启用all-proxy=trueall=true并在always-allow列表中遗漏了关键系统域名时,可能导致设备系统时间无法同步、App Store无法下载应用或推送通知延迟等问题。此类故障的典型特征为代理节点本身工作正常且境外网站可访问,但系统级服务全面异常。排查方法为检查always-allow列表是否包含了time.apple.com*.apple.com等苹果系统服务域名,并确保本地链路地址段(192.168.0.0/16等)已在列表中。

参数配置方案推荐与场景适配

日常使用场景下的安全配置组合

对于绝大多数普通用户,推荐保持all-proxyall为默认未配置状态(即注释掉或删除这两行),让分流规则完全由配置文件中的规则列表控制。同时保持always-allow保持默认白名单内容不变,确保系统服务的本地直连不受干扰。这种配置组合既保证了灵活的分流能力,又最大程度地减少了因参数误配置导致的系统功能异常风险。

特定网络环境下的全局代理硬性需求

当用户处于需要强制所有流量走代理的特殊网络环境中(如某些企业网络或特定区域网络),可在[General]段落明确设置all-proxy = true,并同步扩展always-allow列表以包含该网络环境下需要直连的内网服务域名。此组合方案实现了“外部流量全代理、内部流量全直连”的清晰分工,大幅简化了规则配置的复杂度,同时保障了内网资源的正常访问。

参数误配置的紧急回退与故障排除

若因修改all-proxyall参数导致网络完全中断或系统功能大面积异常,用户可通过在Shadowrocket的配置文件中删除或注释掉这两个参数行(在行首添加#),保存并重新加载配置即可恢复默认的规则驱动分流模式。若无法进入配置文件编辑界面,可直接将Shadowrocket的路由模式切换至“直连”临时恢复网络访问,再进行配置参数的修正。

常见问题FAQ

all-proxy和路由模式中的“代理”模式有什么区别?

all-proxy是配置文件参数,优先级高于界面路由模式,开启后即使界面显示“配置”模式也会强制所有流量走代理。界面“代理”模式是手动切换的全局代理,不修改配置文件。两者同时启用时以配置文件参数为准。

always-allow白名单中的域名在哪里查看和修改?

always-allow的默认白名单硬编码在Shadowrocket的引擎中,用户无法直接在配置文件中查看或修改。若需要添加额外的豁免域名,可在配置文件的规则列表中添加对应的DOMAIN-SUFFIX,DIRECT规则并将其放置在所有规则之前,其效果与always-allow类似。

配置文件中同时出现all和all-proxy应该以哪个为准?

应以all-proxy为准,因为该参数是Shadowrocket的明确标准参数,而all可能因版本不同存在歧义或被视为已弃用。建议删除all并仅保留all-proxy,避免解析引擎在两者同时存在时产生不确定行为。

开启all-proxy后国内网站无法访问,如何解决?

all-proxy强制所有流量走代理,包括国内网站,若代理节点的国际出口对中国IP访问限速或阻断,则国内网站无法正常访问。解决方案是在always-allow白名单中无法自定义添加国内域名的情况下,将路由模式切换回“配置”并依赖于规则列表中的GEOIP,CN,DIRECT规则分流国内流量。

安全提示

请通过可信渠道获取应用和配置,并遵守所在地法律法规与相关服务条款。