引言:为什么需要私网连接
在云上架构演进过程中,跨VPC的服务访问是一个高频需求。无论是微服务拆分后的跨环境调用、数据中台对多业务线的能力输出,还是企业内部不同部门之间的服务共享,都绕不开一个核心问题:如何在不暴露公网的前提下,安全、高效地打通不同VPC之间的网络链路。
传统方案通常有三种选择:一是将服务绑定公网IP或配置公网端点,这直接引入了DDoS攻击、漏洞扫描、密码暴力破解等安全风险;二是使用VPC对等连接或云企业网(CEN)打通路由,但这对网络规划要求极高,且一旦出现IP地址冲突便难以调和;三是通过NAT网关或弹性公网IP做地址转换,不仅增加运维复杂度,还无法从根本上解决暴露面问题。
阿里云私网连接(PrivateLink)的出现,正是为了化解上述困境。它通过在服务使用方VPC内创建弹性网卡(Elastic Network Interface, ENI)作为服务的本地访问入口,让使用方访问跨VPC服务如同访问自己VPC内的资源一样自然。所有流量全程在阿里云内网传输,既不经过公网,也无需配置复杂的路由表或网关设备。本文将从零开始,逐步拆解PrivateLink的对接使用全流程,涵盖概念解析、配置实操、高阶特性、监控运维与成本估算等维度,帮助读者构建安全、合规、高可用的私网访问体系。
需要先登录阿里云控制台,点击:阿里云控制台
一、PrivateLink核心概念与工作原理
1.1 两个核心角色
PrivateLink的交互模型围绕两个角色展开:
- 服务提供方(Service Provider):拥有并运营待访问服务的阿里云用户。提供方在自己的VPC中创建终端节点服务(Endpoint Service),并将后端的负载均衡实例(NLB、ALB或CLB)关联为该服务的服务资源(Service Resource)。终端节点服务创建完成后会生成一个全局唯一的服务名称(Service Name),作为服务使用方发起连接的标识。
- 服务使用方(Service Consumer):需要访问跨VPC服务的阿里云用户。使用方在自己的VPC中创建终端节点(Endpoint),在创建时指定要连接的终端节点服务名称。终端节点创建后,PrivateLink会在使用方VPC的指定可用区内创建弹性网卡并分配私网IP,这些IP会被聚合成一个默认的服务域名。使用方VPC内的ECS实例通过访问该域名或弹性网卡IP,即可向提供方VPC内的服务发起请求。
1.2 数据平面与控制平面
从技术架构上看,PrivateLink分为两个平面:
- 控制平面:负责终端节点与终端节点服务之间的连接管理、状态同步、白名单校验与策略下发。当使用方创建终端节点并指定服务名称后,控制平面会校验该服务名称是否有效、使用方账号是否在白名单内,若校验通过则建立终端节点连接(Endpoint Connection)。
- 数据平面:负责实际业务流量的转发。使用方VPC内的流量到达终端节点的弹性网卡后,经由阿里云内网骨干网络直接送达提供方VPC内的负载均衡实例,再由负载均衡分发给后端服务器。整个数据链路不经过公网,也不经过任何中间网关设备。
1.3 关键组件详解
- 终端节点服务(Endpoint Service):提供方创建的私网服务抽象。它关联了后端的负载均衡实例作为服务资源,并维护一份服务白名单(Service Whitelist)。白名单中的账号ID才能看到并连接该终端节点服务。提供方账号ID默认自动加入白名单。
- 终端节点(Endpoint):使用方创建的访问入口。按照访问目标的不同,分为接口终端节点(Interface Endpoint)、网关型负载均衡终端节点(GWLBe)和反向终端节点(Reverse Endpoint)三种类型。日常跨VPC服务访问场景中最常用的是接口终端节点。
- 终端节点策略(Endpoint Policy):仅当使用接口终端节点访问阿里云官方服务时可用。它是一个JSON格式的权限策略,用于精确控制哪些主账号或RAM用户可以通过该终端节点访问服务的哪些资源。
- 安全组(Security Group):使用方在创建终端节点时需绑定安全组,用于控制进入终端节点弹性网卡的入方向流量。这是网络层访问控制的第一道防线。
二、场景一:同账号跨VPC私网访问——以NLB为例
这是PrivateLink最基础也最典型的应用场景:同一个阿里云账号下,VPC A中的ECS实例需要访问VPC B中部署的Web服务。
2.1 场景规划
假设账号A在华东1(杭州)地域创建了两个VPC:
- VPC1(服务使用方):网段10.0.0.0/8,包含可用区G的ECS01和可用区K的ECS02,作为客户端。
- VPC2(服务提供方):网段192.168.0.0/16,包含可用区G的ECS03和可用区K的ECS04,分别部署了Nginx服务。
目标:VPC1中的ECS实例通过私网访问VPC2中ECS部署的Nginx服务。
2.2 服务提供方配置步骤
步骤一:创建私网NLB实例
登录网络型负载均衡NLB控制台,在华东1(杭州)地域创建NLB实例。关键配置项:
- 实例网络类型:选择私网。
- 专有网络:选择VPC2。
- 可用区:至少选择两个可用区(如G和K),确保高可用。
- 协议版本:根据需求选择IPv4或双栈。
步骤二:创建后端服务器组并添加ECS
在NLB控制台创建服务器组:
- 选择VPC2作为所属VPC。
- 添加ECS03和ECS04作为后端服务器,并配置端口(如80)。
- 开启健康检查,确保NLB能自动剔除异常后端。
为ECS03和ECS04部署测试服务(以CentOS为例):
yum install -y nginx systemctl start nginx.service cd /usr/share/nginx/html/ echo "Hello from ECS03" > index.html
ECS04执行类似命令,修改index.html内容以示区分。
步骤三:创建终端节点服务
前往私网连接控制台,点击创建终端节点服务:
- 所属地域:华东1(杭州)。
- 服务资源类型:选择网络型负载均衡NLB。
- 关联NLB实例:选择步骤一中创建的NLB实例。
- 自动接受终端节点连接:可根据需要选择是(自动接受)或否(需手动确认)。
- 是否支持同可用区优先:若对时延不敏感,建议选择否。
创建完成后,系统会生成一个服务名称,格式类似于com.aliyuncs.privatelink.cn-hangzhou.xxx,请妥善保存。
2.3 服务使用方配置步骤
步骤一:创建接口终端节点
在私网连接控制台的接口终端节点页签,点击创建终端节点:
- 所属地域:华东1(杭州)。
- 节点名称:如
endpoint-to-vpc2-nginx。 - 终端节点类型:选择接口终端节点。
- 终端节点服务:选择其他终端节点服务,并粘贴提供方创建的服务名称。
- 专有网络:选择VPC1。
- 可用区与交换机:至少选择两个可用区(如G和K),每个可用区对应一个交换机。
- 安全组:绑定VPC1内的安全组,确保放行访问终端节点的入方向流量。
步骤二:等待连接建立
若提供方创建终端节点服务时选择了自动接受,终端节点创建后状态会直接变为已连接;若选择了手动接受,则需提供方在终端节点服务的连接页签中手动允许该连接请求。
步骤三:验证连通性
登录VPC1中的ECS实例,在终端节点详情页的可用区和网卡页签中获取弹性网卡的私网IP地址。执行以下命令测试连通性:
curl http://{弹性网卡IP}:80
若返回ECS03或ECS04的Nginx欢迎页面,则表明跨VPC私网访问已成功建立。也可以直接使用终端节点生成的默认域名(格式为ep-xxxx.privatelink.cn-hangzhou.aliyuncs.com)进行访问。
三、场景二:通过PrivateLink私网访问阿里云官方服务——以OSS为例
PrivateLink不仅支持用户自建服务,还支持访问集成了PrivateLink的阿里云官方服务。以对象存储OSS为例,通过PrivateLink私网访问OSS可以带来三大核心价值:
- 收敛攻击面:访问入口位于VPC内部,其他VPC无法发现也无法访问,流量在网络层实现原生隔离。
- 精细的网络层控制:支持绑定安全组,精确控制哪些源IP可以访问OSS,而OSS默认的内网访问域名无法做到这一点。
- 审计所有连接尝试:支持VPC流日志,可捕获并审计所有尝试访问终端节点的流量,无论成功与否。
3.1 前置条件
确保已在目标地域(如华东1·杭州)创建了VPC和交换机,并在该VPC内有一台ECS实例用于验证。
3.2 创建终端节点
登录私网连接控制台,在接口终端节点页签点击创建终端节点:
- 所属地域:选择OSS Bucket所在地域(如华东1·杭州)。
- 节点名称:如
privatelink-oss。 - 终端节点类型:选择接口终端节点。
- 终端节点服务:选择阿里云服务,在服务列表中搜索并选中OSS终端节点服务(服务名称以
oss结尾的条目)。 - 专有网络:选择目标VPC。
- 可用区与交换机:至少选择两个可用区。
- 安全组:绑定一个安全组,放行访问终端节点的入方向流量。
3.3 验证访问
创建完成后,登录同VPC内的ECS实例。使用OSS SDK或命令行工具(如ossutil)配置终端节点域名进行访问。若使用ossfs挂载OSS Bucket,挂载命令示例如下:
ossfs examplebucket /mnt/oss \ -ourl=ep-xxxx.oss.cn-hangzhou.privatelink.aliyuncs.com \ -ouse_path_request_style \ -osigv4 -oregion=cn-hangzhou
关键参数说明:
-ourl:指定为终端节点域名,而非OSS默认的公网或内网域名。-ouse_path_request_style:使用路径风格的请求方式(ossfs 1.91.1及以上版本支持)。
四、场景三:跨账号服务共享——白名单配置
跨账号场景是PrivateLink的又一核心能力。账号B(提供方)在VPC中部署了服务,账号A(使用方)需要通过私网访问该服务。
4.1 提供方配置
提供方(账号B)按照场景一的步骤创建NLB实例与终端节点服务。关键差异在于服务白名单的配置:
- 在终端节点服务创建页面或创建完成后,进入白名单配置页签。
- 点击添加白名单,输入使用方(账号A)的主账号ID。
- 白名单中的账号可以查询到该终端节点服务,并创建与之连接的终端节点。
4.2 使用方配置
使用方(账号A)登录私网连接控制台,创建接口终端节点:
- 终端节点服务选择其他终端节点服务。
- 输入提供方(账号B)创建的服务名称。
- 其余配置(VPC、可用区、安全组等)与同账号场景一致。
终端节点创建后,连接请求会出现在提供方终端节点服务的连接页签中。提供方手动允许该请求后,跨账号私网连接即告建立。
五、场景四:反向终端节点——让阿里云服务主动访问你的VPC
前述场景均为使用方主动发起访问。但在某些场景下,需要阿里云官方服务主动访问用户VPC内的资源,例如某些SaaS服务需要回调用户侧API、或数据同步服务需要拉取用户VPC内的数据。此时需要使用反向终端节点(Reverse Endpoint)。
反向终端节点允许阿里云服务侧通过私网主动访问用户VPC内的指定资源,使用方通过安全组控制访问范围。配置流程如下:
- 使用方在私网连接控制台的反向终端节点页签,点击创建终端节点。
- 配置所属地域、VPC、可用区与交换机。
- 绑定安全组以控制阿里云服务可访问的端口与IP范围。
- 创建完成后,将反向终端节点ID提供给阿里云服务方,由服务方在其终端节点服务中关联该反向终端节点。
反向终端节点与接口终端节点的核心区别在于:接口终端节点是使用方发起访问,反向终端节点是服务方发起访问。两者共同构成了PrivateLink双向私网通信的完整能力。
六、高阶特性与运维管理
6.1 安全组精细化控制
终端节点绑定的安全组控制着进入终端节点弹性网卡的所有入方向流量。建议遵循最小权限原则,仅放行必要的源IP、协议与端口。例如,若只允许VPC1内特定子网的ECS访问,可在安全组入方向规则中指定该子网CIDR。
6.2 VPC流日志审计
PrivateLink支持VPC流日志功能。启用流日志后,所有尝试访问终端节点的流量(无论成功与否)都会被记录,包括源IP、目的IP、端口、协议、接受/拒绝状态等信息。这对于安全审计、故障排查和合规性检查至关重要。
6.3 终端节点策略
当使用接口终端节点访问阿里云官方服务时,可以配置终端节点策略。它是一个JSON格式的访问策略,用于精确控制哪些主账号或RAM用户可以通过该终端节点访问服务的哪些资源。默认策略为允许所有,建议根据最小权限原则进行定制。
终端节点策略与安全组的区别在于:安全组工作在网络层(IP/端口),终端节点策略工作在应用层(服务资源/操作)。两者结合使用可实现纵深防御。
6.4 同可用区优先与多可用区容灾
PrivateLink支持同可用区优先特性:当使用方实例与终端节点位于同地域同可用区时,域名解析会优先返回当前可用区的终端节点IP,从而降低跨可用区网络延迟。若该可用区发生故障,域名解析会自动切换到其他正常可用区的IP地址,实现高可用。
值得注意的是,终端节点部署的可用区必须是终端节点服务资源部署可用区的子集。换言之,若终端节点服务只部署在可用区A和B,那么终端节点只能选择A或B,不能选择C。因此建议服务提供方在创建终端节点服务时,选择该地域下全部或尽可能多的可用区,以便被不同使用方的终端节点调用。
6.5 跨地域连接
PrivateLink支持跨地域连接:终端节点和终端节点服务可以部署在不同地域。例如,使用方在华东1(杭州)的终端节点可以连接提供方在华北2(北京)的终端节点服务。这为多地域分布式架构下的服务统一访问提供了极大便利,无需在每个地域重复部署服务。
此外,PrivateLink支持中国站与国际站账号之间的私网连接,但不支持中国内地与中国内地之外的地域之间建立跨站点连接。
七、API调用方式
除控制台操作外,PrivateLink的所有功能均可通过阿里云OpenAPI进行管理。以下列举几个核心API:
- CreateVpcEndpoint:创建终端节点。
- CreateVpcEndpointService:创建终端节点服务。
- AttachSecurityGroupToVpcEndpoint:将终端节点加入安全组。
- ListVpcEndpoints:查询终端节点列表及状态。
使用阿里云CLI创建终端节点的示例:
aliyun privatelink CreateVpcEndpoint \ --RegionId cn-hangzhou \ --VpcId vpc-xxxxx \ --EndpointName "cli-endpoint" \ --EndpointType Interface \ --ServiceName "com.aliyuncs.privatelink.cn-hangzhou.xxx" \ --SecurityGroupId sg-xxxxx \ --ZoneInfo.1.VSwitchId vsw-xxxxx \ --ZoneInfo.1.ZoneId cn-hangzhou-g
通过API调用,可以将PrivateLink的配置流程嵌入到基础设施即代码(IaC)的自动化体系中,实现网络资源的声明式管理。
八、计费说明与成本估算
PrivateLink按实际使用量计费,每小时出账。费用由两部分构成:
- 实例费(Instance Fee):按终端节点实例个数与使用时长计费,单价为0.01美元/个/小时。若终端节点部署在两个可用区,则每个可用区各计费一个实例。
- 流量处理费(Data Transfer Fee):按进出所有终端节点可用区弹性网卡的双向流量计费,单价为0.01美元/GB。
成本估算示例:假设某终端节点部署在2个可用区,持续运行30天,月度总流量为100GB:
- 实例费 = 0.01美元/个/小时 × 24小时 × 30天 × 2个可用区 = 14.4美元。
- 流量处理费 = 0.01美元/GB × 100GB = 1美元。
- 月度总费用 ≈ 15.4美元。
PrivateLink开通时不产生费用。服务使用方和服务提供方可以是不同账号,费用可归入使用方或提供方账号出账。
九、PrivateLink vs 传统方案:差异化优势
| 对比维度 | 公网暴露(EIP/公网端点) | VPC对等连接/云企业网 | PrivateLink |
| 安全风险 | 高(暴露公网,易受攻击) | 中(VPC互通后暴露面扩大) | 低(纯内网,流量隔离) |
| IP地址冲突 | 不涉及 | 要求网段不重叠,否则无法互通 | 无要求,VPC网段可重叠 |
| 网络层控制 | 弱(依赖应用层鉴权) | 中(依赖安全组/ACL) | 强(安全组+终端节点策略+流日志) |
| 架构复杂度 | 低 | 中(需配置路由、NAT等) | 低(无需网关、路由配置) |
| 跨账号支持 | 不支持 | 支持 | 支持 |
| 跨地域支持 | 不涉及 | 支持 | 支持 |
PrivateLink在安全性、网络层管控、架构简洁度等方面具有显著优势,尤其适合对安全合规有严格要求的企业级场景。对于简单的同VPC内部访问,无需使用PrivateLink;对于需要跨VPC、跨账号且强调安全隔离的场景,PrivateLink是首选方案。
十、常见问题排查与注意事项
- 终端节点状态一直为"创建中":检查是否已在对应地域开通私网连接服务;检查VPC和交换机是否已正确创建。
- 终端节点状态为"已断开":检查提供方是否已接受连接请求;检查使用方账号ID是否在服务白名单中。
- 连通性测试失败(curl超时或拒绝连接):检查终端节点绑定的安全组是否放行了入方向流量;检查提供方NLB/CLB/ALB的健康检查状态是否正常;检查提供方后端ECS的服务是否正常运行。
- 终端节点可用区选择受限:终端节点部署的可用区必须是终端节点服务资源部署可用区的子集。若需要更多可用区,请联系提供方扩展终端节点服务的可用区覆盖范围。
- 跨账号场景下找不到终端节点服务:确认使用方账号ID已正确添加到提供方的服务白名单中;确认服务名称输入无误。
- IPv6访问不生效:PrivateLink默认不支持IPv6类型的访问,如需使用需联系客户经理申请。同时需确保服务资源(NLB等)已开启双栈模式。
结语
阿里云私网连接(PrivateLink)重新定义了跨VPC服务访问的范式——将复杂的路由配置、网关部署和公网暴露风险,简化为"创建终端节点、指定服务名称、绑定安全组"三个步骤。它不仅解决了IP地址冲突这一长期困扰网络工程师的难题,更在网络层提供了原生隔离与精细化管控能力。无论是同账号跨VPC的服务共享、跨账号的企业能力输出,还是对OSS等官方服务的私网访问,PrivateLink都能以统一的技术栈优雅应对。
在实际生产中,建议遵循以下最佳实践:优先使用终端节点域名而非IP进行访问,以充分利用多可用区容灾能力;为每个终端节点绑定专用安全组并配置最小权限规则;对关键链路启用VPC流日志实现全量审计;在跨账号场景中严格管理服务白名单;定期评估流量与实例费用,避免非预期成本增长。掌握这些要点,便能将PrivateLink打造为企业云上网络架构中安全、高效、可控的私网连接基石。
高频问答
问1:PrivateLink与VPC对等连接有何区别?
答:VPC对等连接要求两端VPC的网段不能重叠,且打通后两端VPC内的所有资源默认全网互通,暴露面较大。PrivateLink则是一种"服务级"的连接方式,仅打通特定服务(终端节点服务)的访问通道,使用方VPC内的其他资源无法访问提供方VPC内的其他任何资源。此外,PrivateLink允许两端VPC网段重叠,极大降低了网络规划难度。
问2:PrivateLink是否支持本地数据中心(IDC)访问?
答:支持。本地数据中心可以通过VPN连接、专线接入等方式与阿里云VPC建立网络连接,然后通过VPC中的终端节点访问部署在其他VPC中的服务。
问3:终端节点创建后,IP地址会变化吗?
答:终端节点在每个可用区会生成一个弹性网卡并分配固定的私网IP地址。只要终端节点未被删除,这些IP地址不会发生变化。建议优先使用终端节点域名进行访问,域名会自动解析到当前可用的弹性网卡IP,具备自动容灾能力。
问4:PrivateLink的流量经过公网吗?
答:不经过。所有流量均在阿里云内网骨干网络中传输,全程不经过互联网。这也是PrivateLink核心安全优势的来源。
问5:一个终端节点可以连接多个终端节点服务吗?
答:不可以。一个终端节点仅支持关联一个终端节点服务。如果需要访问多个服务,需要为每个服务分别创建终端节点。
问6:PrivateLink支持哪些负载均衡类型作为服务资源?
答:支持网络型负载均衡NLB、应用型负载均衡ALB、传统型负载均衡CLB和网关型负载均衡GWLB。日常跨VPC服务访问场景中最常用的是NLB和ALB。若服务资源是ECS,则需要增加负载均衡实例进行中转。