computer-network.md 3.0 KB

隔离电脑的公网代理

Runner 可为隔离电脑启用 public-proxy 网络策略。现有配置未填写策略时仍为 none,不会自动扩大联网权限。

电脑继续使用 --network none,不发布网络端口。guest 内的 HTTP 代理只监听 127.0.0.1:3128,通过该电脑专属的进程管道,把连接请求交给 Runner。公网 TCP 连接由 Runner 建立,HTTPS 内容保持端到端 TLS,代理不添加宿主 Cookie、模型密钥或账号凭据。

地址与授权边界

  • 只允许公网 HTTP/HTTPS 的 80、443 端口。
  • 按 IANA IPv4 特殊用途注册表 和 IPv6 特殊用途注册表 保守拒绝私有、回环、链路本地、共享地址、文档和转换等特殊用途范围;IPv6 只接受普通全局单播范围。
  • 拒绝 Runner 本机网卡地址、含凭据的地址和不合法 authority;非常规 IPv4 写法先规范化再检查。
  • 每个新连接重新解析 DNS,任何一个解析结果不符合策略则拒绝。实际连接固定到已检查的 IP,后续 DNS 变化不能替换目标。
  • 建立连接前后、传输期间和周期检查都核验任务租约;创建连接时另外检查控制面授权。停止任务会关闭该电脑的代理和连接。
  • 每个代理最多 16 个外部连接、256 MiB 双向流量,有队列大小和空闲超时限制。拒绝一个目标不会为它打开任何宿主 socket。

这是一项保守的公网网页能力,不是通用 VPN、SSH、内网代理或无限流量通道。关闭/移除代理设置只会失去外网连接,不会获得直接访问宿主或内网的能力。

客户端配置

电脑创建时设置 HTTP/HTTPS 代理环境变量,供 curl、Python 等命令使用。Runner 在 guest 内配置 Chromium/Chrome 和 Firefox 的代理策略,浏览器仍可访问自己电脑的 loopback 服务。直接连接外部地址仍受无网络命名空间限制。

Web 的执行节点配置新增“联网范围”:

  • 公网网页(HTTP / HTTPS)
  • 不联网

该选择保存在节点的私有配置中;Agent 的执行环境仍需选择“隔离电脑”。

验收

  • tests/server/publicNetwork.test.ts 验证地址范围、非常规 IP 写法、DNS 混合结果和重绑定、本机地址、异步撤权、连接配额及真实 socket 字节传输。
  • tests/live/network.live.test.ts 在新建的真实 Docker 电脑中验证仅存在 loopback 网卡,经代理读取 HTTPS 页面、Firefox 打开页面并产生截图、拒绝宿主地址、关闭代理后外网不可达。截图保存在 test-results/network/browser.png。
  • 启用 YAOYAO_WORKER_PUBLIC_NETWORK=1 的 Worker 验收经过完整控制面与打包 Runner,再由真实 guest 访问公网。

联网仍依赖执行节点自身能连接目标公网服务。网络代理不改变电脑工具、文件和任务的归属;本轮测试只使用隔离数据与公开示例页面。