周三下午四点,客户安全部发来一封邮件,字不多,杀伤力极大:“贵方系统与我方对接的数据流,不得经过互联网传输。” 最后一句是“整改完成前,暂缓上线”。
我当时正端着咖啡,看完这封邮件,咖啡就不香了。因为我们的架构特别朴素:一台 ECS,挂个弹性公网 IP,开 443 端口,安全组里加了客户办公室的出口 IP 白名单。在我看来这已经算“很安全”——端口不对外、只放行固定 IP、还上了证书。但在对方的安全评分表里,这条路叫“公网暴露面”,一分不给。
接下来三天,我们把“怎么让两个不同账号的 VPC 互相说话,又完全不碰公网”捋了一遍。最后落地的东西叫私网连接 PrivateLink。这篇把判断过程、踩的坑和那张账单原样交出来。
想直接上手私网连接 PrivateLink,入口在这儿:私网连接 PrivateLink
一、试过、但都不太行的三条路
第一条:EIP + 白名单,跟客户解释“这已经是公网里最安全的了”。
技术上没错,沟通上必输。对方基线是“数据不出私网”,你讲“我加了白名单”,是两个评分体系在对话。而且白名单这玩意儿客户换个地点就要改,久了必然有人图省事写成 0.0.0.0/0。
第二条:VPC 对等连接。
自家多 VPC 场景很香,但对客户有两个问题:一是要求两端 IP 段不重叠,你永远不知道客户网段有没有跟你撞车;二是它打通的是两张网,不是一个服务。客户安全团队会问:“连上之后你能访问我 VPC 里哪些东西?” 这问题对等连接答不上来,它给的是整网可达。
第三条:专线或 VPN。 专线周期以周计;VPN 走公网加密,绕一圈又回到“经过互联网”这个原点,被第一条要求毙掉。
三条都被否掉,我们才认真看 PrivateLink。它的定位特别清楚:不是把两张网接起来,而是把“一个服务”以私有 IP 的形式投递到对方 VPC 里。
二、两个角色,一句话讲清
- 终端节点服务(Endpoint Service):服务提供方建。把自家后端(NLB/ALB/CLB 或网关型负载均衡 GWLB 后面的服务)发布出去,等于挂个“招牌”,并用服务白名单决定谁能连。
- 终端节点(Endpoint):服务使用方建。客户在他自己的 VPC 里连上这块招牌,VPC 里就多出一块终端节点网卡(ENI),带一个他自己网段里的私有 IP。
关键就在这块网卡上。客户应用连的是 10.0.x.x:443 这样的内网地址,流量从网卡进阿里云私有网络,一路到后端,全程不出公网。对他而言是“我 VPC 里多了台服务器”;对你而言,你没有把自家路由表交出去,只交出了一个端口。
说白了,对等连接是“两家院子打通”,PrivateLink 是“我在你家墙上开个取件口,只能取这一件”。另外因为走 ENI 私有 IP 投递,两端 IP 段重叠也能通——跟客户对接时不用再问“你们 172.16.0.0/12 用了多少”。
三、三条路线,一张表拍平
| 维度 | EIP + 白名单 | VPC 对等连接 | 私网连接 PrivateLink |
|---|---|---|---|
| 流量是否经公网 | 是 | 否 | 否 |
| 暴露粒度 | 一个公网 IP + 端口 | 整网可达(靠路由和安全组收) | 单个服务,只能访问发布的端口 |
| IP 段冲突 | 无所谓 | 必须不重叠 | 重叠也能通 |
| 跨账号 | 天然支持 | 支持,但要双方配路由 | 支持,靠白名单授权 |
| 谁控制访问 | 你自己(安全组) | 双方协商路由 | 服务方白名单 + 使用方安全组/终端节点策略 |
| 跨地域 | 天然支持 | 不支持(需 CEN 中转) | 支持,有额外费用 |
| 典型成本 | 公网带宽/流量费 | 无(跨地域走 CEN 另计) | 实例费 + 流量处理费,量很小 |
四、三天里实际动手的七步
第 1 步(服务方)把后端挂到负载均衡。 PrivateLink 不直接挂 ECS,需要一个负载均衡做后端,官方支持 NLB、ALB、CLB,以及给安全设备场景准备的 GWLB。我们选 NLB——四层,不需要它解析 HTTP,越薄越省事。
第 2 步(服务方)创建终端节点服务。 在 VPC 控制台的私网连接里建,选中那个 NLB 实例、选监听端口,会拿到一个服务名称,形如 com.aliyuncs.privatelink.cn-hangzhou.xxx,这个字符串发给客户。
第 3 步(服务方)配服务白名单。 白名单填的是对方的阿里云账号 ID,不是 IP。很多人第一反应是找 IP,结果在控制台转半天找不到输入框。
第 4 步(使用方)创建接口终端节点。 客户按服务名称连过来,选择部署在几个可用区。这里直接影响账单:每个可用区算一个计费实例,两个可用区就是双份实例费。我们建议客户选 2 个,不为省钱牺牲可用性。
第 5 步(使用方)配安全组和终端节点策略。 终端节点自带安全组,只有符合规则的客户端流量才能过;想再细一层可以配终端节点策略,精确限定能对哪些资源做什么操作。这层是“使用方自己的锁”,服务方看不到也改不了,客户安全团队特别吃这套。
第 6 步 验证连通。 客户 VPC 里 telnet 10.0.x.x 443 通、curl 拿到响应头、证书域名对得上就算过。注意默认是私有 IP 直连,应用里写死域名的还得配私有 DNS 或 CNAME——见坑 2。
第 7 步 接上监控和审计。 云监控看带宽和包速率设告警,操作审计留全量操作日志,验收时是加分项。
五、账单:比我想的便宜
官方定价(以官方页面实时展示为准):实例费 0.07 元/个/小时,按终端节点的可用区个数计费,不满 1 小时按 1 小时算;流量处理费 0.07 元/GB,按进出终端节点的双向流量计费。网关型负载均衡终端节点的流量单价低些,0.025 元/GB。
官方示例:一个终端节点部署在 2 个可用区、一个月跑 100 GB 双向流量 → 实例费 0.07×24×30×2 = 100.8 元,流量费 7 元,合计 107.8 元/月。一百块换一个“数据不出私网”的合规答案,这账我认。它按量付费,删掉终端节点就停止计费。
两个容易被忽略的细节:
- 付费方可以选,创建终端节点服务时定,定了不能改。默认“服务使用方付费”,也可以选“服务提供方付费”。做 SaaS 的注意:选服务方付费,客户开多少终端节点都算你头上——官方示例里 100 个终端节点 × 2 可用区,一个月实例费就是 10080 元。
- 跨地域要加钱。多出跨地域流量费(走 CDT 结算)和活跃远程地域费 0.35 元/地域/小时,后者由服务提供方承担。
六、六个坑,我都替你踩了
坑 1:以为连上就能互访。 终端节点是单向的,客户能访问你发布的服务,但你不能顺着这条连接反向进他 VPC。要双向得两边各建一套。我们第一版方案图画成双向箭头,被客户安全团队温柔纠正——人家纠正得对。
坑 2:域名没配,应用连不上。 终端节点给的是私有 IP 不是域名。客户应用里写 api.xxx.com,DNS 一解析还是公网地址,流量照样跑公网。这步不做前面全白干,而且现象特别迷惑:telnet 通、应用报错。
坑 3:可用区选少了,跨 AZ 流量悄悄绕。 只在一个可用区建终端节点,另一个可用区的客户端流量就会跨可用区走。反过来,接口终端节点配合云解析 DNS 能做多可用区粒度容灾,这点比“单点跳板机”强。
坑 4:白名单只加了 IP 没加账号 ID。 白名单认账号不认网段。加错了控制台会一直显示未连接,你会以为是网络问题,其实是授权问题。
坑 5:以为所有阿里云服务都能这么连。 能不能连,取决于对方有没有发布终端节点服务。阿里云自家一批服务已发布,可直接建终端节点私网访问;自建服务得自己按第 1~3 步发布。
坑 6:以为它替代了安全组。 PrivateLink 解决的是“路径不走公网”,不是“谁能访问”。后端安全组、应用层鉴权一样不能少——验收时被问“如果对方账号被盗,攻击者能做什么”,靠的就是终端节点策略加应用鉴权兜住的。
七、什么情况值得上
我的判断标准很土,就三条:对方是客户/合作方而不是自己的 VPC(值,跨账号、要授权、要审计,这套天生为它设计);只开放有限几个服务(值,它天生就是开一个取件口,想整网互通说明用错工具,该看 CEN);合规条文里出现“数据不得经公网”“私网接入”(值,往往唯一解)。
反过来,自家两个 VPC 要打通、网段不冲突,对等连接更简单;两地机房长期大流量互通,专线更合适。
第三天下午验收通过,邮件里那句“暂缓上线”改成了“同意上线”。回头看这三天,真正花时间的不是配置——配置前后不到两小时;花时间的是把“我们很安全”翻译成“你们的评分表上我们及格”。技术方案的价值,有时候不在技术本身,而在它能不能对上别人那套评价体系。
想自己动手试的,入口在这儿:私网连接 PrivateLink。建议拿两个自己的账号对着建一遍,服务方发布、使用方连接,跑通一次再回头看概念就通了。价格和规格细节以官方页面实时展示为准。
