VPC 网络配置

更新时间:
复制 MD 格式

VPC 网络配置让 Agent Sandbox 极速版中的 Sandbox 能够访问专有网络中的资源,并支持按业务需要选择公网访问方式。它是在 E2B 之外提供的扩展能力。

前提条件

开始配置前,完成以下准备:

  • 准备与 Sandbox 位于同一地域且网络可达的 VPC、vSwitch 和安全组,vSwitch 应位于函数计算支持的可用区。

  • 确保安全组出方向规则、目标资源白名单及业务访问权限满足访问要求。

网络配置(高级)

本节以二代模板为例,介绍配置 vpc_config 后的网络访问方式,重点说明 vpc_config 与 internet_access 的配合关系。未配置 VPC 时,沙箱默认可通过平台出口访问公网,出口 IP 不固定。

场景选择

场景

vpc_config

internet_access

VPC 公网出口要求

公网访问结果

访问 VPC,同时通过平台出口访问公网

配置

开启(默认)

无需为此配置固定公网出口

可访问公网,出口 IP 不固定

访问 VPC,不访问公网

配置

关闭

VPC 不提供公网出口

无法访问公网

访问 VPC,同时通过固定 IP 访问公网

配置

关闭

VPC 配置公网 NAT 网关、EIP 及相应路由与 SNAT 规则

可通过配置的固定出口 IP 访问公网

注意:VPC 网段需使用 RFC 1918 私有地址段(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16);vSwitch 需位于函数计算支持的可用区。

场景一:访问 VPC 和公网,出口 IP 不固定

配置 vpc_config,并保持 internet_access 开启(缺省即开启):

runtime_config=models.CreateTemplateRuntimeConfig(
    cpu=2,
    memory_size=2048,
    disk_size=15360,
    internet_access=True,
    vpc_config=models.CreateTemplateVPCConfig(
        vpc_id="<vpc-id>",
        v_switch_ids=["<vsw-id>"],
        security_group_id="<sg-id>",
    ),
    log_config=models.CreateTemplateLogConfig(
        project="<sls-project>",
        logstore="<sls-logstore>",
    ),
    sandbox_config=models.CreateTemplateSandboxConfig(
        image=f"fc-e2b-registry.{REGION}.cr.aliyuncs.com/runtime-v2/base:v0.0.53",
        generation=2,
    ),
)

验证方式:创建沙箱后分别访问 VPC 内资源(如内网域名或私网 IP)和公网地址(如 curl https://www.aliyun.com),两者均可访问。该方式不提供固定公网出口 IP。

场景二:仅访问 VPC,不访问公网

配置 vpc_config,并关闭 internet_access;同时确认 VPC 本身未配置公网出口:

runtime_config=models.CreateTemplateRuntimeConfig(
    cpu=2,
    memory_size=2048,
    disk_size=15360,
    internet_access=False,
    vpc_config=models.CreateTemplateVPCConfig(
        vpc_id="<vpc-id>",
        v_switch_ids=["<vsw-id>"],
        security_group_id="<sg-id>",
    ),
    log_config=models.CreateTemplateLogConfig(
        project="<sls-project>",
        logstore="<sls-logstore>",
    ),
    sandbox_config=models.CreateTemplateSandboxConfig(
        image=f"fc-e2b-registry.{REGION}.cr.aliyuncs.com/runtime-v2/base:v0.0.53",
        generation=2,
    ),
)

验证方式:沙箱内访问 VPC 内资源正常;访问公网地址超时或被拒绝。

场景三:访问 VPC 和公网,使用固定出口 IP

配置 vpc_config,并关闭 internet_access。在 VPC 侧配置公网 NAT 网关和 EIP,以及相应的路由与 SNAT 规则,使公网流量通过指定出口访问。

  1. VPC 侧准备:为 VPC 配置公网 NAT 网关并绑定 EIP,为相关 vSwitch 配置指向 NAT 网关的路由与 SNAT 规则,确认沙箱所在 vSwitch 的流量能够通过该出口访问公网。

  2. 模板侧配置:参数与场景二相同(internet_access=False + vpc_config)。

验证方式:在沙箱内查询出口 IP(如 curl ifconfig.me),返回的应为配置的 EIP。

场景二和场景三的模板构建参数相同,区别在于 VPC 是否具备公网出口。因此,关闭 internet_access 后,仍需结合 VPC 的网络配置判断沙箱是否能够访问公网。

常见问题

为什么关闭 internet_access 后仍可能访问公网?

internet_access 只控制平台侧公网出口。如果模板接入的 VPC 已配置公网出口(NAT 网关 + EIP + SNAT),沙箱仍可通过该出口访问公网。需要彻底隔离公网时,同时检查模板参数和 VPC 网络配置。

如何获得固定公网出口 IP?

按场景三配置:模板侧关闭 internet_access 并配置 vpc_config;VPC 侧配置公网 NAT 网关和 EIP,并配置相应路由与 SNAT 规则。验证沙箱内出口 IP 是否为配置的 EIP。