一次成功请求显示了预期出口 IP,并不能证明代理路由始终正确。更关键的问题是:代理不可用之后,应用会怎么做?有些程序会换用其他传输方式,有些会继承过宽的绕过列表,还有些会复用此前建立的直连连接。哪怕只有一次 fail-open 请求,也可能暴露业务网络、破坏地域测量结果,或让合规采集任务混入不可控流量。

本指南的目标很明确:当策略要求必须使用代理时,每个请求只能通过授权代理成功,或者以清晰错误失败,绝不能静默直连。

什么是直连回退

直连回退是指代理路径发生错误后,应用没有使用指定代理,却仍然访问到了目标。它既可能来自显式的“代理失败后直接重试”配置,也可能来自环境变量、系统设置或连接池的意外影响。

以下场景必须分别测试:

  • 代理主机名无法解析;
  • 代理 TCP 端口拒绝连接;
  • 代理凭据错误;
  • HTTP CONNECT 被拒绝;
  • SOCKS 协商失败;
  • 隧道已建立但代理无法连接目标;
  • 代理响应超时;
  • IPv4 失败后切换 IPv6,或反向切换;
  • 目标命中 NO_PROXY 等绕过规则;
  • 复用启用代理之前建立的直连连接。

建立两个受控观察点

只测试你拥有或获准测试的基础设施。第一类证据来自代理端,包括连接时间、测试账号或池标识、目标、协议和结果。第二类证据来自目标端,包括观察到的源地址、时间、请求标识和 IP 版本。使用不含敏感信息的唯一请求标识,把两侧事件关联起来。

不要只依赖公共 IP 查询页面。它只能说明某一次成功响应的出口,无法证明失败请求没有短暂直连,也无法说明 DNS 是否在本地解析。

建议设置两个 canary:

  1. 代理必经 canary:只接受授权代理出口的请求。
  2. 直连检测 canary:记录来自业务工作负载网络的任何连接,但不返回有价值的数据。

第二个端点是报警器,不是备用访问路径。一旦在故障测试中收到流量,应立即停止并排查。

排除隐藏的绕过输入

测试前,列出所有可能影响路由的配置来源:应用配置、命令行参数、进程环境、容器变量、服务管理器覆盖项、系统代理、浏览器策略、PAC 行为和库默认值。重点检查 HTTP_PROXY、HTTPS_PROXY、ALL_PROXY、NO_PROXY 及大小写变体。过宽的通配符或域后缀可能让更多目标绕过代理。

每个测试场景都应使用新进程,或彻底清空连接池。否则旧连接会让新请求看似成功,却根本没有执行当前的代理选择逻辑。

执行 fail-closed 测试矩阵

所有场景使用同一类无害请求,并为每次请求设置唯一标识。记录客户端结果、代理事件、目标事件、可用的 DNS 事件和耗时。

健康基线

代理正常时,确认代理端存在请求记录,目标端观察到授权出口。支持双栈时分别验证 IPv4 与 IPv6。只有先证明观察链路有效,后面的故障测试才有意义。

认证失败

使用专门的无效测试凭据。预期结果是客户端返回代理认证错误、目标端没有流量、工作负载没有打开直连连接。不要把生产凭据写入日志。

网关不可达

将测试配置指向关闭的测试端口或隔离的测试主机名。预期结果只能是连接代理失败。如果随后却收到了目标成功响应,几乎可以确认发生了回退。

隧道与协商失败

HTTP 代理可测试受控的 CONNECT 拒绝;SOCKS 可测试受控的协商失败或目标不可达。应用必须暴露代理层错误,不得另起直连路径。

超时与重试

让测试网关延迟超过客户端超时,并观察每一次重试,而不是只看最终结果。重试可能切换地址族、代理池或协议。换用另一条授权代理可以接受,但不能从业务网络直接出站。

绕过列表

先清空所有绕过变量运行一次,再只加入一个窄范围测试主机名。确认只有该主机直连,生产目标仍使用代理;测试结束后立即移除覆盖项。

连接复用

在一次性测试进程中先建立直连,再启用代理并发起请求;随后反向测试。符合要求的客户端不应复用与当前路由策略冲突的旧连接。

四项同时满足才算通过

每个场景必须同时满足:

  • 客户端得到预期成功结果或明确的代理层错误;
  • 代理端出现预期事件,或在网关不可达时没有事件;
  • 成功时目标只看到授权代理出口,失败时目标完全没有流量;
  • 工作负载网络没有直连,也没有不应出现的本地 DNS 活动。

只看出口 IP 不够,只看最终报错也不够。应用可能尝试过直连,只是被其他网络规则拦住了。

生产环境防护

验证完成后,应把代理要求变成强制策略。启动时拒绝空代理配置;使用出站防火墙或统一 egress gateway 阻止直接访问互联网;保持绕过列表最小化;测试与生产凭据分离;对“目标端有请求但代理端无匹配事件”设置报警。

日志应记录重试原因与所选路由,但必须脱敏密码、Token、Cookie 和完整查询参数。对于轮换或住宅代理,需明确允许的回退方式:切换到另一授权代理可能合理,切换到业务源网络则不可接受。

采购与评估清单

  • 网关或认证失败时,客户端是否默认 fail closed?
  • 重试会不会在 HTTP CONNECT、SOCKS、IPv4 与 IPv6 之间切换?
  • 绕过列表在哪里定义,如何审计?
  • 能否用安全请求标识关联代理与目标事件?
  • DNS 解析和连接复用行为是否有明确说明?
  • 能否在客户端库之外独立阻止直接出站?

常见问题

检查出口 IP 还不够吗?

不够。它只证明一次成功响应的路径,不能证明失败尝试、重试、DNS 查询和连接复用都符合策略。

应用可以在代理失败后直连吗?

只有在明确政策允许该特定目标直连时才可以。对于代理必经任务,应关闭直连重试,并在网络层阻断。

最可靠的泄漏信号是什么?

目标端出现来自业务网络的流量,却找不到对应的授权代理事件,这是最清晰的组合信号;再结合连接和 DNS 遥测确认。

合规说明

仅测试你拥有或获得授权的系统、账号、目标和网络路径。使用无害 canary,尽量少保存请求数据,并遵守网站条款、隐私规则和地区要求。代理路由不等于获得访问或采集许可。

部署新路由前,可继续阅读站内代理选择指南并查看98IP 代理资源