Skip to content

Outbound Proxy

Aethersailor edited this page Aug 15, 2026 · 2 revisions

🌐 出站代理

SubConverter-Extended 把不同类型的后端下载分开配置,避免一个模糊的代理字符串控制所有流量。

[common]
proxy_config = "SYSTEM"
proxy_ruleset = "SYSTEM"
proxy_subscription = "NONE"
proxy_bypass = "PRIVATE"

三类出站请求

配置项 作用范围
proxy_config 外部配置、远程基础模板、模板 fetch、定时脚本、QuickJS 默认抓取、GeoIP 辅助和 Gist/API 请求
proxy_ruleset 需要后端下载和转换的规则集
proxy_subscription 由后端展开的订阅,例如 list=true 或服务端解析目标

Mihomo、Surge、Quantumult X、Loon、Surfboard 或 Stash 客户端后续更新原生远程资源时,不经过后端进程,因此不受这些设置控制。

可用策略

策略 行为
空值或 NONE Direct 明确禁用当前请求的 libcurl 环境代理;NONE 不区分大小写
SYSTEM System 使用平台系统代理;类 Unix 系统读取常见代理环境变量,Windows 读取启用的 Internet Settings
http://...https://...socks4://...socks4a://...socks5://...socks5h://... Explicit 使用明确代理 URI,并应用 proxy_bypass
cors:https://... Cors 兼容 HTTP CORS 中继;它不是 libcurl 代理

非空但格式错误的值会使配置加载失败,不会静默变成直连。

proxy_bypass

proxy_bypass 只作用于明确代理 URI,不改变 SYSTEMNONEcors:

规则 直连范围
LOOPBACK localhost.localhost127.0.0.0/8::1/128
PRIVATE LOOPBACK 加 RFC 1918 和 IPv6 ULA
LAN PRIVATE 加链路本地、.local.home.arpa
CGNAT 增加 100.64.0.0/10
CIDR:address/prefix 增加指定 IPv4/IPv6 网段;拒绝 /0
DOMAIN:name 增加域名及其标签边界子域名;不支持通配符

示例:

[common]
proxy_config = "socks5h://127.0.0.1:1080"
proxy_ruleset = "socks5h://127.0.0.1:1080"
proxy_subscription = "NONE"
proxy_bypass = "LAN,CGNAT,CIDR:10.200.0.0/16,DOMAIN:corp.example"

最多配置 64 条自定义 CIDR:DOMAIN:。未知、空、通配、格式错误或过宽的 /0 规则会让配置加载失败。

socks5socks5h

  • socks5://:后端本地解析目标域名;
  • socks5h://:由 SOCKS 代理解析目标域名。

远程解析不能替代应用和网络层的 SSRF 防护。应用无法观察代理端最终解析地址时,不能仅依赖 socks5h 建立完整目标允许列表。

安全档位的影响

publicstrict 会在传输前拒绝公开请求中的回环、私网和其他受限目标,并忽略公开请求利用 proxy_bypass 直连这些目标的尝试。

可信配置抓取可以按部署者配置使用 bypass。lan 接受的请求也可能使用 bypass,因此增加 LAN、自定义 CIDR 或内部域名属于明确的信任授权。

TLS

远程 TLS 证书和主机名校验默认开启:

[advanced]
allow_insecure_tls = false

不要把 allow_insecure_tls=true 当作网络失败的通用解决办法。只在受控兼容调查期间临时使用,并在问题处理后恢复校验。

官方 Windows 便携包使用 Windows 原生证书存储。企业或私有 CA 应安装到正确的 Windows 信任存储,而不是关闭校验。

自动重试

幂等 GET/HEAD 在可恢复的 DNS、连接、超时、发送、接收或部分传输错误后可以进行一次短间隔重试。不会重试:

  • 认证失败;
  • TLS 校验失败;
  • 安全策略拒绝;
  • URL 格式错误;
  • HTTP 错误状态;
  • POST/PATCH。

重试不会把明确代理失败自动降级成直连。

诊断

Verbose 日志和 explain=true 会显示 Direct、System、Explicit 或 Cors,以及脱敏后的协议、主机、端口和错误类别。代理凭据、认证头和常见令牌参数会被隐藏。

排查步骤:

  1. 确认是哪一类请求失败。
  2. 检查对应 proxy_* 值。
  3. 检查 proxy_bypass 是否符合预期。
  4. 使用 explain=true 查看最终策略。
  5. 检查 TLS、DNS、代理日志和防火墙。

Clone this wiki locally