由于某些行业竞争激烈,因此常常会遇到一些竞争对手利用恶意 IP 占用网站资源,影响网站访问。为了能够保护站点数据和流量负载,需要网站运营者对这些恶意 IP 进行屏蔽。
若需要禁止某些 IP 或只允许某些 IP 访问,可以使用 IP 黑白名单功能。并且在同一时间内,CDN只支持生效一种规则,比如:要么禁止某些 IP 访问,要么允许某些 IP 访问。支持 * 通配符,如 10.11.12.*
,将禁止或只允许10.11.12.0 ~ 10.11.12.255
范围的 IP 访问。
地区访问限制是指根据加速网站的需求,允许或禁止特定区域的终端用户对网站资源的访问。即网站指定地区,允许该地区终端用户访问,而限制其他地区用户访问,或者相反。
在讲防盗链之前,先来了解一下什么是盗链。
盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向终端用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。
简单来说,就是其他网站上“盗”用了你网站的资源,去增加他的网站点击率,但最后流量却算在你身上,让你花“冤枉钱”。这个当然不能忍!怎么办?由于各网站性质不同(游戏/新闻等),需求也是不尽相同的。
最常用的防盗链手段,就是通过对 HTTP 请求中的Referer Header
进行判断,来决定用户是否可以访问该资源。
白名单:仅允许名单中的域名网站访问文件,其他域名网站都不允许访问。
黑名单:仅禁止名单中的域名网站访问文件,其他域名网站都允许访问。
Referer 为空:若禁止即不允许用户直接访问该资源,因为直接在浏览器的地址栏中输入一个资源的 URL 地址,请求是不会包含 Referer 字段的。
HTTP 请求 Header 中的User-Agent
字段,是一段浏览器或者设备标识的字符串。对于网站本身来说,有时需要让一些资源只能在某些浏览器或者设备上才能访问。
CDN 支持针对 HTTP 请求头中的User-Agent
信息,禁止或者允许符合特定User-Agent
规则的请求。具体的使用场景例如:某客户端拥有自己专属的客户端对资源进行下载,该下载工具在请求时,使用了定制的User-Agent
名称,或只允许此类User-Agent
请求资源,此时可以配置User-Agent
白名单就可以实现。
Token 防盗链是提供时效性访问的。通过设置访问密钥和过期时间来达到加密文件的目的。只有按照算法成功计算出 Token 才能进行访问。比如网站有些内容,希望付费才能访问,且规定访问有有效期,就可以通过 Token 防盗链来实现。
如果不希望对方知晓你的防盗链规则原理,或者 CDN 无法满足的特殊防盗链需求,也许也需适合你的防盗链选择就是回源鉴权了。
回源鉴权是一种高级的防盗链方式,需要在源站配置一台鉴权服务器,并设置鉴权方式。之后 CDN 边缘节点每次接受到请求之后,都会回用户源站的鉴权服务器进行验证,验证通过之后才认为是合法请求,CDN 才会继续提供服务。
回源鉴权适用于对防盗链有很高实时性要求的场景,当然因为每次请求都需要鉴权服务器的验证,在开启该功能时也需要考虑到访问量过大时鉴权服务器的压力。
可以针对单个 IP 在单位周期时间内的访问频率设置一定的阈值,将超过该阈值的 IP 的访问进行直接拦截,从而达到访问限制的目的。
当前的单 IP 访问频率只支持针对 CDN 单个边缘节点生效,当达到设定的阈值时,异常访问的客户端 IP 将加入黑名单中,并可以设定生效时间,在该时间周期内,所有该 IP 的访问都会被拦截。
Cache-Control: max-age=600
Expires: Tue, 24 Aug 2021 06:58:41 GMT
Date: Tue, 24 Aug 2021 06:48:41 GMT
Last-Modified: Thu, 12 Aug 2021 12:42:42 GMT
攻击一直都是让网站管理者头疼的问题,特别面对恶意的 DDoS 攻击时。CC 攻击(Challenge Collapsar)是 DDoS的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向受害网站不停地发大量数据包,造成对方服务器资源耗尽,一直到宕机崩溃。
CC 防护主要是针对 CC 攻击的一种应用层攻击防护,该功能通过自定义匹配规则对目标资源进行监控,当请求频率达到触发频率时,对疑似攻击请求进行校验,校验通过则允许访问;校验不通过,则直接禁止访问。
基于业务场景添加 HTTP 头部,包括 HTTP 请求头和 HTTP 响应头,例如:添加跨域配置。具体规则描述如下:
if($_HOST == www.example.com){
ADD_Response_Header Access-Control-Allow-Origin "*"
}
全站加速提供资源的刷新和预热功能。通过刷新功能,可以强制全站加速节点回源并获取最新文件;通过预热功能可以在业务高峰之前预热热门资源,提高资源访问效率。
["HTTP_X_REAL_IP"] => string(31) "2409:896a:31:bc6a:2:1:7447:a924"
["HTTP_X_EDGE_RETRY_TIMES"] => string(1) "-"
["HTTP_X_FORWARDED_FOR"] => string(31) "2409:896a:31:bc6a:2:1:7447:a924"
["HTTP_X_REQUEST_ID"] => string(32) "5b16d20b4133036df1a1e272c116caf8"
["HTTP_CLIENT_IP"] => string(31) "2409:896a:31:bc6a:2:1:7447:a924"
应用服务器收到的是
["x-real-ip"] => string(31) "2409:896a:31:bc6a:2:1:7447:a924"
["x-forwarded-for"] => string(31) "2409:896a:31:bc6a:2:1:7447:a924"
["x-request-id"] => string(32) "5b16d20b4133036df1a1e272c116caf8"
["client-ip"] => string(31) "2409:896a:31:bc6a:2:1:7447:a924"
权威DNS 指域名在域名注册商处所设置的 DNS 服务器地址。该地址决定了该域名的解析管理权(新增,删除,修改等)。比如DNSPod的权威服务器:*.dnspod.net, *.dnsv3.com等。当域名设置权威服务器并设置了解析记录后,客户端请求域名时,权威服务器将返回该域名的对应的解析记录信息。
LocalDNS 是DNS查询中的第一个节点。Local DNS作为客户端与 DNS 域名服务器的中间人。客户端发送DNS查询时,Local DNS将使用缓存的数据进行响应,或者将向根域名服务器发送请求,接着向根域名服务器发送另一个请求,然后向权威DNS发送最后一个请求。收到来自包含已请求 IP地址的权威DNS服务器的响应后,Local DNS将向客户端发送响应。 在此过程中,Local DNS将缓存从权威DNS服务器收到的信息。当一个客户端请求的域名IP地址是另一个客户端最近请求的IP地址时,Local DNS 可绕过与域名服务器进行通信的过程,并仅从第二个客户端的缓存中为第一个客户端提供所请求的记录。
公共DNS 指面向所有互联网用户的全球公共递归域名解析服务。和仅使用本地LocalDNS的传统解析服务相比,公共解析服务,一般具备更加“快速”、“稳定”、“安全”互联网访问。
在递归进行解析查询时,各记录类型之间是有优先级的,所以在主机记录相同、解析线路相同的情况下,有几种记录类型不能共存使用,否则会给用户造成配置风险,导致业务不可用的情况发生。
以下拿CNAME记录和MX记录的冲突来举例:假设为come.com配置如下两条记录
记录类型 主机记录 记录值
MX @ mx1.hichina.com
CNAME @ www.liaocheng.co
结论 按照RFC标准协议CNAME优先级最高,所以在解析请求过程中,会优先返回CNAME解析记录结果,这样设置的结果导致用户无法请求到MX记录,直接对客户的邮箱业务造成使用影响。所以对于这类情况,云解析DNS会通过记录冲突的提示方式,来帮助用户避免这种配置风险。
解析冲突解决办法 1:最简单的办法就是,可以通过使用URL转发记录来解析CNAME记录和MX记录冲突问题,这个种办法少有DNS服务商可以免费提供,不想花钱继续下边看其他的办法。 2:使用A记录代替CNAME,然后在服务器上做301跳转。 3: 使用二级域名做MX记录。
流量计费
适用于域名流量曲线波动较大,且有带宽尖峰的用户。
峰值带宽计费
适用于域名稳定的业务流量曲线比较平稳。
CloudFlare、Akamai
阿里云、腾讯云、百度智能云、百度云加速、网宿、蓝汛、白山云、又拍云、七牛云、青云、猫云、多吉云