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