Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
归纳起来,CDN具有以下主要功能:
(1)节省骨干网带宽,减少带宽需求量;
(2)提供服务器端加速,解决由于用户访问量大造成的服务器过载问题;
(3)服务商能使用Web Cache技术在本地缓存用户访问过的Web页面和对象,实现相同对象的访问无须占用主干的出口带宽,并提高用户访问因特网页面的相应时间的需求;
(4)能克服网站分布不均的问题,并且能降低网站自身建设和维护成本;
(5)降低“通信风暴”的影响,提高网络访问的稳定性。
现在各大厂商又推出各种安全CDN加速,号称SCDN,具体就是做加速的同时,防护DDoS,CC,Web应用攻击,恶意刷流量,恶意爬虫等危害网站的行为。在CDN边缘节点中注入安全防护。
相当于平时做的网站防护,加到了分发到加速节点上。如果源站未做防护,那么不就省去了bypass的步骤。
源站:我们自己的那个网站就被称为是源站。
反向代理:CDN节点向源站请求数据的方式就叫反向代理,也就是上文所说的转发。
回源:CDN节点向源站请求数据的行为就叫做回源。
简单说明一下流程
1.管理员将域名的DNS指向CDN厂商的DNS上(当然,根据选择不同也有可能使用CName方式,但都不影响数据流的流向)。
2.用户需要登录站点,请求DNS以便获得服务器IP(此处最终请求的DNS服务器为CDN厂商的DNS)
3.CDN厂商收到DNS查询请求及各种信息,通过各种算法选择一个离用户最近的节点,将该节点的IP 1.1.1.1作为服务器IP返回给用户(此处CDN厂商告诉用户一个假的服务器IP)
4.用户收到DNS响应,将HTTP请求(该处为登录请求,请求报文包含用户密码)发给1.1.1.1
5.CDN节点接收到请求包判断请求报文是否是动态页面,如果是静态则查看webcache,存在缓存直接返回缓存页面。如果是动态页面请求或者没有缓存的静态页面,节点则直接请求真实源,以便获取最新的内容。(注:此处对于动态页面的请求一般每次都会做回源操作)
查询是否使用了CDN,使用站长之家多地ping是一个很简单也很方便的方法,但我们还是要了解一下其原理
原理:多地ping还是利用dns解析,不同地点针对同一域名解析到的是不同IP,实际差异是在使用了不同的DNS服务器。向全球不同的DNS服务器发送查询请求,也是可以达到相同的效果的
whichcdn 一个CDN识别、检测的工具
研究了下源码,其判断CDN的方式主要通过以下几个方面
1、使用nslookup命令,查询dns解析记录
2、使用IP直接请求服务器,看服务器响应
3、查看http响应包,看是否带有cdn指纹
‘Server’: True,
‘X-CDN’: True,
‘x-cache’: True,
‘X-CDN-Forward’: True,
‘Fastly-Debug-Digest’: False
4、查询子域解析,看是否使用cdn
5、使用whois命令查询
一些常见的厂商
‘Cloudflare’: ‘Cloudflare - https://www.cloudflare.com’,
‘Incapsula’: ‘Incapsula - https://www.incapsula.com/’,
‘Cloudfront’: ‘Cloudfront - https://aws.amazon.com/cloudfront/’,
‘Akamai’: ‘Akamai - https://akamai.com’,
‘Airee’: ‘Airee - https://airee.international’,
‘CacheFly’: ‘CacheFly - https://www.cachefly.com/’,
‘EdgeCast’: ‘EdgeCast - https://verizondigitalmedia.com’,
‘MaxCDN’: ‘MaxCDN - https://www.maxcdn.com/’,
‘Beluga’: ‘BelugaCDN - https://belugacdn.com’,
‘Limelight’: ‘Limelight - https://www.limelight.com’,
‘Fastly’: ‘Fastly - https://www.fastly.com/’,
‘Myracloud’: ‘Myra - https://myracloud.com’,
‘msecnd.ne’: ‘Microsoft Azure - https://azure.microsoft.com/en-us/services/cdn/’,
‘Clever-cloud’: ‘Clever Cloud - https://www.clever-cloud.com/’
在xcdn脚本中,认为a记录超过一个,就存在CDN。
xcdn 一个绕过CDN找源IP的工具
研究了下源码,其主要通过以下方式来找源IP
1、配置文件泄露,找phpinfo文件
2、从C段找源IP
3、从mx记录中得到ip列表,尝试从mx记录中的c段中找真实ip
4、从CND接入商的接口查询真实IP
除了脚本中查找的方式,还可以使用以下方法
1、dns历史解析记录
2、利用ssl证书
3、利用网页中的内容和接口地址
4、利用注册认证邮件或其他服务器回复邮件找源IP
5、对CDN节点进行攻击
6、APP和小程序包中的接口
7、全网扫描开放端口80和443,然后再去跑源IP