在上一篇文章《浅谈DNS域名解析系统》中,我们讨论了整个DNS域名解析系统是如何工作的,域名解析系统就像是一本巨大的“地址簿”,记录全世界所有网站域名对应的IP地址。但是这本“地址簿”的记录分布在全球各地的权威域名服务器上,要在里面查到一条域名记录可不是一件简单的事情,需要一个熟悉规则的代理人帮忙----本地域名服务器Local DNS。

1、域名解析流程回顾

其实在上篇文章中本地域名服务器已经出场过了,重新打开这张图复习一下域名解析整体流程(如图1):

图1.域名解析

这张图的右侧部分就是网站域名的“地址簿”,也就是权威域名服务器,左边是用户侧的部分,从图中就可以看出来,主机浏览器并没有直接访问域名系统进行查询,而是通过本地域名服务器实现域名查询的操作:

1、用户在浏览器地址栏输入http://www.xbank.com,浏览器向本地域名服务器发起查询‘www.xbank.com’的IP地址;

2-3、本地域名服务器向根发起查询,根确认自己没有‘www.xbank.com’对应的地址,但是知道这个域名是属于‘com’下的域名,于是返回顶级域名‘com’的名字服务器地址;

4-5、本地域名服务器继续向‘com’发起查询,‘com’ 确认自己没有‘www.xbank.com’对应的地址,但是知道这个域名是属于‘xbank.com’下的域名,于是返回‘xbank.com’的名字NS服务器地址;

6-7、本地域名服务器继续向‘xbank.com’发起查询, ‘xbank.com’确认有这个域名对应的IP地址,于是返回‘www.xbank.com’的IP地址;

8、本地域名服务器获得地址后将该地址返回给浏览器。浏览器通访问该地址,打开网站页面。

2、本地域名服务器的隐患

大部分人认为域名是由配置在主机里的本地域名服务器来解析的,其实这种观点是不对的,本地域名服务器本身不具备权威域名服务器解析域名的功能,它的作用有两个:第一,代替用户设备参与域名查询的迭代过程,帮助获取域名查询结果返回给用户设备;第二,缓存域名查询记录,当其他用户发起相同的域名查询请求时可以直接返回查询结果,可以加快域名查询速度,同时也降低了权威服务器,尤其是根服务器的工作压力。

本地域名服务器给我们访问互联网带来很大便利,但也埋下了隐患。从域名查询的流程中可以看出,所有要访问互联网的设备都必须配置本地域名服务器才可以正常访问网站域名。试想一下如果黑客控制了某个运营商的Local DNS服务器,修改某个A记录到黑客伪造的站点,那么用户的访问该网站的信息就会被劫持,实际上用户输入的域名以为是访问到目标网站,其实真网站的域名解析被劫持解析为假网站的IP地址,这样用户在无知觉的情况下就会访问到这个假网站(也称钓鱼网站),并泄露个人信息,这种攻击方式叫做域名劫持(如图2)。当然,域名劫持不一定是劫持到钓鱼网站,也可能是一些广告页面(骗取流量),只要打开的网站不是想访问的目标网站,那域名劫持的可能性就很大了。域名劫持可以发生在域名查询流程的各个环节,很明显本地域名服务器是最薄弱的一个环节,大部分个人电脑本地域名服务器配置的是家用路由器(通常是自动获取,包括手机连公开的wifi,获取的本地域名服务器也是wifi的地址),而家用路由器可能连出厂密码都没改过,要获得控制权限毫无难度。

图2.域名劫持

其次,公共的本地域名服务器本身的稳定性也遭到诟病,由于公共域名服务器的公开免费的特性,在访问量大或者互联网线路不稳定的时候,加上各运营商之间互联互通的问题,经常会出现解析异常的情况,比如通过电信线路访问联通的本地域名服务器可能出现解析超时的情况。对于多线路冗余的企业用户来说,配置哪个运营商本地域名服务器是一个令人困扰的问题。

另外,域名缓存时间虽然通常跟随权威服务器TTL设置,但是本地域名服务器是有权限覆盖这个设置的,若本地域名服务器配置不正规,将缓存时间设置的极长,那么域名绑定地址的更新就会成为一个问题,不管权威服务器如何更新IP,本地域名服务器上的域名由于还在缓存时间内就不会主动到权威域名服务器更新IP地址,使用这台域名服务器的用户很长时间内只能访问到旧网站,唯一的办法是建议用户换个本地域名服务器,或者通知本地域名服务器管理员刷新缓存。

3、自建本地域名服务器

对于互联网用户来说,面对本地域名服务器的问题可以尝试更换可信的第三方的本地域名服务器。企业用户考虑可用性、稳定性、安全性的需求,建议自建本地域名服务器。

自建本地域名服务器将直接对域名进行迭代查询,可以规避互联网本地域名服务器被劫持的问题,同时通过负载均衡设备建立本地域名服务器池,可以极大的提高本地域名服务的可用性和稳定性。另外,本地域名服务器的解析日志数据具有极高的分析价值,我们知道中毒或者被控的服务器会主动向外发起访问,此时通常会解析一个异常的黑域名,通过对本地域名服务器的解析日志的监控可以快速发现识别被控服务器,提升互联网安全防护能力。

自建本地域名服务器虽然可以保证本身的可用性和安全性,但依然无法实现互联网域名解析成功率100%。从域名整体解析流程可以看到,域名解析是一个全球互联网域名服务器迭代查询访问的过程,其中任何一个环节出问题都会导致域名解析缓慢、解析失败等情况的出现,这在复杂的互联网环境下比较常见,与互联网质量、各层级的权威服务器状态都有关系,作为终端用户很难跟踪到问题的根本原因,建议应用系统建设时考虑容错能力,在解析失败后进行多次尝试,必要时考虑应急方案,直接通过IP访问目标网站。

好了,以上就是本地域名服务器的介绍,它在整个互联网访问环节中是一个看起来不起眼,但是极其重要的角色,希望各位运维同仁能通过这篇文章重新审视本地域名服务器在心目中的地位。下次我们会为大家介绍HTTPDNS。敬请期待。

声明:本文来自匠心独运维妙维效,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。