← 返回藏书阁

MCP Gateway 1.32:正向代理恢复出站,却转移了连接时信任边界

wiki/ai/sources/mcp-gateway-132-forward-proxy-trust-boundaries.md
分类:ai / sources · 更新:2026-10-12 09:03

MCP Gateway 1.32:正向代理恢复出站,却转移了连接时信任边界

结论 / 用户价值

在企业仅有 forward proxy 的网络,健康检查、OAuth 登录和实际工具调用必须同验:自定义 HTTPX transport 使环境代理变量失效,发现阶段服务器可被标为 unhealthy、网关删掉路由,用户看到 405,却不代表上游真的不可用。1.32.0 通过 transport 内部路由和显式开关修复;同时公网目标从本机连接时固定 IP 改为代理按域名再解析。恢复可用性与保留 SSRF 边界不是同一个验收项。1.32.1 又修补 http:// 代理与自定义 CA 组合时构造 transport 即失败的缺口。这对 Hermes 使用 MCP gateway/代理网络及 MCP-Gateway-Runtime 的控制面验收有可迁移价值,但不是说用户已部署这个软件或现在有 405 故障。两版分别在 10-04、10-06 发布,本轮是补读固定版本,不是今日新发布。^[raw/articles/mcp-gateway-132-forward-proxy-release-pr-selected-2026-10-12.md]

一阶机制:路径、身份、连接点

  1. HTTPX 的 transport 优先级:旧 guarded 和 pooled-plain client 自带 transport,环境 HTTP(S)_PROXY 不被自动使用。若在 client 外层简单加 proxy=,按上游 PR 的 HTTPX 路由解释,代理 mount 会优先于 guarded transport,绕开 URL/IP/metadata 校验。因此必须在 guarded transport 内先校验再选 direct/proxy delegate;还要单独修复 OAuth 的 plain client。
  2. 代理分支的安全交换:EGRESS_FORWARD_PROXY_ENABLED=false 是默认值;开启后仅 DNS 全为公网地址的目标才走代理,含私网/受限答复拒绝或走仍固定 IP 的内网直连。公网走 CONNECT 时客户端预解析不等于代理最终解析,IP pin 在代理分支被明确放弃;代理需配置拒绝私网/loopback/link-local CONNECT,并留实际目的地审计。这是风险转移到代理出口,不能把 release 的配置建议当作已实施。对照 a2a-push-dial-ip-proxy-final-target-boundaries 的 push 回调最终目的地、contextforge-egress-path-parity-dns-rebinding 的注册/调用时刻,三者要求同一类“真实拨号者在连接时检查”。
  3. 旁路 SDK 与凭据:registry 负责健康/发现,auth-server 负责 runtime call 与 OAuth;两处要分别配置标志和代理变量。NO_PROXY 必含三种链路本地凭据端点(IMDS/ECS/EKS),因为同进程的 AWS SDK 可能自行继承 HTTP_PROXY,并非只约束 guarded HTTPX;AWS_EC2_METADATA_DISABLED 不覆盖容器凭据端点。带凭据的目标只准经 HTTPS 代理路径;proxy host、最终 upstream host 与调用方凭据受众分开核对。关联 mcp-gateway-discovery-purpose-and-live-vend-131 的 discovery 身份不得替代调用身份。
  4. 组合缺口不是“TLS 已解决”:1.32.0 的 CA bundle 与 http:// CONNECT 代理组合将 proxy_ssl_context 错传给 HTTP 代理,httpcore 构造时抛错;1.32.1 只对 https:// proxy 设置该字段,CONNECT 内上游 HTTPS 仍用 verify 信任新增 CA。维护者称此前分别测了代理 scheme 和 bundle,却没交叉测这一个最常见组合;PR 测试是上游声称,TLS 拦截式代理端到端在 1.32.0 PR 自述未测。1.32.1 的改动不能自动证明整个企业代理环境可用。

可执行验收合同(隔离网络,非用户现网)

阶段记录什么正反例
生效配置registry/auth-server 的 flag、实际 proxy/NO_PROXY/CA env、部署 task/chart 版本单侧开关、Compose env 未传进容器应暴露为半故障
发现/认证/调用health probe、OAuth token exchange、工具 tools/call 的各自路由和身份代理可达/直连不可达合法目标成功;401 标成认证错误而非下游不可用
出站安全本机 DNS 全地址、CONNECT 目标、代理最终拨号IP、凭据是否只进 HTTPS 隧道公网→私网重绑定、混合 DNS、metadata、重定向拒绝且上游零 effect;合法内网直连仍正常
TLS/可观测性http/https proxy × bundle 有/无 × sync/async/plain,真实 CONNECT 与证书;route/outcome 指标和实际回执必验 HTTP 代理+CA,不能只构造 httpx.Proxy 数据对象;指标有 proxied 并不证明最终目的地合规

与旧页关系、边界和深度判断

agentic-community-mcp-gateway-registry-ai-asset-control-plane 是总体架构与路由账;本页仅专注 1.32 跨服务代理出站及代理方信任转移,不重建项目介绍。相较 mcp-gateway-discovery-purpose-and-live-vend-131 的凭据用途隔离,这次的新增风险在 SDK 环境代理、部署生效和代理重新解析,不能只增一个配置键。六维评分和去重详见 llm-wiki-optimization-2026-10-12。

未跑该项目代码、代理或用户生产网关;fixed release、PR、FAQ 与作者测试支撑机制推断,不证明现网风险。代理实际出口 ACL、DNS rebind 负例、真实 CA 链、OAuth/token 用途与流式中断均需隔离 E2E;A2A Card/任务 owner/委托 effect 仍是独立高优先轴,不能因为这次只入 MCP 就降低权重。1.32.1 另有 mcp<2 依赖约束及 OTel distroless 假 unhealthy 修复,属相邻部署信号,不据此再造薄页。^[raw/articles/mcp-gateway-132-forward-proxy-release-pr-selected-2026-10-12.md]

写入记录

  • 2026-10-12 09:02 CST:据 1.32.0/1.32.1 固定发布、PR 与 FAQ 深读代理路径、DNS/CONNECT 信任转移、SDK 凭据边界及代理×CA 交叉回归,列出隔离正反例;未做本机 E2E。