APP下载

一种反向智能DNS 系统的设计与实现

2020-01-01江魁王飞张巍胡华周

中国教育网络 2019年11期
关键词:域名链路解析

文/江魁 王飞 张巍 胡华周

(作者单位为深圳大学)

由于园区网通常具有多运营商多出口的链路环境,为了访问位于不同运营商的网络资源,用户一般需要在客户端手动修改DNS 配置来实现出口选路功能,效率较为低下。传统的智能DNS 能够智能识别来访用户的IP 地址,然后返回一个用户所属运营商的服务器IP 地址供其访问,但这也只是在DNS 侧解决了来自不同运营商的用户高效访问园区网资源的需求,对于多出口园区网环境下,园区网用户高效访问互联网资源的需求则无能为力。为了解决这一问题,本文设计了一种适用于多出口园区网环境下的反向智能DNS 系统,并已在深圳大学校园网络环境下实现,可为各高校优化现有的DNS 系统起到一定的借鉴作用。

DNS 系统

DNS 是互联网中的一项核心服务,其主要功能是将域名和IP 地址之间进行转换。DNS 也是目前各高校园区网的重要基础设施,各高校基本上都建有自己的DNS 服务器,通过DHCP 方式将DNS 服务器IP 地址下发给园区网用户,用户直接访问互联网域名即可访问对应网站。

DNS 原理

DNS 的域名采用了层次树状结构的命名方法,通过遍布在全球的分布式域名服务器来完成域名到IP 地址的解析过程。

当应用程序需要将域名(以www.edu.cn 为例)解析为IP 地址时,该应用程序就会调用解析程序,把待解析的域名放在DNS 请求报文中,以UDP 用户数据报方式发送给本地域名服务器。本地域名服务器查看本地数据库或缓存中是否存在此域名的解析记录,如有对应的解析记录则将IP 地址放在回答报文中返回,否则将向根域名服务器进行查询。根域名服务器将对应顶级域名(.cn)服务器的IP 地址返回给本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器再返回对应授权域名(.edu.cn)服务器的IP 地址供本地域名服务器下一步进行查询。若授权域名服务器中存在对应记录,则给本地域名服务器返回解析后的IP 地址,否则报错。本地域名服务器再将结果返回给用户。

用户向本地域名服务器的查询为递归查询,本地域名服务器向根域名服务器的查询为迭代查询。递归查询指本地域名服务器无法解析用户所查询的域名,则本地服务器将以DNS 客户身份替用户向其他域名服务器继续查询;迭代查询是指域名服务器收到查询请求时,要么返回解析后的IP 地址,要么告知用户下一步应向哪个域名服务器进行查询,直到查到所需结果或返回报错信息为止。

现有DNS 系统的问题与不足

1.现有DNS 无法判断用户的来向,只能通过预先设置的若干转发服务器进行轮询式的转发,无法根据用户的访问请求设置不同条件,将其转发给不同的DNS 服务器。

2.现有DNS 也无法监控当前的链路情况,不能根据动态实时的链路负载情况进行DNS 的智能调度。

3.现有DNS 对查询的域名不具备识别能力,无法对恶意域名进行有效拦截。

4.现有DNS 的抗攻击性较差,容易受到攻击者的攻击。

5.现有DNS 不具备大数据分析的能力,无法对用户的DNS数据进行合理的行为分析。

反向智能DNS 系统架构

针对现有DNS 系统的问题与不足,本文设计了一种适用于多出口园区网的反向智能DNS 系统,并以深圳大学校园网为例,对其架构进行说明。

传统智能DNS 解决的问题是从外到内的最优路径访问,有别于传统的智能DNS,反向智能DNS 系统解决的问题是从园区网内到园区网外的多路优化访问。例如,深圳大学的网络结构具有多个链路出口,分别是教育网、电信、移动和联通。为了优化园区网络,保证校内用户安全、高效、可控地访问互联网资源,设计的反向智能DNS 系统架构如图1 所示。图中面向园区网所有用户进行DNS 数据分发的是第一层DNS,该DNS 是整个园区网访问互联网流量的入口,根据用户访问的网站不同,将其DNS请求转发到对应的第二层DNS 上,第二层DNS 对应不同运营商的DNS。比如教育网出口,深圳大学拥有自建的教育网DNS;电信出口使用了电信提供的DNS;联通出口则使用联通提供的DNS;移动出口使用移动提供的DNS。第一层DNS 可以对用户DNS 请求提供智能解析功能,通过预先设置的策略可以对域名解析得到的IP 地址进行优选排序,从而实现园区网内到园区网外的多路优化访问。如对于edu.cn 域名后缀的网站访问,可以通过第一层DNS 将其指向教育网DNS;对于国内公网的访问,可以根据链路的负载情况将其指向电信DNS 或移动DNS;对于国外网站和部分视频网站的访问则将其指向联通提供的DNS,最终将某个IP 优先返回给用户,从而实现用户最优上网的功能。

图1 分层DNS 系统架构

反向智能DNS 功能实现

图2 功能模块

反向智能DNS 从功能上又可以分为控制模块、安全模块、服务模块、存储模块和分析模块,如图2 所示。控制模块主要负责策略定制、转发控制以及流量调度,实现智能DNS 的选路功能以及对DNS 业务流量的负载均衡;安全模块可以实现恶意域名拦截、DDOS 流量攻击防护、DNS 隐蔽通道阻断,从而建立安全可靠的DNS 架构;服务模块主要由DNS 递归、缓存服务器构成,负责向园区网用户提供DNS 查询服务;存储模块负责收集DNS流量数据以及日志信息,由分析模块对收集到的数据进行多维度的数据挖掘。各模块之间相互协调,在实现不同功能的基础上构成一个完整的系统。用户的DNS 请求首先会由安全模块进行检查,之后由服务模块提供DNS 查询服务,若DNS 请求命中缓存则给用户直接返回结果,否则服务模块将根据控制模块的策略将DNS 递归请求转发至第二层DNS,第二层DNS 解析之后由服务模块将结果返回给用户,同时,存储模块采集DNS 的流量数据,分析模块可以对流量数据进行实时或事后的多维分析。下面重点对反向智能DNS 系统相关功能模块实现关键技术进行说明。

DNS 数据重定向

默认情况下,校内所有用户使用第一层DNS 进行查询,如果用户能够手动修改本机的DNS 配置,使用指定的DNS 服务器进行查询,就可以绕过智能DNS 的管控,因此需要在网络流量出口处部署一台重定向设备,对用户的DNS 数据进行转发,将所有的DNS 请求报文重定向到指定的校内第一层DNS 上。

DNS 重定向设备会记录相关的会话数据,对接收的DNS 请求报文进行基本包的安全检查,解析出使用的DNS 服务器IP 地址,若IP 地址不在设定的白名单列表内,将其重定向至校内第一层DNS 上;若IP 地在白名单列表内,则不需要对其进行重定向,重定向设备收到DNS 响应报文后,将查询结果返回给用户。

智能解析

反向智能DNS 的构建主要是为了提高园区网用户访问互联网资源的效率,因此,智能解析的选路与调度功能是反向智能DNS 的核心。

智能解析最基本的功能是可以智能判断访问网站的用户,然后将其DNS 请求转发到相应运营商的DNS 服务器上,实现DNS的选路功能。除此之外,智能解析也支持策略定制,基于不同域名,可以选择不同链路出口的DNS 服务器,例如对于edu.cn 域名后缀的访问将使用教育网DNS;基于不同的用户群体,可以分配不同的出口DNS,对于校内使用不同运营商的用户群体,将其DNS 请求指向对应运营商的DNS;对于拥有多个IP 地址的域名,可以根据网络状况进行优选排序,将某个IP 优先返回给用户;当某个出口链路负载较大时,可以根据策略将用户的DNS 请求转发至其他链路出口,防止链路拥塞影响用户的正常上网;通过多种策略组合以及差异化的流量调度,以此来实现智能DNS 的选路与调度功能。

恶意域名拦截

智能DNS 服务器收到DNS 查询请求之后,会提取其中的关键信息,如查询域名、目标DNS 服务器IP 地址等,通过与互联网公司合作,获取安全情报库,与情报库中的记录进行对比,如果用户访问的域名在情报库中属于恶意域名,或者用户使用的DNS 服务器IP 地址在情报库中属于恶意IP 地址,一律将用户重定向至特定网页,告知用户其电脑可能受到恶意程序的感染,建议其安装终端防护软件进行清除。

DDOS 防护

DNS 是园区网最为重要的网络基础设施之一,目前针对DNS 服务器的分布式拒绝服务(Distributed denial of service)攻击是比较流行的一种方式。因此,一个可靠的DNS 架构如果没有高性能的抗DDOS 攻击能力就不能称其为健壮的架构。

针对园区网DNS 的DDOS 攻击通常利用多台机器对DNS 服务器发起大量的查询请求,从而消耗服务器的资源,使得正常用户的合法请求得不到响应。反向智能DNS 可以通过判断每个源IP 的请求是否超过设定的阈值、每个域名的请求是否超过设定的阈值,对相应的IP 地址和域名进行限速,从而对每个IP 地址每秒访问DNS 的并发请求量以及每个域名每秒并发访问量进行有效地控制,对于前缀变化的泛域递归攻击可以采取泛域限速的措施,以此来提升DNS 的抗攻击能力。通过智能DNS 的安全防护模块,使用多层级限速的过滤技术,可以有效过滤DDOS 攻击流量,最大限度地保证正常用户的DNS 访问。

DNS 隐蔽通道拦截

网络隐蔽通道是攻击者绕过网络安全策略进行数据传输的重要途径,而DNS 则是实现隐蔽通道的常用手段。由于DNS 是互联网中关键的基础服务之一,网络管理策略通常对DNS 的数据作少量限制或不作限制,因此利用DNS 进行隐蔽通讯的方法可以绕过防火墙的策略。可以利用DNS 查询过程建立隐蔽通道,实现数据传输,如图3 所示。DNS 隐蔽通道由客户端和服务端两部分组成,客户端程序将通信数据通过加密或编码封装在DNS 请求报文的域名字段内,利用DNS 的查询过程,通过多级DNS 服务器间的层层转发,最后分发给DNS 授权服务器,即隐蔽通道的服务端。服务端程序解析对应的请求报文,将通信数据封装在DNS 响应报文内,再通过DNS 服务器返回给客户端。在这个过程中,客户端与服务器之间并没有直接通信,而是利用多级DNS 服务器对通信数据进行转发达到了通信的目的。由此可知,建立DNS 隧道需要注册一个互联网域名并拥有对应的DNS 授权服务器,以此确保客户端经过封装后的DNS 查询请求能够分发到DNS 授权服务器上。

由于DNS 隐蔽通道经常被攻击者用于僵尸网络的通信以及APT(Advanced Persistent Threat)攻击,因此需要对隐蔽通道进行拦截,以此来提升园区网的安全性,避免攻击者利用DNS 隐蔽通道对园区网造成危害。

图3 DNS 隐蔽通道架构

图4 数据分析功能层次结构

为了尽可能的传输更多的数据,在真实网络环境中,DNS隐蔽通道一般会使用TXT、ANY 记录类型来进行DNS 查询。智能DNS 可以对TXT、ANY 类型的DNS 查询进行限速或禁用这两种记录类型,以此来阻断DNS 隐蔽通道的建立。由于用户在使用DNS 的过程中几乎不会用到TXT、ANY 这两种查询类型,所以禁用这两种类型的DNS 查询对用户基本不会产生影响,同时,这种方法也可以阻断大部分DNS 隐蔽通道的建立。

大数据分析

DNS 是整个互联网流量的入口,拥有DNS 的访问数据就等于拥有了用户上网行为的大数据,通过对DNS 大数据进行数据挖掘并分析,可以从中发现互联网用户的网络行为,为优化园区网结构、提高互联网访问效率提供帮助。

DNS 数据挖掘、多维分析在物理部署上由流量采集与存储、多维数据分析两大部分组成。对DNS 流量的采集通过网络设备上的流量镜像实现。镜像设备将网络中的域名流量数据复制下来,通过网络链路传送给存储系统,由存储系统进行相应处理后再做存储。数据分析系统由分析服务器阵列构成,主要负责读取存储平台中的流量数据,并进行有关的多种分析,其层次结构如图4 所示。

数据分析可以从IP 地址、域名、用户访问量、区域等多个维度进行分类和计算,例如对用户请求域名的TopN 及对应域名请求数最多的用户源IP 进行统计分类,并将数据结果以报表形式呈现出来。

DNS 是用户访问互联网的入口,无论对于网络运营商、网络管理者还是攻击者,DNS 都是非常重要的网络基础设施,也是相对薄弱的网络基础设施。适用于多出口园区网的反向智能DNS系统,不仅能解决互联网的多路优化访问问题,使得用户能更加高效、安全、可控地访问互联网资源,提升DNS 系统自身的安全性,也便于网络管理者更为有效地对网络进行分析与管理,可为园区网建设与管理提供借鉴与参考。

猜你喜欢

域名链路解析
天空地一体化网络多中继链路自适应调度技术
三角函数解析式中ω的几种求法
基于星间链路的导航卫星时间自主恢复策略
《江苏教育研究》官方网站域名变更公告
睡梦解析仪
电竞初解析
对称巧用解析妙解
基于3G的VPDN技术在高速公路备份链路中的应用
顶级域名争夺战:ICANN放出1930个通用顶级域名,申请者有上千家