跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

沙箱出站代理示例

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

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 选择见沙箱提供方,连接失败先检查代理进程、监听端口和实际匹配规则。