1. 引言
随着互联网技术和多媒体技术的不断发展,图像、视频、音频等服务在互联网中的占比重越来越大,并且随着互联网用户持续增加,网络访问距离过长,导致网络负载迅速增加,从而使用户的访问质量受到严重影响 [1] [2] [3] [4] [5]。
内容分发网络技术(Content Delivery Network)是新兴的网络加速技术,它采用分布式缓存、负载均衡、流量工程和客户端重定向等技术,通过建立若干加速节点,尽量将用户互联网请求的内容存储到距离用户“最后一公里”的边缘节点上,在互联网上构筑一个地理上分布的内容分送网络,将信息资源向网络边缘推近,用户可以在“最近”的位置快速访问到所需的内容,很大程度上提高了终端用户的访问速度和服务质量 [6] [7] [8]。
通过对CDN域名的监测,可以减少网络上不良行为、较少对国家网络安全有危害的风险。本文通过对CDN域名检测技术的研究,采用基于J48决策树算法对CDN域名的分类检测,构建CDN基础资源库,对基于域名的网络安全分析将起到积极的促进作用。
2. CDN原理及组成
2.1. 概念
1) 加速域名
加速域名即需要使用CDN加速的域名。域名是一组服务器的地址,可以是网站、电子邮件、FTP等。在CDN服务中加速域名通常指域名。
2) 服务域名
域名接入CDN服务后,CDN将分配一个CNAME域名,该CNAME域名的形式例如为*.kunlun.com,自己的加速域名指向*.kunlun.com的域名。记录生效后,域名解析的工作就正式转向CDN服务,该域名所有的请求都将转向CDN节点,达到加速效果。
3) 边缘节点
在CDN服务中,边缘节点、CDN节点、Cache节点、缓存节点、加速节点、节点等都指CDN边缘节点。边缘节点是相对于网络的复杂结构而提出的一个概念,指与最终接入的用户之间具有较少中间环节的网络节点,对最终接入用户有相对于源站而言更好的响应能力和连接速度。其作用是将访问量较大的内容缓存到边缘节点的服务器上,以此来提高网终端用户访问网站内容的速度和质量。
4) CNAME记录
CNAME记录也是一种和A记录功能相似的域名记录方式,也叫别名记录,用来把域名解析到别的域名上。常用于mail邮箱解析和CDN加速解析,特别是CDN加速解析是现在CNAME记录最大的用途了。
下表演示CDN域名解析过程,https://www.jd.com经过CDN加速,通过两次CNAME解析,最终通过A记录解析到固定IP。表1为CDN域名解析过程。

Table 1. CDN domain name resolution process
表1. CDN域名解析过程
5) DNS
DNS (Domain Name System),即域名解析服务。DNS的作用:把域名转换成为网络可以识别的IP地址。人们习惯记忆域名,但机器间互相只识别IP地址。域名与IP地址之间是一一对应的,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程自动进行。比如:上网时输入的https://www.baidu.com会自动转换成为220.181.112.143。
2.2. CDN技术原理
CDN网络主要通过DNS机制进行资源定位。
CDN网络节点由一系列分布在Internet上的节点组成,这些CDN节点位于网络的边缘,分布在不同的地理位置。在正常情况下(无CDN),用户的DNS请求通过LDNS (本地DNS)及ADNS (权威DNS)解析出域名对应的IP地址,实现对资源的访问。
引入CDN后,将修改用户目标域名对应的IP,将其引导到其新部署的网络边缘节点上。一般实现是通过增加CDNS网元,即CDN运营商DNS解析服务器。修改用户的LDNS,将用户未命中请求首先引导到CDNS,由CDNS分配最优CDN节点并将地址返回用户。
采用各种Cache服务器(缓存设备),并将它们分布到用户访问相对集中的地区或网络中,利用全局负载均衡技术(Global Server Load Balance),将用户访问指向离用户最近、工作正常Cache服务器上,由Cache服务器直接响应用户的请求。当用户访问已加入CDN服务的网站时,首先通过DNS重定向技术确定最接近用户的最佳CDN节点,同时将用户的请求指向该节点。当用户请求到达指定节点时,CDN的服务器(节点上的高速缓存)负责将用户请求的内容提供给用户。如果Cache服务器中没有用户要访问的内容,它便根据配置自动到原服务器中抓取相应的页面提供给用户。
CDN是一种组合技术,包括源站、缓存服务器、智能DNS、用户客户端等几个部分。图1所示为CDN的全局结构图。

Figure 1. CDN global structure diagram
图1. CDN全局结构图
源站为发布内容的原始站点,可以新增、删除和更改网站的文件。缓存服务器抓取的对象也全部来自于源站。采用CDN技术后源站的压力会变得很小,为了提高可用性,将源站部署成负载均衡集群。智能CDN实现用户访问的转向功能,是整个CDN的核心,它根据用户访问的来源,将其访问请求转向到离用户较近或较合适的缓存服务器。
实现智能DNS的一种技术是BindView,在本文中,使用电信、联通、移动网3个IP地址列表,每个列表关联独立的Bind视图,共有3个视图。
Varnish作为缓存服务器,当用户发起访问时,它的访问请求被智能DNS定位到离它较近的缓存服务器,如果访问所需的内容没有被缓存,则缓存服务器向邻近的缓存服务器或直接向源站抓取内容,然后再返还给用户。如果用户所请求的内容刚好在缓存里面,则直接把内容返还给用户。为保证缓存服务本身的高可用性,每个点的服务器都以负载均衡集群的方式存在。
2.2. CDN工作流程
当用户访问已经加入CDN服务的网站时,首先通过DNS重定向技术确定最接近用户的最佳CDN节点,同时将用户的请求指向该节点。当用户的请求到达指定节点时,CDN的服务器负责将用户请求的内容提供给用户。
用户访问的基本流程如下:
1) 用户在自己的浏览器中输入要访问的网站域名;
2) 浏览器向本地域名解析系统(DNS)请求对该域名的解析;
3) 本地DNS将请求发到网站的主DNS,主DNS再将域名解析请求转发到其他DNS;
4) DNS根据路由策略确定当时最适当的CDN节点,并将解析的结果(IP地址)发给用户;
5) 用户向给定的CDN节点请求相应网站的内容;
6) CDN节点中的服务器负责响应用户的请求,提供所需的内容。
3. 解决方案
CDN服务通过大量CDN加速节点缓存图片、静态资源等信息。CDN节点由负载均衡设备和高速缓存服务器两部分组成。负载均衡设备负责每个节点中各个Cache的负载均衡,保证节点的工作效率及收集节点与周围环境的信息,保持与全局负载DNS的通信,实现整个系统的负载均衡。高速缓存服务器就像个靠近用户的网站服务器,响应本地用户的访问请求,负责存储客户网站的大量信息 [9] [10] [11] [12] [13]。
网站若使用CDN服务,必定会将网站静态资源缓存到各地CDN加速节点中,在不同地点访问网站会解析到不同的IP地址。
整体方案架构图如图2所示。

Figure 2. CDN domain detection deployment diagram
图2. CDN域名检测部署图
使用域名主动探测的方式,在全国各省部署不同运营商的探测节点,有针对性的探测域名,获取域名解析记录,根据解析记录(cname)进行统计分析,分析出CDN企业特征串,录入CDN特征串库。
探测域名汇总服务器对探测机的探测域名解析记录进行记录,将过滤后的域名记录存入探测域名数据库。
CDN分析服务器,网络爬取的CDN特征串与探测分析的CDN特征串,组成CDN特征串库。并定期针对探测域名库的CDN域名进行分析,通过DNS解析的CNAME记录是否包含特征串进行标记,以此判断此域名是否为CDN域名。若为CDN域名,将CDN域名、CDN加速节点存入CDN基础资源库中。
CDN特征串依赖于网络爬取的CDN特征串和通过主动探测分析的CDN特征串,是一个循环迭代的过程。其中CDN特征串的提取,采用基于决策树算法的技术实现。具体的介绍如下文所述。
3.1. 域名探测
域名探测子系统由探测机、探测汇聚服务器、CDN探测数据库组成。
域名探测子系统在全国各省部署探测节点,并且根据运营商的不同进行针对性的域名探测。对探测节点返回的探测结果进行返回汇聚到汇聚机,通过汇聚级对其整合,返回准确、完整的探测结果。将结果存入CDN域名库中。
图3所示为域名探测系统的部署图。

Figure 3. Deployment diagram of domain name detection system
图3. 域名探测系统的部署图
域名探测子系统获取对域名探测解析的记录值,需要实时、长期的对被探测域名的解析。从而获取大量的原始数据,作为提取特征串的输入。
3.2. CDN企业特征串分析
对CDN探测数据库中的数据进行数据分析,针对域名的CNAME记录进行分析。提取CDN特征串特征,使用基于决策树的方法判定是否属于CDN特征串。
1) CDN域名特征
针对域名的解析记录与统计的思想,把CDN域名的特征总结分为6个属性,特征域名对应的加速域名频次(SpeedNum)、特征域名的三级域名频次(ThreeNum)、特征域名的边缘节点频次(IPNum)、特征域名是否包含cdn (CdnString)、是否使用CDN服务(CdnService)、顶级域是否为通用顶级域名(TopName)。采用这6个属性对CDN域名的特征进行刻画。
2) 决策树训练过程

Figure 4. Decision tree overall training process diagram
图4. 决策树总体训练过程图
决策树总体训练过程如图4所示:
a) 数据预处理,对数据源进行数据预处理,因CDN必定使用CNAME,所以只提取CNAME记录。并且对CNAME记录进行去重。
b) 设S是s个数据样本的集合。假定类标号属性具有m个不同值,定义m个不同类
。设si是类Ci中的样本数。对一个给定的样本分类、所需要的期望信息如下:
(1)
其中pi是任意样本属于Ci的概率。
c) 设属性A具有v个不同值
。用属性A将S划分为v个子集
,设Sij是子集Sj中类Ci的样本数。由A划分成子集的熵表示如下
(2)
d) 在A分枝将获得的信息增益标识为:
(3)
e) 用信息增益率进行属性选择,信息增益率定义为:
(4)
分裂信息SplitInfo (S, A)代表了按照属性A分裂样本集S的广度和均匀性。
3) 决策树算法的种类选择
目前决策树的典型算法有ID3 [14]、C4.5 [15]、J48 [16]、CART [17] 等,不同的决策树会影响系统判断的准确度。首先对建立好的训练集进行预处理,优化属性。之后对训练集进行分类回归。采用留余法,将数据集分成10份,轮流将其中的9分做为训练数据、1分做为测试数据进行试验。每次试验都会得到相应的正确率,将10次结果正确率的平均值做为对算法精度的估计。运用不同的决策树算法进行训练,根据设置的实例情况,共选择了5种决策树进行对比分析,试验结果如图5所示,结果表明,J48决策树算法的正确率最高,所选属性集为最优的属性组合,其正确率为93.38%。

Figure 5. Comparison chart of correct rate of various decision trees
图5. 各类决策树正确率比对图
3.3. CDN域名分析
探测系统实时对域名进行探测,数据库中更新域名解析结果,结合CDN企业特征串、CNAME记录进行CDN域名分析。若CNAME记录符合CDN特征串,则此域名经过了CDN加速,并记录此CDN加速节点。
CDN域名分析流程图如图6所示。

Figure 6. CDN domain name analysis flowchart
图6. CDN域名分析流程图
通过特征串分析库提供的CDN特征串,对探测发现的域名进行过滤、分析,将最终的分析结果,CDN域名、CDN加速节点存入CDN基础资源库中(CDN域名数据库、CDN加速节点数据库)。
4. 实验结果与分析
4.1. 实验分析
本文为了训练和评估决策树模型,测试集选取网络收集域名1000W,并通过域名探测系统针域名进行全国多节点探测,获得域名解析记录。该记录包含A记录、CNAME记录、MX记录等。通过已知CDN特征串确认CDN域名。加速域名较少、边缘节点IP较少等确认为非CDN,从而进行模型建立。表2是采集的部分CDN特征串。

Table 2. Known CDN enterprise characteristic string
表2. 已知CDN企业特征串
构建数据集分别针对特征域名对应的加速域名频次(SpeedNum)和特征域名的边缘节点频次(IPNum)的阈值对准确度的影响。
1) 加速域名频次对准确率的影响
分析特征域名对应的加速域名频次阈值依次在50至2000对CDN域名准确度的影响,如图7所示。

Figure 7. The impact of accelerated domain name frequency on accuracy
图7. 加速域名频次对准确率的影响
从表中开看出准确率随着特征域名对应的加速域名频次阈值增加而增加,当阈值为800左右时,准确率最高,达到了79.80%。而在阈值为100以下时,准确率非常的低。
说明如果此特征串为CDN特征串,则有很多加速域名会指向此特征域名。当指向的特征域名比较少的时候,大概率不是CDN特征域名。
2) 边缘节点频次对准确率的影响
分析特征域名的边缘节点频次阈值依次在10至200对CDN域名准确度的影响,如图8所示。

Figure 8. The influence of edge node frequency on accuracy
图8. 边缘节点频次对准确率的影响
从表中开看出准确率随着特征域名对应的边缘节点频次阈值增加而增加,当阈值为90左右时,准确率最高,在10以下与200以上的准确率比较低,达到40%以下。
说明如果此特征串为CDN特征串,则此特征域名的解析结果(边缘节点)大概率存在多个,全国多个CDN加速节点为其提供CDN加速服务。
4.2. 评估指标
为量化评估决策树模型针对域名测是否为CDN的检测能力。本文采用如下2个评估指标:
1) 准确率(Precision):是分类结果中的某类别判断正确的文档中有多少是真正的正样本的比例,是针对预测结果而言的,衡量的是分类系统的查准率。
2) 召回率(Recall):是原来某个类别的文本的分类结果中有多少被预测为正确的比例,是针对原来样本而言的,衡量的是分类系统的查全率。
4.3 结果分析
取CDN域名主要影响特征的特征域名对应的加速域名频次N、边缘节点频次K做为变量分别根据准确率、召回率做比较。根据不同的N、K值的检测结果如表3所示。

Table 3. Accuracy and recall rates of different combinations of N and K values
表3. 不同N、K值组合的准确率、召回率
从表3中可以分析得出,加速域名频次N和边缘节点频次K值的不同组合,对CDN准确率、召回率的影响较大,当N = 1000,K = 80时,准确率达到98.8%,召回率达到98.1%。J48的决策树分类模型在该参数下达到最优解。
针对探测获取的域名进行分析,通过本研究方法经过近两个月的分析。目前收录CDN企业195家,CDN特征串367个。部分特征串如表4所示。

Table 4. Part of enterprise characteristic string
表4. 部分企业特征串
表3中的特征串,可以作为CDN特征串,构建CDN基础资源库的组成部分。
5. 结论
域名系统(Domain Name System)将便于用户识别的网络资源域名转换为机器可识别的IP地址,是十分重要的网络基础设施,是互联网的基石。内容分送网络技术是新兴的网络加速技术,可以避开互联网上影响数据传输速度和稳定性的瓶颈和环节,使内容传输更快、更稳定 [18] [19] [20] [21]。识别CDN域名在域名分析领域有着十分重要的作用。针对域名管制发挥着重要的作用,针对目前国内域名混乱使用CDN服务的情况有针对性的辅助作用,并提高对CDN厂商的监管力度。本文通过采用基于J48决策树的CDN检测技术,构建CDN基础资源库,从而高效的识别和检测CDN域名。为基于CDN技术的网络安全应用和管理提供了重要的依据,具有广泛的应用前景。