基于私有云集群部署开源智能DNS的创新与实践*
2019-06-03蒋国明黄文胜柳晓佳
蒋国明,黄文胜,柳晓佳
(浙江理工大学 信息化办公室,浙江 杭州310018)
一、引言
域名系统(Domain Name System,DNS)是互联网的一项基本服务。它以分布式数据库的方式完成域名和IP地址相互映射关系的定义,使得用户能更方便地访问互联网,DNS使用TCP和UDP 53端口提供域名解析服务。DNS系统中,常见的资源记录类型主要有:
(1)主机记录(A 记录):在 RFC 1035 中定义,A 记录是用于域名解析的重要记录,它将某个特定的主机名映射到对应主机的IPv4地址上。
(2)别名记录(CNAME 记录):在 RFC 1035中定义,CNAME记录用于将某个别名指向某个A记录上,如此就无需再为某个新的域名再创建一条新的A记录。
(3)IPv6 主机记录(AAAA 记录):在 RFC 3596 中定义,与A记录类似,用于将某个特定的主机名映射到对应主机的IPv6地址上。
DNS系统可由各种DNS软件实现,例如BIND(Berkeley Internet Name Domain)就是一款使用比较广泛的DNS开源软件。DNS有两种查询方式:递归查询和迭代查询。DNS客户端设置的DNS服务器一般采用递归查询方式,它负责全权处理客户端的DNS查询请求,直到返回最终的解析结果。DNS服务器之间一般采用迭代查询方式。
校园网建设中,很多高校DNS一般会采用两种部署模式:
(1)权威DNS和递归DNS统一部署在同一台DNS服务器上,该服务器既提供校内本地域名的权威解析,又提供互联网域名的递归解析报文转发工作。
(2)权威DNS和递归DNS分别部署在两台DNS服务器上,一台服务器提供校内本地域名的权威解析,另一台服务器提供互联网域名的递归解析报文转发工作。
这两种DNS的架构存在以下缺陷:
(1)DNS服务器存在单点故障和服务不稳定问题。
(2)DNS服务器存在域名解析服务瓶颈。
(3)学校一般有多互联网线路出口,DNS的架构不合理将导致域名解析结果不是最优,用户访问网页速度慢,出口网络流量负载不均衡。
(4)当校园的某个网络出口出现故障时,某些用户的域名解析服务可能会失败。
(5)DNS一般部署在实体服务器上,不方便后期的系统配置迁移和快速部署。
二、系统方案
针对上述现状及问题,我校以私有云集群部署开源智能DNS,并配套建设互联网Squid反向代理系统,提供并实践了一套相对完整的解决方案:
(1)校外用户访问学校网站。建设开源Freebsd Bind9多视图(View)的DNS,并结合互联网反向代理系统,提供智能DNS解析和多站点的网站发布,通过DNS和反向代理的联动,优化了内网用户及学校网站的互联网访问速度。
(2)校内用户访问互联网网站。采用主备DNS,避免单点故障;采用多台DNS集群转发减轻域名解析的压力,当校内某运营商线路出现故障时,可将DNS转发请求切换到其他备用线路;通过智能DNS解析,引导校内不同源IP网段用户访问互联网网站时从电信、联通、移动、教科网等链路合理分流,出口网络流量实现负载均衡。同时一旦检测到某运营商线路的DNS解析异常,可将该线路的域名解析切换到其他运营商的DNS服务器上。
(3)将权威和递归DNS在Vmware Esxi私有云上集群部署,提供系统冗余,提升服务能力,同时便于系统迁移、快速部署和后台管理等。
该系统网络部署拓扑如图1所示。
图1 基于私有云集群部署开源智能DNS网络拓扑图
三、系统设计
在架构上,用户终端通过DHCP的方式统一自动设置两个递归DNS服务器(一主一备),同时DNS服务器采用私有云集群部署来提高域名解析的服务能力,把DNS查询请求由单台服务器转发给多台DNS转发器。
图2是主DNS的系统架构图,DNS1是主DNS的发布IP,DNS5为主域权威服务器,本域的A记录配置在该服务器上,其余为外域递归解析转发服务器,均采用开源Freebsd Bind9多视图的智能DNS解析机制做系统配置。
下面结合图2简要阐述该系统的工作过程:
1.递归解析——校内用户访问网站
图2 基于私有云集群部署开源智能DNS架构图
(1)当学校用户访问网站时,用户把域名解析请求发送到DNS1,DNS1根据访问者的源IP地址和事先设定的视图转发策略,把解析请求自动发送到对应的DNS转发服务器。比如假定用户是联通客户,则DNS1收到用户DNS请求后,会把请求自动转发到联通链路的DNS3转发服务器,通过DNS3去递归解析域名并返回结果(下面继续以该例子描述转发过程)。
(2)DNS3转发服务器收到域名解析请求后,若判定是请求本地域,则由DNS3转发至权威DNS5中获取A记录并返回给用户。
(3)若判定是非请求本地域,则将请求转发到相应View对应的外网DNS(DNS-联通),通过该服务器去递归解析域名并最终返回结果给用户。
2.权威解析——校外用户访问学校对外网站
当校外用户访问学校对外网站时,DNS服务器根据访问者的源IP地址和事先设定的视图转发策略,智能返回访问源IP所归属互联网服务提供商(Internet Service Provider,ISP)的反向代理服务器地址给客户端。反向代理服务器根据客户端的请求,向内网父服务器(Parent Server)转发服务请求并获取数据后返回给客户端。客户端只知道反向代理的IP地址,而不清楚在代理服务器后面的内网父服务器的存在,这将有效增强网络的安全性,相当于在内外网络之间构筑起一道保护内部网络安全的防火墙。代理服务器的防火墙功能将校园网内的服务器/主机保护起来,有效降低校外用户攻击校园内部网络的几率。
例如,校外用户访问一个学校的对外网站,通过DNS的轮询技术,我们将客户端的请求分发给其中一台Squid反向代理服务器处理。若该服务器已缓存了用户的请求资源,则将请求的资源直接返回给用户,否则该服务器将没有缓存的请求根据已设定的规则发送给父服务器处理。
四、系统配置
首先,在Freebsd Bind9的DNS配置中,实现DNS多视图技术无需增加任何专用设备,只需通过对DNS配置进行深入优化,主要配置思路如下:①在Bind9中,想根据不同请求的源IP段分別响应并转发至不同线路的DNS解析,可通过配置多view来响应同一域名的智能解析请求。②在各个view的match-clients中,定义需匹配的客户端源IP网段。为提高配置效率,引入访问控制列表(Access Control Lists,ACL)函数实现集中定义,该函数可供全局引用。配置文件中的网络地址以十进制点分法结合子网掩码的格式定义,如某个B类IPv4地址定义为:x.x.0.0/16,在每个段落中配置该相应的转发DNS服务器IP。
图2中,联通客户通过DNS1多view机制向DNS3转发域名解析请求的相关配置代码示例:
Squid反向代理“squid.conf”这个配置文件在“/user/local/squid/etc/”目录下。互联网用户从客户端发过来的解析请求,如果是请求本地域name1.*.edu.cn,则Squid向内网父服务器IP地址a.b.c.d的某个TCP端口发送连接请求(访问网站服务一般设置为TCP 80端口)。
同时设定不同域名转发到不同的cache_peer上,如果不做该项配置,不同的域名请求可能被转发到同一台服务器/端口上。name=name1是给cache_peer设置一个别名,cache_peer_access name1 allow all为设置访问权限,这里权限all为允许所有外部客户端访问name1。
配置代码示例:
五、系统测试
该系统经过一段时间的测试和试运行,运行基本稳定,用户通过外网访问校园网站的速度得到明显提升,有效引导了内网用户网页访问量的合理分流,基本实现了不同运营商出口网络流量的负载均衡,提升了学校互联网出口带宽的使用效益。
图3为校内DNS请求平衡转发到电信、联通线路时的联通流量图。图4为校内DNS请求仅转发到电信单线路时的联通流量图。在实验时,当校内用户全部切换成电信单链路做DNS解析时,学校联通出口的流量立马下降约50%,实验说明智能DNS服务器集群部署对出口流量的引导作用相当显著。
图3 校内DNS请求平衡转发到电信、联通线路时的联通流量图
图4 校内DNS请求仅转发到电信单线路时的联通流量图
六、结束语
该系统自2014年正式上线运行以来,为全校近30000名师生提供不间断的域名解析服务,基本做到了“零故障”,且对出口流量的引导效果显著。该系统按照私有云服务的架构建设,使用了10台(2套,每套5台)不同功能DNS虚拟服务器的集群部署,确保了每个功能的DNS服务器都双机主备运行,相对更加安全可靠。本设计方案在不需要额外增加硬件成本的前提下,较好地解决了校内网络和校外网络互相访问的速度和流量平衡问题,对智慧校园的建设具有一定的实用价值。
该系统的架构与创新性、智慧性主要体现在:
(1)增强了网络安全性能。将学校权威和递归DNS服务器分布式部署,并在出口边界路由器和权威DNS服务器上配置安全策略,有效提升了权威DNS数据的安全。
(2)提升了用户使用体验。校外访问学校网站,采用DNS多视图负载均衡的解析机制,根据访问源的IP地址,将域名解析到学校架设在不同出口的反向代理服务器上,实现从不同ISP来的终端访问我校应用服务器时能实现快速访问。
(3)优化了出口流量分布。校内访问互联网网站,采用DNS集群分布式转发的解析机制,在不同出口上架设多个DNS代理解析服务器,通过对目标网址的智能DNS解析,优化学校各ISP出口流量的分布,从而优化访问互联网的速度。
(4)有效解决了单点故障。一旦检测到某运营商线路的DNS解析异常,可将该线路的域名解析切换到其他运营商的DNS服务器上,第一时间恢复网络正常使用。
目前该系统的配置和维护为Linux命令行模式,不方便配置和管理,后续计划在系统图形化界面管理方面做有效提升,适时启动DNS可视化配置界面的定制开发项目。