揭秘DNS后台文件
在前面的博文中我们介绍了DNS的体系结构,常用记录,还介绍了辅助服务器的配置,今天我们来介绍一下DNS服务器背后的几个文件。其实DNS服务器的工作完全依靠这几个文件,了解了DNS的后台文件后,有利于更好地理解DNS服务器,也可以让大家明白为什么有高手声称配置DNS最好的工具就是记事本。
DNS服务器所使用的文件并不复杂,一个是Boot文件,负责存储DNS服务器的启动信息;一个是Cache.dns,负责存储根服务器的域名和IP地址;还有一个最重要的文件就是区域数据文件,负责存储区域内的所有DNS记录。这些文件都在\Windows\System32\DNS目录下,我们找到负责解析hexun.com区域的DNS服务器202.99.16.1,来分析一下这个DNS服务器所使用的上述文件。
一 Boot文件
首先来看看Boot文件,奇怪的是,在DNS服务器C:\Windows\System32\DNS目录下,我们并没有发现Boot文件,具体如下图所示,这时为什么呢?
这时因为DNS的引导信息可以有三种保存的途径,一是可以保存在Boot文件,二是可以保存在注册表,三是可以保存在Active Directory。微软可能是怕用户误删除了Boot文件,因此默认情况下把引导信息用另外两种方式保存。如果我们想查看Boot文件的内容,首先要修改DNS服务器引导信息的保存方式。如下图所示,在DNS管理器中选择查看DNS服务器的属性。
在DNS服务器属性中切换到“高级”标签,如下图所示,选择从文件加载区域数据,这样DNS服务器就会把启动信息写到Boot文件中。
如下图所示,Boot文件终于出现了!
用记事本打开boot文件查看一下,其实内容很简单,Primay代表DNS服务器是当前区域的主服务器,从Boot文件可以看到,当前的DNS服务器是hexun.com区域的主服务器,同时也是16.99.202.in-addr.arpa区域的主服务器。但并不是根域的DNS服务器,要想解析根域,需要依靠cache.dns,chache.dns中记录了13个根服务器的域名和IP地址。
202.99.16.2是hexun.com的辅助服务器,我们看看它的Boot文件内容是什么。如下图所示,secondary表示是当前区域的辅助服务器,主服务器是202.99.16.1,根域的解析也是要依靠cache.dns中的13个根服务器。
总结:看了两个例子,我们发现DNS服务器中的Boot文件其实很简单,就是描述了当前的DNS服务器负责哪些区域,是区域的主服务器还是辅助服务器,区域数据文件放在哪里等问题。我们完全可以利用Boot文件控制DNS启动时加载的区域数据,也可以改变DNS服务器的角色,例如从辅助服务器改为主服务器。
二 Cache.dns
以前我们介绍DNS体系结构时曾经描述过域名解析的过程:DNS服务器发现一个域名自己不能解析,就会把这个查询提交给根服务器,根服务器通过迭代方式可以让DNS服务器最终找到答案。这个过程中有个关键问题,DNS服务器怎么知道谁是互联网上的根服务器呢?答案现在就可以揭晓了,Cache.dns中存储了13个根服务器的域名和IP地址!这13个根服务器除了在东京,伦敦,斯德哥尔摩各有一台,其余都在美国。
如下图所示,Cache.dns中描述了13台服务器的完全合格域名以及IP地址,其中@是个缩写,代表当前区域,也就是根域。每个服务器用两条记录描述,一条记录是NS记录类型,一条是A记录类型。NS记录说明谁是根域的DNS服务器,A记录说明这台DNS服务器的IP地址是多少。
Cache.dns的内容也可以通过DNS服务器属性中的“根提示”来查看,如下图所示,我们查看DNS服务器的属性,在属性中切换到“根提示”标签,所看到的内容就是cache.dns中所描述的13个根服务器。
总结:Cache.dns中记录了互联网上13个根服务器的域名和IP,我们有很多地方需要利用Cache.dns,例如北京新增加了一个DNS根服务器,但Win2003并不知道这个变化,这时我们就需要通过修改Cache.dns来完成这个工作。或者是假设一个大企业使用了私有根,自己做了一个根服务器,这时也要修改Cache.dns才能让DNS服务器知道这个私有根的存在。
三 区域数据文件
接下来我们要介绍的就是最重要的区域数据文件了,区域数据文件保存了区域中所有的DNS记录,是DNS服务器的核心数据。从前面的Boot文件可以看出,hexun.com区域的数据都存放在了hexun.com.dns文件中,接下来我们就用记事本打开C:\windows\system32\dns\hexun.com.dns,结果如下图所示。
我们从区域数据文件中可以看出DNS记录的具体存储方式,首先我们来分析一下文件中的SOA记录,记录内容如下图所示。@是缩写,代表当前区域,相当于hexun.com. ,SOA是记录类型,ns1.hexun.com.表示的是hexun.com的主服务器,12是记录的更新序列号,900秒是15分钟的刷新间隔,辅助服务器和主服务器每隔900秒联系一次;600秒是10分钟的重试时间,如果辅助服务器和主服务器失去了联系,就每隔10分钟联系一下主服务器;86400是过期时间,如果辅助服务器过了一天都没和主服务器联系上,辅助服务器就认为自己的数据过期了;3600秒是DNS记录在缓存中的生存时间。
刚才分析的内容其实和下图中的SOA记录是完全一致的。
再来看看其他的几条记录,如下图所示,注意其中的A记录。DNS中的记录是要以完全合格域名的形式存在的,如果域名不以点结尾,那么DNS会自动在域名的最后追加上当前区域,把格式补充为完全合格域名的形式。例如mail就会被补充为mail.hexun.com.
我们利用DNS的区域数据文件完成两项常见任务,DNS的空域名解析和泛域名解析。空域名解析就是解析hexun.com,泛域名解析就是把所有以hexun.com结尾但又没有出现在DNS区域中的域名进行解析,例如ww.hexun.com。一般情况下网站对这两种域名解析会进行处理,因为有时访问者喜欢省事在浏览器中直接输入hexun.com就进行访问,而且也可能把[url]www.hexun.com[/url]误输为ww.hexun.com。
空域名解析比较简单,如果我们想把空域名解析成202.99.16.80,那就可以在区域数据文件中输入 @ A 202.99.16.80,刚才我们提到了,@代表了当前区域,相当于hexun.com. 。
泛域名解析也不难,例如我们想把泛域名也解析成202.99.16.80,那么我们就可以在区域数据文件中输入 * A 202.99.16.80,*是通配符,代表任意字符的组合,具体如下图所示。
在保存DNS区域数据文件之前,最好先停止DNS服务,然后保存文件之后再启动DNS服务。如下图所示,我们发现空域名解析和泛域名解析都生效了。
再用区域数据文件完成一项常见任务,DNS的委派!介绍DNS体系结构时我们就提到过,正是由于有了伟大的委派,DNS才发展到今天。我们这次准备把shanghai.hexun.com的解析权委派给DNS服务器ns.shanghai.hexun.com,这台服务器的IP是211.99.213.1,那么我们在区域数据文件中写入下列两条记录就OK了。
在DNS管理器中可以看到,我们设置的委派已经生效了。
总结:接触到区域数据文件后,我们发现其实所有的DNS记录都可以很轻松地在区域数据文件中创建出来,而且效率很高,有了记事本,就可以创造DNS的一切!了解了DNS的后台文件后,我们在下篇博文中将把这些文件综合利用,创建出属于自己的DNS私有根!敬请期待!
本文出自 “岳雷的微软网络课堂” 博客,请务必保留此出处http://yuelei.blog.51cto.com/202879/109657
- ELK学习笔记之F5 DNS可视化让DNS运维更安全更高效-F5 ELK可视化方案系列(3)
0x00 概述 此文力求比较详细的解释DNS可视化所能带来的场景意义,无论是运维.还是DNS安全.建议仔细看完下图之后的大篇文字段落,希望能引发您的一些思考. 在“F5利用Elastic stack( ...
- 《DNS攻击防范科普系列1》—你的DNS服务器真的安全么?
DNS服务器,即域名服务器,它作为域名和IP地址之间的桥梁,在互联网访问中,起到至关重要的作用.每一个互联网上的域名,背后都至少有一个对应的DNS.对于一个企业来说,如果你的DNS服务器因为攻击而无法 ...
- 通过开源程序同时解决DNS劫持和DNS污染的问题
我们知道,某些网络运营商为了某些目的,对DNS进行了某些操作,导致使用ISP的正常上网设置无法通过域名取得正确的IP地址.常用的手段有:DNS劫持和DNS污染.关于DNS劫持和DNS污染的区别,请查找 ...
- Red Gate系列之五 .NET Reflector 7.6.1.824 Edition .NET程序反编译神器(附插件安装教程2012-10-13更新) 完全破解+使用教程
原文:Red Gate系列之五 .NET Reflector 7.6.1.824 Edition .NET程序反编译神器(附插件安装教程2012-10-13更新) 完全破解+使用教程 Red Gate ...
- Python猫荐书系列之五:Python高性能编程
稍微关心编程语言的使用趋势的人都知道,最近几年,国内最火的两种语言非 Python 与 Go 莫属,于是,隔三差五就会有人问:这两种语言谁更厉害/好找工作/高工资…… 对于编程语言的争论,就是猿界的生 ...
- 单元测试系列之五:Mock工具之Mockito实战
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6780719.html 在实际项目中写单 ...
- DNS 劫持 和 DNS 污染
1,用户需要访问www.liusuping.com这个网站,向DNS服务器提出解析请求. 2,DNS服务器通过检查发现www.liusuping.com域名的IP地址是127.0.0.1,将结果返回给 ...
- 给Ajax一个漂亮的嫁衣——Ajax系列之五(下)之序列化和反序列化
给Ajax一个漂亮的嫁衣——Ajax系列之五(下)之序列化和反序列化 标签: ajaxdictionaryjsonobject服务器function 2012-07-25 18:41 2242人阅读 ...
- centos DNS服务搭建 DNS原理 使用bind搭建DNS服务器 配置DNS转发 配置主从 安装dig工具 DHCP dhclient 各种域名解析记录 mydns DNS动态更新 第三十节课
centos DNS服务搭建 DNS原理 使用bind搭建DNS服务器 配置DNS转发 配置主从 安装dig工具 DHCP dhclient 各种域名解析记录 mydns DNS动态更 ...
随机推荐
- 120条Photoshop新手必看技巧
Photoshop越来越强大了!试图掌控它的全部特性是不现实的(更何况有那么多隐藏的功能!),那么我们不妨收藏一下大神们总结的这120个PS技巧,偶尔翻看一下,让自己的设计更强大更高效! 这120款技 ...
- github不小心同步覆盖了本地文件
昨天不小心github的commit还没push就同步了,导致本地文件被覆盖,一度以为没救了. 后来得微博 @空非无和 @柳烟堆雪 指点,用git reflog 恢复了文件. 事情是这样的... 我在 ...
- linux poll
man poll: NAME poll, ppoll - wait for some event on a file descriptor SYNOPSIS #include <poll.h&g ...
- USACO Section 2.4: Fractions to Decimals
乍看题目感觉有难度,实际分析后其实是道简单题 /* ID: yingzho1 LANG: C++ TASK: fracdec */ #include <iostream> #include ...
- url重写(伪静态)IIS配置图解
通过IIS创建虚拟目录,新建网站放在该目录下面: IIS配置: 虚拟目录=>点击右键=>选择属性: 点击配置: 点击编辑: 复制两个文本框文本到记事本中=>点击确定: 点击添加=&g ...
- Solr的一些查询参数
fl: 是逗号分隔的列表,用来指定文档结果中应返回的 Field 集.默认为 “*”,指所有的字段. defType: 指定query parser,常用defType=lucene, defType ...
- [HDOJ5667]Sequence(矩阵快速幂,费马小定理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5667 费马小定理: 假如p是质数,且gcd(a,p)=1,那么 a^(p-1)≡1(mod p). 即 ...
- 没有显示器且IP未知的情况下登录树莓派
如果是没有显示器操作树莓派,可能会不知道树莓派有线网卡自动分配到的IP地址,不知道登录到哪儿.以下提供详细操作步骤解决这个问题. 网段扫描法这个是推荐的办法.网段扫描工具很多,推荐一个Advanced ...
- 配置Tomcat 中文字符集问题
找到Tomcat安装路径下的conf文件夹下的server.xml配置文件,修改配置Tomcat端口的标签"Connector",添加URIEncoding属性,代码如下: < ...
- SQL注入实验,PHP连接数据库,Mysql查看binlog,PreparedStatement,mysqli, PDO
看到有人说了判断能否sql注入的方法: 简单的在参数后边加一个单引号,就可以快速判断是否可以进行SQL注入,这个百试百灵,如果有漏洞的话,一般会报错. 下面内容参考了这两篇文章 http://blog ...