为了保护源站安全,一些用户希望获取阿里云CDN的回源节点IP,并在源站设置白名单,只允许阿里云CDN回源访问。
边缘节点IP与回源节点IP的区别
CDN节点IP分为两类,适用于不同的场景:
类型 | 说明 | 特点 | 获取方式 |
回源节点IP(L2) | CDN回源节点访问源站时使用的IP地址 | 动态分配,不固定 |
|
边缘节点IP(L1) | 用户访问CDN时就近分配的节点IP | 动态调度,随时变化 |
回源节点IP(L2):用于源站白名单配置,当需要在源站的安全组、SLB访问控制或云防火墙中放行CDN回源流量时,定期获取最新的回源IP并更新白名单;或参考本文"源站安全防护替代方案"章节,使用不依赖IP的防护方式。
边缘节点IP(L1):用于客户端侧排查或特定合规需求。当需要确认用户实际访问的CDN节点或排查访问问题时,使用该类IP。使用
nslookup或dig命令解析加速域名,获取当前调度到的边缘节点IP仅代表当前的瞬时调度状态,CDN会根据网络状况动态调整节点分配,不能作为固定IP使用。
CDN回源IP查询接口(DescribeL2VipsByDomain)限制
调用DescribeL2VipsByDomain接口查询CDN回源IP时,请注意以下限制:
限制项 | 说明 |
带宽门槛 | 仅支持日峰值带宽≥1Gbps的用户调用,需提交工单申请调用权限 |
查询粒度 | 不支持多域名批量查询,每次仅能输入一个加速域名 |
IP动态性 | 返回的回源节点IP会定期变化,需定期调用接口更新白名单 |
该接口主要用于获取L2回源节点IP,适用于需要在源站(如ECS安全组、SLB访问控制、云防火墙)配置白名单的场景。
源站安全防护替代方案
由于CDN回源IP是动态变化的,不建议仅依赖IP白名单保护源站。推荐以下替代方案:
通过HTTP Header识别CDN回源请求:CDN回源时会透传
ali-cdn-real-ipHTTP头,源站可通过识别该Header来标识并放行合法的CDN回源请求,而非依赖IP白名单。配置Referer防盗链:通过设置Referer黑名单或白名单,防止非授权来源访问加速资源。该方式不依赖IP限制,更适应CDN动态IP特性。
配置URL鉴权:通过时间戳鉴权机制生成加密URL,有效防止站点资源被非法下载盗用。该方式同样不依赖固定IP,适合对安全性要求较高的场景。
以上方式可组合使用,多层防护效果更佳。
在云防火墙或WAF中配置CDN回源放行规则
若源站前部署了云防火墙或WAF等安全产品,需要配置放行规则以允许CDN回源流量正常到达源站。
推荐使用ESA,通过ESA的源站防护功能获取最新的回源IP列表,便于维护白名单。
配置入向规则: 在云防火墙或WAF中,将调用DescribeL2VipsByDomain获取到的回源IP列表加入入向放行规则,允许这些IP访问源站。
配置出向规则(如有需要): 如果云防火墙配置了出向控制策略,也需要放行源站到CDN回源IP的响应流量。
端口说明: 若无特殊配置,CDN回源默认连接源站的80端口(HTTP)和443端口(HTTPS)。如果在CDN中配置了自定义回源端口,请确保对应端口的入向规则也已放行。
以上内容针对CDN回源流量(CDN节点 → 源站)的入站放行。如果您的业务环境还需要调用CDN的管理API(如刷新缓存、查询配置等),请注意:CDN API服务端没有固定的IP地址。如果网络环境有严格的出站限制,建议配置代理服务器,将代理服务器IP加入出站白名单,由代理转发API请求。
为什么CDN访问日志或源站日志中显示的IP与用户本地IP不一致?
CDN访问日志或源站接收到的请求IP是CDN的回源节点IP,而非最终用户的真实IP。这是CDN的正常回源行为:当边缘节点(L1)缓存未命中时,请求会由回源节点(L2)向源站发起,因此源站看到的来源IP是CDN的回源节点IP。要获取用户的真实IP,可通过以下方式:
解析
X-Forwarded-ForHeader:CDN会在回源请求中透传该Header,其中包含用户的真实IP地址。解析
ali-cdn-real-ipHeader:阿里云CDN专有的回源Header,直接携带用户真实IP,相比X-Forwarded-For不易被伪造。
不要依赖TCP连接的源IP来判断用户身份,该IP始终是CDN节点IP。