通过配置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地址信息:
|
操作步骤
登录CDN控制台。
在左侧导航栏,单击域名管理。
在域名管理页面,找到目标域名,单击操作列的管理。
在指定域名的左侧导航栏,单击访问控制。
单击IP黑/白名单页签。
在IP黑/白名单区域,单击修改配置。
根据界面提示,配置IP黑名单或白名单。
参数
说明
名单类型
IP名单类型如下:
黑名单
黑名单内的IP无法访问加速域名下的所有资源。
白名单
只有白名单内的IP能访问加速域名下的资源,白名单以外的IP均无法访问。
规则
规则格式要求
支持输入IP地址或者IP地址段。
输入多个IP地址或者IP地址段时,使用换行符分隔。
支持IPv4类型的地址或者地址段:
IPv4地址示例:
192.168.0.1
。IPv4地址段示例:
192.168.0.0/24
。不支持输入通配网络地址
0.0.0.0/0
,如果需要表示全量IPv4地址,可以用以下两个子网来表示:0.0.0.0/1
128.0.0.0/1
支持IPv6类型的地址或者地址段:
IPv6地址示例:
FC00:AA3:0:23:3:300:300A:1234
。IPv6地址段示例:
FC00:0AA3:0000:0000:0000:0000:0000:0000/48
。地址中的英文字母不区分大小写,即支持全大写、全小写或者大小写混合,例如:
FC00:AA3:0:23:3:300:300A:1234
或fc00:0aa3:0000:0023:0003:0300:300a:1234
。不支持
: :
缩写格式,例如:不支持FC00:0AA3::0023:0003:0300:300A:1234
。不支持输入通配网络地址
0000:0000:0000:0000:0000:0000:0000:0000/0
,如果需要表示全量IPv6地址,可以用以下两个子网来表示:0000:0000:0000:0000:0000:0000:0000:0000/1
8000:0000:0000:0000:0000:0000:0000:0000/1
规则长度限制
规则输入框最大支持输入30 KB长度的字符,考虑到IP地址或者IP地址段的字符串长度有长有短,如果按平均长度来算,最多可配置大约700个IPv6地址/地址段或者2000个IPv4地址/地址段。如果您有更多的IP地址封禁需求,请开通DCDN安全防护功能(支持海量IP封禁服务),具体操作方法,请参见开通DCDN服务和配置区域封禁。
IP规则
支持选择以下三种规则:
使用用户的x-forwarded-for请求头作为判断依据
使用真实建连IP作为判断依据
同时使用x-forwarded-for和真实建连IP作为判断依据
如果x-forwarded-for请求头没有携带IP的话,将使用建联IP。
规则条件
规则条件能够对用户请求中携带的各种参数信息进行识别,以此来决定某个配置是否对该请求生效。
不使用:不使用规则条件。
选择已配置的规则引擎,新增或修改规则引擎请参见规则引擎。
单击确定,完成配置。
配置示例
白名单
规则:
192.168.2.0/24
结果:只有客户端IP在
192.168.2.1
~192.168.2.254
地址范围(包含192.168.2.1
和192.168.2.254
)时,才能访问该加速域名下的资源。黑名单
规则:
192.168.0.1
结果:当客户端IP为
192.168.0.1
时,禁止访问该加速域名下的所有资源。
常见问题
相关API
BatchSetCdnDomainConfig - 批量配置域名:调用BatchSetCdnDomainConfig进行批量域名配置,通过设置ip_black_list_set和ip_allow_list_set分别指定IP黑名单和IP白名单。