博客统计信息

51cto专家博客 51cto博客之星
用户名:yuelei
文章数:210
评论数:8341
访问量:3393486
无忧币:11472
博客积分:10033
博客等级:9
注册日期:2007-07-24

亲手缔造DNS体系,创建DNS私有根:DNS系列之六
2008-11-06 23:37:35
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://yuelei.blog.51cto.com/202879/110700
打造DNS私有根
我们现在已经从前面的博文中了解到了很多DNS的相关知识,今天我们用一个综合性的实验把前面的内容都串起来复习一下,这个有趣的实验就是DNS的私有根。私有根顾名思义是由个人或企业自行创建的DNS根服务器,这个根服务器属于创建者私有专用,不能象互联网上的根服务器那样为众多的网民服务。那么为什么会有企业搭建私有根呢?直接用互联网上的根服务器不是很好吗?需要搭建私有根一般有下列原因,例如有的单位如警察或军事部门出于保密需要,必须把单位的网络和互联网物理隔离,但又不愿使用IP地址来互相访问,这样就必须使用DNS私有根才能保证域名的正常应用;还有的大型企业为了管理方便,也在企业内设置私有根解析域名,这样可以省却去公网申请域名的麻烦。
对我们来说,创建私有根的意义在于可以通过这些操作更好地理解DNS的体系结构,可以亲自体验一下DNS的诞生过程。下面我们准备用五台虚拟机来实现一个DNS的私有根,拓扑如下图所示,Florence充当私有根的根服务器,根服务器把.com区域的解析权委派给Berlin,把.net区域的解析权委派给Firenze。然后Berlin再把hexun.com的解析权委派给Istanbul,而Firenzehomeway.net的解析权委派给Perth。每台服务器的完全合格域名和IP地址都在拓扑图中进行了标注。
 
负责根域的DNS服务器
我们把创建根服务器这个伟大的任务交给了Florence,私有根服务器的诞生宣布了我们使用了另外一个域名空间,和公网域名空间完全平行的另一个名称空间,在这个自己创建的域名空间中,我们可以使用任意域名而不用担心和公网上的同名区域发生冲突。如下图所示,我们在FlorenceDNS管理器中选择新建区域,准备在Florence上创建出根域。
 
 
出现新建区域向导,点击下一步继续。
 
 
区域类型当然选择“主要区域”。
 
 
区域的名称为. ,哈哈,大名鼎鼎的根域原来如此简单。
 
 
根域的区域数据文件是root.dns,注意,我们之后要修改这个文件。
 
 
区域创建完毕,这时,私有根已经诞生了。
 
 
我们在根域中首先检查NSSOA记录,都任何区域来说,这两个记录都是不可或缺的。首先我们检查NS记录,如下图所示,NS记录中描述了根域的DNS服务器是Florence.,由于Florence.并不是一个完全合格域名,因此我们要对这个域名进行编辑。
 
 
按照拓扑图中的设计,我们把根域的域名服务器改成了Florence.root.net.IP地址是192.168.11.101
 
 
然后对根域的SOA记录也进行修改,如下图所示,我们把根域的主服务器设置为Florence.root.net.,这样,根域的NS记录和SOA记录就都设置好了。
 
 
接下来我们就要在根域中设置区域委派了,按照拓扑要求,我们应该把com区域委派给Berlin,把net区域委派给Firenze。我们在根域的区域数据文件root.dns中设置委派,如下图所示,我们把com的解析权委派给Berlin.root.net. ,把net的解析权委派给Firenze.root.net.
 
 
修改了根域的区域数据文件后,我们在DNS管理器中已经可以看到根域的委派结果了。
 
至此,我们对根域的设置完成,主要工作是创建了根域以及在根域中设置了委派。
 
  负责com区域的DNS服务器
根服务器把com区域的解析权委派给了Berlin,接下来我们就要在Berlin上进行设置了,首先我们要做的就是让Berlin信任我们新创建的根服务器,默认情况下,Berlin只承认互联网上的那13个根服务器。如下图所示,我们在BerlinDNS管理器中打开服务器属性中的根提示,发现了Berlin目前承认的13个根服务器。
 
 
如下图所示,我们把13个根服务器删除,把Florence.root.net.作为唯一的DNS根服务器添加进来,这样,Berlin就承认我们新创建的根服务器了。
 
 
Berlin承认了私有根后,我们在Berlin上创建com区域,如下图所示,我们在BerlinDNS管理器中选择新建区域。
 
 
区域类型选择主要区域。
 
 
区域名称是com
 
 
Com区域的区域数据文件是com.dns
 
 
Com区域的创建非常简单,如下图所示,我们已经完成了com区域的创建。
 
 
创建了com区域后,我们接下来就要在com区域中检查NS记录和SOA记录的设置情况了。我们检查com区域的区域数据文件com.dns,如下图所示,我们发现com区域中的NS记录和SOA记录都把域名服务器设置为了Berlin.,但Berlin.并不是一个完全合格域名,因此我们要对记录进行修改。
 
 
如下图所示,我们通过编辑com.dns完成了两件工作,首先是把NS记录和SOA记录都用Berlin.root.net.这么个标准的完全合格域名来表示,其次是在com区域中进行了委派操作,把hexun.com的解析权委派给了Istanbul.hexun.com
 
 
如下图所示,我们可以看到修改了com.dns后的结果。
 
 
至此,我们在Berlin上完成了DNS服务器的设置,首先修改了根服务器,然后完善了com区域的NS记录和SOA记录,最后在com区域中设置了委派。
 
负责net区域的DNS服务器
我们在根域中把net区域的解析权委派给了Firenze,接下来我们在Firenze上进行操作,首先Firenze要承认Florence是根服务器。如下图所示,我们在Firenze属性的根提示中设置了唯一的根服务器,Florence.root.net.
 
 
接下来在Firenze上创建net区域,如下图所示,我们在FirenzeDNS管理器中选择新建区域。
 
 
区域名称是net
 
 
区域数据文件是net.dns
 
 
如下图所示,我们看到net区域的NS记录和SOA记录都表示得不恰当,我们在net的区域数据文件中进行修改。
 
 
如下图所示,我们在区域数据文件中把net区域的NS记录和SOA记录都进行了修改,改成了firenze.root.net.,然后把homeway.net的解析权委派给了perth.homeway.net.
 
 
至此,Firenze的设置完成,基本上和Berlin的设置是相同的,也是重新设置了根服务器,创建了net区域,修改了区域的NSSOA记录,同时设置了区域委派。
 
负责hexun.com的服务器
Istanbul负责hexun.com区域的解析,我们首先也是要设置Istanbul的根服务器,如下图所示,我们设置Florence.root.net.是唯一的根服务器。
 
 
接下来需要在Istanbul上创建区域hexun.com,具体的创建过程不再赘述,如下图所示,这是hexun.com区域创建后的结果,显然,我们需要对其中的NSSOA记录进行修改。
 
 
如下图所示,我们编辑了hexun.com的区域数据文件hexun.com.dns。我们把hexun.com区域的NSSOA记录中的域名服务器都改为了istanbul.hexun.com.,而且在区域中添加了[url]www.hexun.com[/url]mail.hexun.com两条A记录。
 
 
修改后的结果如下图所示。
 
 

Istanbul上的设置相对简单一些,只是把根服务器重新设置了一下,同时对hexun.com区域中的记录进行了一些修改,没有涉及到区域委派。
 
负责homeway.net的服务器
负责homeway.net的是Perth,我们首先也是要在perth上修改根服务器,如下图所示,我们把根服务器修改为florence.root.net.
 
 
接下来在perth上创建区域homeway.net,具体过程不再赘述,如下图所示就是homeway.net刚创建完的结果。
 

我们修改区域数据文件homeway.net.dns,如下图所示,我们修改了homeway.netNSSOA记录,用完全合格域名来表示DNS服务器。然后还创建了两条A记录,[url]www.homeway.net[/url]ftp.homeway.net
 

修改后的结果如下图所示。
 

Perth的设置也比较简单,和Istanbul类似,只是简单地改了一下根服务器,同时对homeway.net的区域数据进行了一下修改。
 
私有根测试
我们费了半天力气终于搭好了私有根,现在我们来测试一下效果,理论上我们使用任何一个DNS服务器都可以把私有名称空间内的任何域名都解析出来。我们在perth上进行一个测试,用perth作为DNS服务器来解析[url]www.hexun.com[/url]。理论上分析,以hexun.com结尾的域名应该由Istanbul来解析,perth如果能解析出来,那肯定是通过私有根找到了istanbul。测试结果如下图所示,我们发现perth已经成功地解析了[url]www.hexun.com[/url]
 
 
我们用抓包工具记录一下perth的解析过程,我们可以很清楚地看到,perth先是向私有根的根服务器192.168.11.101发出了查询请求,然后又向负责com区域的192.168.11.108发出了查询请求,最后向负责hexun.com192.168.11.107申请查询,这次终于如愿以偿,查到了正确结果,过程和以前在公网上的解析完全一样,我们设置私有根成功了!

 
 

本文出自 “岳雷的微软网络课堂” 博客,请务必保留此出处http://yuelei.blog.51cto.com/202879/110700

分享至
更多
一键收藏,随时查看,分享好友!

文章评论

 <<   1   2   3   4   >>   页数 ( 1/4 )  
2008-11-07 09:23:17
嘿嘿 支持一下

2008-11-07 20:53:04
学习了

2008-11-08 23:02:26
岳老师好,呵呵,支持一下,有空一定要好好补习下网络管理的课程

2008-11-08 23:48:36
谢谢支持!

2008-11-09 16:04:13
岳老师好!

2008-11-09 16:20:12
我在根域的区域数据文件root.dns中设置委派后,在DNS上却看不到结果,为何?还请岳老师答复,谢谢
博主回复:
2008-11-09 19:48:36
root.dns中写了哪些内容?

2008-11-10 08:16:36
做完这个实验,windows平台下DNS方面基本上就完全掌握了,感谢岳老师的文章。

2008-11-10 10:40:34
heihei

2008-11-10 14:46:56
期待博主更新AD,每天都要来这里看2次。
博主回复:
2008-11-10 20:44:51
呵呵,马上要写到AD了,多谢你的支持。

2008-11-11 13:25:13
超级感谢!无限期待!!!!

2008-11-13 14:38:18
嘿嘿,指出老师一个小小的错误,这个是dns系列之六了~
另外想问下,分公司这里修改了根服务器地址,那不是不能正常解析网络其他地址了?如果那里需要上外网的话,要如何设置?
博主回复:
2008-11-14 13:16:45
呵呵,多谢指正,如果分公司使用了私有根,正常情况下是不能解析互联网上域名的,因为互联网上的域名隶属另外的域名空间。如果需要上外网,似乎可以考虑在创建私有根时,使用一些互联网上不使用的域名后缀,如.local,然后在根服务器上把com,net,org等域名委派到互联网上负责这些域名的DNS服务器,这样就可以两全其美了。

2008-12-17 20:39:18
请问岳老师,如何才能过滤dns转发器的转发呢?
  就是说把自己的dns server设成只有经过允许的dns server转发来的dns请求才为其转发。其他的都拒绝。
博主回复:
2008-12-28 19:19:34
DNS服务器本身似乎没有提供这个管理功能,也许可以考虑结合防火墙过滤或者其他第三方的管理软件。

2008-12-28 17:15:08
岳老师,我怎么按上面的试验步骤下来,怎么在抓包器里只显示从192.168.11.106到192.168.11.107啊?为什么没有经过根啊?
我在试验中IP地址和您的博客中的地址一样,只是DNS服务器名字不同,而且我让根服务器委派的事com和cn这两个区域,它们之间都能ping的通,只是 在抓包过程中抓不到预期的效果。 怎,怎么办?
博主回复:
2008-12-28 19:17:54
要考虑DNS缓存的因素,如果DNS服务器已经知道了那台DNS服务器负责相关区域,它就不需要再通过根服务器查询了,可以在开始抓包之前用ipconfig /flushdns清除DNS缓存,然后再试试。

2009-01-03 19:54:29
恩! 是了。
服务器的缓存还又客户机的缓存都得清除。呵呵

2009-01-16 10:29:12
如何在一台Hyper-v上既创建私有根DNS又创建委托了local的DNS呢
博主回复:
2009-01-17 10:48:43
私有根和委派Local并不矛盾啊?私有根可以进行任意域名的委派。

2009-02-01 17:55:14
我不得不说一声:"老师您辛苦了!"
博主回复:
2009-02-02 00:05:18
感谢支持,欢迎常来做客。

2009-02-13 21:02:05
非常好的文章

2009-03-06 10:15:24
非常实用,谢谢!
博主回复:
2009-03-06 19:54:38
感谢支持!

2009-03-13 16:36:00
感谢岳老师,图文并茂,易理解!

2009-03-23 20:31:04
岳老师:
非常感谢你的文章,受益匪浅呀
这个实验我做了,发现在一点小问题。
我先在istanbul.hexun.com dns服务器改了www 的A记录的ip,
然后在berlin的机器上用nslookup查看www.hexun.com的ip,还是之前的。当然也无法ping通。只能重启berlin dns服务,才成功。
请问Berlin的dns服务器要多久才知道istanbul上修改了记录呢?


博主回复:
2009-03-23 23:10:57
记录的缓存时间取决于SOA记录的TTL设定,实验时可以选择在Berlin的DNS管理器中手工清楚DNS缓存。

 <<   1   2   3   4   >>   页数 ( 1/4 )  

发表评论            

【技术门诊】专家解析:软考重点难点及应试技巧
昵  称:
登录  快速注册
验证码:

请点击后输入验证码博客过2级,无需填写验证码

内  容: