返回首页
当前位置: 主页 > 其他教程 > 电脑教程 >

一种双栈环境下的DNS可靠性增强方法

时间:2018-03-25 00:13来源:Office教程学习网 www.office68.com编辑:麦田守望者

域名系统(DNS)实现域名和IP地址相互映射与解析的功能,是互联网上最关键的核心基础设施之一。互联网上的应用和业务都需要DNS的正常运行,然而,DNS在协议设计、软件实现和安全机制等方面存在着许多漏洞和弱点[1]。近年来,DNS故障和安全事件不断频繁出现,对互联网正常访问产生了严重影响。例如,16年9月微软Azure云服务DNS故障、10月物联网僵尸网络(Botnet)攻击造成Dyn DNS故障等。DNS故障会造成网络和业务大规模访问异常,具有影响范围大、经济损失高、社会影响差等特点,因此,研究提高DNS服务的可靠性具有十分重要的意义。

  目前,研究者对如何增强DNS的可靠性已经进行了一定的研究,提出了许多DNS系统的可靠性设计和实现方案。文献[2]基于Mysql设计并实现了一种高可靠性缓存DNS系统,从服务侧提高DNS系统的可靠性;文献[3]注意到DNS用户侧存在的配置问题,提出了CoDNS的设计和实现方案,从用户侧提高DNS系统的可靠性。本文首先对DNS服务侧和用户侧存在的可靠性问题进行分析,通过实际调研发现用户侧的DNS配置是造成DNS可靠性问题的原因之一。在此基础上,提出使用IPv6协议的地址自动配置机制,为用户终端无感知的增加DNSv6服务器的配置,这样在用户配置的DNSv4服务器出现可靠性问题时,仍然可以使用新增加的DNSv6服务器进行解析,有效提高DNS服务的可靠性。本文提出的方法能够充分发挥IPv4/IPv6双栈校园网的优势,相比现有的DNS服务可靠性增强方法简单灵活,在可行性和部署成本上具有一定的优势。

  2、DNS可靠性问题

  DNS是一个典型的分布式系统,系统结构如图1所示,主要包含用户侧的解析器、服务侧的递归DNS服务器、DNS服务云(包含根、顶级和权威DNS服务器)等。可以看出,DNS服务的可靠性同时依赖于服务侧和用户侧的正确配置。本文分别从服务侧和用户侧来分析DNS服务可能存在的可靠性问题及其原因。

  图1 DNS系统结构示意图

  2.1服务侧的可靠性

  DNS作为一种IT服务,面临着一般IT服务的可靠性问题,其可靠性首先依赖于系统可靠性,包括服务器硬件、操作系统和网络等因素。同时,DNS也受到自身在协议设计、软件实现和运行操作等方面可靠性的影响。在目前多出口、复杂业务的校园网环境中,DNS承担的任务越来越多,配置也日趋复杂,容易受到错误配置的影响[4]。而且,针对DNS的网络攻击事件也越来越频繁,DDoS、劫持等攻击事件不断出现,这也会严重影响DNS的可靠运行[5]。表1对服务侧影响DNS可靠性的具体因素进行了分类总结。

  表1 DNS服务侧可靠性影响因素

 

类别

具体因素

DNS可靠性

网络攻击

DDoS、污染、劫持等

 

软件配置

无效代理、冗余缩减、

多出口策略

 

软件实现

软件漏洞、标准一致性

系统可靠性

网络

延时、丢包率

 

操作系统

系统设置、负载过重

 

硬件

服务器硬件故障

 

  2.2用户侧的可靠性

  用户侧的DNS配置有动态配置(DHCP)和手动配置两种方法,可以设置两个或以上DNS服务器来增强DNS服务的可靠性。然而,实际调查发现,在手动设置IPv4地址时,即使系统可以同时设置两个DNS服务器,许多用户出于简单考虑却仅设置一个DNS服务器。在动态配置时,DHCP服务器的配置文件中也存在仅设置一个DNS服务器的现象。由于DNS服务侧的不可靠性,当用户侧仅设置一个DNS服务器时,用户的DNS服务出现可靠性问题的概率大为增加。而且,即使用户配置了两个DNS服务器,由于DNS服务侧存在冗余缩减的配置错误问题[4],DNS服务的可靠性仍不是很高。

  对用户侧DNS配置的调研还发现,部分用户配置了公共DNS服务器(如谷歌DNS服务器等)。通过对30分钟内校园网出口流量进行分析,发现约有220个不同的IP地址对谷歌DNS服务器发起过DNS解析请求。校园网用户配置公共DNS服务器,既会对DNS的解析性能产生影响,也会影响依赖DNS服务的流量调度策略(如多出口、CDN等)[6]。

  3、DNS可靠性增强方法

  针对用户侧DNS配置存在的可靠性问题,需要在不手动修改用户侧配置的情况下,为用户配置额外的DNS服务器,来提高DNS服务的可靠性。本文基于IPv6协议的自动配置特性,提出在用户侧自动增加DNSv6服务器的配置,实现DNS服务的冗余配置。这样,在用户配置的DNS服务器出现问题时,能够使用自动增加的DNSv6服务器进行域名解析,确保网络的正常访问。

  3.1 方法设置

  在一般IPv4/IPv6双栈环境下,用户终端的网络配置包括IPv4地址、IPv6地址、DNSv4服务器等信息,配置信息Uconf表示为:

  Uconf = { ADDRv4,ADDRv6,DNSv4 }

  使用本方法后,在用户终端的网络配置增加一个DNSv6服务器的配置,配置信息表示为:

  Uconf = { ADDRv4、ADDRv6,DNSv4,DNSv6 }

  该方法的实现需要网络侧和用户侧两个层面DNSv6服务器的设置,具体说明如下:

  (1)网络侧设置

  网络侧配置主要是指网络子网的设置,包括子网内用户终端的IPv6地址、DNSv6地址等信息。DNSv6的配置方法主要有无状态地址自动配置(SLAAC)的RDNSS扩展选项[7]、DHCPv6 Only和SLAAC+DHCPv6混合三种方式。这几种方式各有优缺点,其中,SLAAC的RDNSS选项标准仍在不断发展中,网络设备对其支持程度不足;DHCPv6 Only方式对DHCPv6服务器的要求比较高,如果出现问题用户终端甚至无法获得IPv6地址,影响IPv6网络的正常访问;因此本文推荐使用SLAAC+DHCPv6混合方式,即SLAAC负责IPv6地址分配,DHCPv6服务器负责DNSv6服务器的分配。

  (2)用户侧配置

  用户侧配置主要是指用户终端操作系统的DNSv6设置,可以使用手动配置和自动配置两种方法。Windows操作系统在Win7以上、Linux操作系统如Ubuntu 11.04以上、MAC操作系统10.7以上默认提供图形界面来配置DNSv6,也支持通过DHCPv6来自动设置DNSv6[8]。其它桌面操作系统(如Win XP等)可以通过安装第三方软件来支持DHCPv6,例如Dibbler软件。由于Android操作系统目前仍不支持DHCPv6[8],本文暂不考虑移动终端的情况,后续可以通过RDNSS扩展选项来实现该方法对移动终端的支持。

3.2 方法可行性分析

  互联网上DNSv6服务器的支持和用户侧操作系统的支持是本方法是否可行的关键。本文通过实验来分析本方法的可行性。

  (1)DNS服务侧的可行性

  本文使用2个域名数据集来测试校园网DNSv6服务器的解析能力,并与校园网DNSv4服务器的解析结果进行。数据集1是Alexa 1M域名数据集,数据集2是校园网一个DNS服务器的查询日志,分别从排名前200的域名中随机抽取100个进行域名解析,然后计算解析正确结果所占的百分比,结果如表2所示。可以看出,DNSv6服务器具有与DNSv4服务器相同的解析结果,说明目前使用DNSv6服务器进行域名解析是可行的。

  表2 DNS解析结果比较

 

数据集1

数据集2

校园网DNSv4

100%

99.8%

校园网DNSv6

100%

99.8%

 

  (2)DNS用户侧的可行性

  用户侧的操作系统是否支持DNSv6的自动配置是本方法面临的主要问题,因此,需要对校园网内的终端操作系统类型进行调查。本文使用DHCP指纹识别的方法通过DHCP服务器对校园网一个校区的操作系统进行自动识别,实验结果如图2所示。可以看出,默认支持DNSv6设置的桌面操作系统(包括Win7、Win10和Mac等)合计占到85%以上,说明该方法对大部分用户终端可行。

  图2 用户终端操作系统分布图

  4、实验

  本文在校园网中建立了一个虚拟实验子网环境,如图3所示,主要包括实验用DHCPv6服务器、DNSv6服务器以及Win10、Ubuntu16.04虚拟机等,DNSv6和DHCPv6服务器分别使用开源的Bind和Dhcpd来实现。为简单起见,同时为不影响现网的DHCP服务,未设置实验用DHCP服务器,DNSv4等信息使用手动配置,并且在交换机上做SLAAC、DHCPv6服务器等IPv6相关配置。实验步骤需要分为两步:首先在虚拟机上检查是否通过DHCPv6服务器获得了正确的DNSv6地址信息,并设置一个真实的DNSv4服务器,检查DNS域名解析是否正常;然后,将虚拟机上的DNSv4服务器修改为一个不可访问的地址,再检查DNS域名解析是否正常。在两种情况下,实现结果均为正常,说明即使在DNSv4服务器失效的情况下,虚拟机使用DNSv6服务器解析依然正常,提高了DNS服务的可靠性。

  图3 实验子网示意图

  文献[3]指出20%的网页内容访问中DNS解析所用的时间超过1秒,因此DNS解析时间对网络访问性能具有重要影响。本文对校园网DNSv4、DNSv6服务器和谷歌公共DNS服务器的解析时间进行了比较,从Alexa 1M域名数据集前100名中随机选择10个域名,考虑到DNS缓存的影响,在域名中增加一个随机字符串形成一个不存在的域名,并对该域名连续解析两次,第一次是无缓存的解析时间,第二次则是有缓存的解析时间,最后计算解析时间的平均值,结果如图3所示。可以看出在无缓存和有缓存两种情况下,校园网DNSv4和DNSv6服务器分别具有近似相等的平均解析时间,而公共DNSv4服务器的平均解析时间则高很多,特别是在有缓存的情况下更为显著。因此,通过为用户侧自动分配校园网DNSv6服务器,会比使用公共DNS服务器带来明显的性能提升。

  图4 DNS解析时间比较

  5、结束语

  DNS是校园网的一项关键核心基础服务,本文分析了其在服务侧和用户侧存在的可靠性问题,进而提出了一种IPv4/IPv6双栈环境下的DNS可靠性增强方法,使用IPv6的自动配置特性,为用户终端无感知的增加DNSv6服务器配置,增加了DNS配置的冗余度,从而提高了DNS服务的可靠性。该方法可以充分利用当前校园网的IPv4/IPv6双栈环境,发挥IPv6协议的自动配置优势,可以根据需要增量部署,而且无需额外的硬件投资和复杂的系统配置,即可达到一定程度上提高DNS服务可靠性的目的。

  参考文献

  [1]胡宁, 邓文平, 姚苏. 互联网DNS安全研究现状与挑战[J]. 网络与信息安全学报, 2017, 3(3):13-21.

  [2]宋国柱, 杨华, 车秀梅. 基于MySQL的高可靠性缓存DNS系统的设计与实现[J]. 太原科技大学学报, 2014(6):423-428.

  [3]KyoungSoo P, Vivek P, Larry P and Zhe W. CoDNS: Improving DNS Performance and Reliability via Cooperative Lookups[C]. Proceedings of the Sixth Symposium on Operating Systems Design and Implementation(OSDI ‘04), 2004.

  [4]韩殿飞, 袁睿翕, 管晓宏. 中国域名服务器配置错误的测量与分析[J]. 计算机工程, 2007, 33(2):105-107.

  [5]王垚, 胡铭曾, 李斌,等. 域名系统安全研究综述[J]. 通信学报, 2007, 28(9):91-103.

  [6]Bernhard A , Wolfgang M , Georgios S, Steve U. Comparing DNS Resolvers in the Wild[C]. Proceedings of the 10th Conference on Internet Measurement (IMC’10), 2010.

  [7]Jeong J, Park IS, Beloeil L. Pv6 Router Advertisement Options for DNS Configuration[S]. RFC8106, 2017.

  [8]Wikipedia. Comparison of IPv6 support in operating systems[EB/OL]. https://en.wikipedia.org/wiki/Comparison_of_IPv6_support_in_operating_systems, 2017.

------分隔线----------------------------
标签(Tag):DNS DNS可靠性增强 DNS可靠
------分隔线----------------------------
推荐内容
猜你感兴趣