Skip to content
FunCoding

Search

Search docs, Skills and MCP

沙箱出站代理示例

连接自定义代理并核对 CONNECT、端口和域名筛选,按实际代码理解允许范围。

This page has not been translated into English yet. The original Chinese version is shown below.

Gemini CLI 支持通过 GEMINI_SANDBOX_PROXY_COMMAND 启动与沙箱共同运行的代理。官方要求代理监听 :::8877,生命周期由沙箱启动与停止流程管理;macOS Seatbelt 使用相应的 *-proxied profile。

配置入口

官方示例将脚本作为命令:

export GEMINI_SANDBOX_PROXY_COMMAND="scripts/example-proxy.js"

路径应指向实际可执行的代理脚本,并与所用沙箱提供方及网络 profile 配合。仅设置命令变量不等于已经验证所有流量都按目标网络规则运行;应在沙箱内测试允许和拒绝的连接。

按示例代码核对范围

官方页面开头说只允许 example.com:443,但代码实际定义:

const ALLOWED_DOMAINS = ['example.com', 'googleapis.com'];
const ALLOWED_PORT = '443';

匹配逻辑接受域名本身或以 .域名 结尾的子域。因此实际示例允许 example.com、googleapis.com 及其各自子域的 443 CONNECT 连接,而非只允许一个精确主机。

修改允许名单时,同时决定是否接受子域;不要只改注释或页面说明却保留较宽的 endsWith 匹配。

请求处理

请求或结果示例行为
普通 HTTP、非 CONNECT 请求返回 405
CONNECT 的主机或端口不匹配返回 403
允许目标成功连接返回 200 Connection Established,双向转发 TCP 数据
目标连接出错返回 502

该示例依据 CONNECT 目标的主机和端口筛选,建立的是隧道;它没有检查 HTTPS 内的 URL 路径或请求正文。不要把这一段示例描述为内容级 DLP 或完整企业网络网关。

验证与维护

在沙箱内用官方建议的 curl https://example.com 验证允许路径,再选择明确不在允许范围内的目标检查拒绝,查看代理日志中的目标与决定。部署时还需确认实际模型及服务使用的端点范围;官方示例不是所有认证方式的完整域名清单。

平台与 profile 选择见沙箱提供方,连接失败先检查代理进程、监听端口和实际匹配规则。