全部产品
Search
文档中心

CDN:配置IP黑白名单

更新时间:Sep 29, 2024

通过配置IP黑白名单过滤用户请求,拦截或允许特定IP的访问,可以有效限制访问来源,解决恶意IP盗刷、攻击等问题。

注意事项

  • 该功能默认关闭,IP黑名单与IP白名单二选一,不可同时配置。

  • 配置IP黑名单后,黑名单中的IP请求仍可访问到CDN节点,但会被CDN节点拒绝并返回403状态码,CDN日志中仍会记录黑名单中这些IP的请求记录。

  • 由于IP黑白名单功能采用的是七层HTTP协议的IP识别技术,因此在恶意请求被CDN节点拦截的同时,会产生少量的流量费用,如果客户端使用HTTPS协议访问,还会产生HTTPS请求数费用(因为拦截恶意IP的时候,也同时消耗了CDN节点的处理资源)。

  • 少数ISP在特定区域可能会分配私有IP地址给用户端,导致CDN节点接收到的是用户的私有IP地址。

    说明

    私有IP地址范围有以下三个:

    • A类私有IP地址:10.0.0.0~10.255.255.255,子网掩码:10.0.0.0/8

    • B类私有IP地址:172.16.0.0~172.31.255.255,子网掩码:172.16.0.0/12

    • C类私有IP地址:192.168.0.0~192.168.255.255,子网掩码:192.168.0.0/16

IP地址校验模式

客户端与CDN节点建立连接时,是否经过代理服务器,会影响客户端真实IP、客户端与CDN节点建连IP。假设客户端真实IP为10.10.10.10,代理服务器IP为192.168.0.1

  • 没有经过代理服务器:

    • 用户请求中x-forwarded-for请求头值:10.10.10.10

    • 客户端真实IP(即x-forwarded-for请求头携带的第一个IP)=客户端与CDN节点建连IP=10.10.10.10

  • 经过代理服务器:

    • 用户请求中x-forwarded-for请求头值:10.10.10.10,192.168.0.1

    • 客户端真实IP(即x-forwarded-for请求头携带的第一个IP)=10.10.10.10

    • 客户端与CDN节点建连IP=代理服务器IP=192.168.0.1

    • 客户端真实IP(即x-forwarded-for请求头携带的第一个IP)≠客户端与CDN节点建连IP。

对于不同的IP地址校验对象,阿里云CDN的IP黑白名单功能支持三种IP地址校验模式。

IP地址校验模式

说明

使用用户的x-forwarded-for请求头作为判断依据

该模式为默认模式。该模式校验的是用户请求中x-forwarded-for请求头携带的左边第一个IP,这个IP对应客户端真实IP。

如果客户端与CDN节点之间有经过代理服务器,那么客户端与CDN节点建连使用的IP为代理服务器的IP,这种情况下使用“使用用户的x-forwarded-for请求头作为判断依据”模式进行IP黑白名单访问控制可能会存在不准确的情况。

使用真实建连IP作为判断依据

该模式校验的是客户端与CDN节点之间建连使用的IP。

同时使用x-forwarded-for和真实建连IP作为判断依据

同时校验以下两个IP地址信息:

  • 用户请求中x-forwarded-for请求头携带的左边第一个IP,即客户端真实IP。

  • 客户端与CDN节点之间建连使用的IP。

操作步骤

  1. 登录CDN控制台

  2. 在左侧导航栏,单击域名管理

  3. 域名管理页面,找到目标域名,单击操作列的管理

  4. 在指定域名的左侧导航栏,单击访问控制

  5. 单击IP黑/白名单页签。

  6. IP黑/白名单区域,单击修改配置

  7. 根据界面提示,配置IP黑名单白名单

    参数

    说明

    名单类型

    IP名单类型如下:

    1. 黑名单

      黑名单内的IP无法访问加速域名下的所有资源。

    2. 白名单

      只有白名单内的IP能访问加速域名下的资源,白名单以外的IP均无法访问。

    规则

    规则格式要求

    1. 支持输入IP地址或者IP地址段。

    2. 输入多个IP地址或者IP地址段时,使用换行符分隔。

    3. 支持IPv4类型的地址或者地址段:

      1. IPv4地址示例:192.168.0.1

      2. IPv4地址段示例:192.168.0.0/24

      3. 不支持输入通配网络地址0.0.0.0/0,如果需要表示全量IPv4地址,可以用以下两个子网来表示:

        1. 0.0.0.0/1

        2. 128.0.0.0/1

    4. 支持IPv6类型的地址或者地址段:

      1. IPv6地址示例:FC00:AA3:0:23:3:300:300A:1234

      2. IPv6地址段示例:FC00:0AA3:0000:0000:0000:0000:0000:0000/48

      3. 地址中的英文字母不区分大小写,即支持全大写、全小写或者大小写混合,例如:FC00:AA3:0:23:3:300:300A:1234fc00:0aa3:0000:0023:0003:0300:300a:1234

      4. 不支持: :缩写格式,例如:不支持FC00:0AA3::0023:0003:0300:300A:1234

      5. 不支持输入通配网络地址0000:0000:0000:0000:0000:0000:0000:0000/0,如果需要表示全量IPv6地址,可以用以下两个子网来表示:

        1. 0000:0000:0000:0000:0000:0000:0000:0000/1

        2. 8000:0000:0000:0000:0000:0000:0000:0000/1

    规则长度限制

    规则输入框最大支持输入30 KB长度的字符,考虑到IP地址或者IP地址段的字符串长度有长有短,如果按平均长度来算,最多可配置大约700个IPv6地址/地址段或者2000个IPv4地址/地址段。如果您有更多的IP地址封禁需求,请开通DCDN安全防护功能(支持海量IP封禁服务),具体操作方法,请参见开通DCDN服务配置区域封禁

    IP规则

    支持选择以下三种规则:

    1. 使用用户的x-forwarded-for请求头作为判断依据

    2. 使用真实建连IP作为判断依据

    3. 同时使用x-forwarded-for和真实建连IP作为判断依据

    如果x-forwarded-for请求头没有携带IP的话,将使用建联IP

    规则条件

    规则条件能够对用户请求中携带的各种参数信息进行识别,以此来决定某个配置是否对该请求生效。

    • 不使用:不使用规则条件。

    • 选择已配置的规则引擎,新增或修改规则引擎请参见规则引擎

  8. 单击确定,完成配置。

配置示例

  • 白名单

    规则:192.168.2.0/24

    结果:只有客户端IP在192.168.2.1~192.168.2.254地址范围(包含192.168.2.1192.168.2.254)时,才能访问该加速域名下的资源。

  • 黑名单

    规则:192.168.0.1

    结果:当客户端IP为192.168.0.1时,禁止访问该加速域名下的所有资源。

常见问题

相关API

BatchSetCdnDomainConfig - 批量配置域名:调用BatchSetCdnDomainConfig进行批量域名配置,通过设置ip_black_list_setip_allow_list_set分别指定IP黑名单和IP白名单。