打造
DNS
私有根
我们现在已经从前面的博文中了解到了很多
DNS
的相关知识,今天我们用一个综合性的实验把前面的内容都串起来复习一下,这个有趣的实验就是
DNS
的私有根。私有根顾名思义是由个人或企业自行创建的
DNS
根
服务器,这个根服务器属于创建者私有专用,不能象互联网上的根服务器那样为众多的网民服务。那么为什么会有企业搭建私有根呢?直接用互联网上的根服务器不
是很好吗?需要搭建私有根一般有下列原因,例如有的单位如警察或军事部门出于保密需要,必须把单位的网络和互联网物理隔离,但又不愿使用
IP
地址来互相访问,这样就必须使用
DNS
私有根才能保证域名的正常应用;还有的大型企业为了管理方便,也在企业内设置私有根解析域名,这样可以省却去公网申请域名的麻烦。
对我们来说,创建私有根的意义在于可以通过这些操作更好地理解
DNS
的体系结构,可以亲自体验一下
DNS
的诞生过程。下面我们准备用五台虚拟机来实现一个
DNS
的私有根,拓扑如下图所示,
Florence
充当私有根的根服务器,根服务器把
.com
区域的解析权委派给
Berlin
,把
.net
区域的解析权委派给
Firenze
。然后
Berlin
再把
hexun.com
的解析权委派给
Istanbul
,而
Firenze
把
homeway.net
的解析权委派给
Perth
。每台服务器的完全合格域名和
IP
地址都在拓扑图中进行了标注。

一
负责根域的
DNS
服务器
我们把创建根服务器这个伟大的任务交给了
Florence
,私有根服务器的诞生宣布了我们使用了另外一个域名空间,和公网域名空间完全平行的另一个名称空间,在这个自己创建的域名空间中,我们可以使用任意域名而不用担心和公网上的同名区域发生冲突。如下图所示,我们在
Florence
的
DNS
管理器中选择新建区域,准备在
Florence
上创建出根域。

出现新建区域向导,点击下一步继续。

区域类型当然选择“主要区域”。

区域的名称为
.
,哈哈,大名鼎鼎的根域原来如此简单。

根域的区域数据文件是
root.dns
,注意,我们之后要修改这个文件。

区域创建完毕,这时,私有根已经诞生了。

我们在根域中首先检查
NS
和
SOA
记录,都任何区域来说,这两个记录都是不可或缺的。首先我们检查
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
个根服务器。如下图所示,我们在
Berlin
的
DNS
管理器中打开服务器属性中的根提示,发现了
Berlin
目前承认的
13
个根服务器。

如下图所示,我们把
13
个根服务器删除,把
Florence.root.net.
作为唯一的
DNS
根服务器添加进来,这样,
Berlin
就承认我们新创建的根服务器了。

Berlin
承认了私有根后,我们在
Berlin
上创建
com
区域,如下图所示,我们在
Berlin
的
DNS
管理器中选择新建区域。

区域类型选择主要区域。

区域名称是
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
区域,如下图所示,我们在
Firenze
的
DNS
管理器中选择新建区域。

区域名称是
net
。

区域数据文件是
net.dns
。

如下图所示,我们看到
net
区域的
NS
记录和
SOA
记录都表示得不恰当,我们在
net
的区域数据文件中进行修改。

如下图所示,我们在区域数据文件中把
net
区域的
NS
记录和
SOA
记录都进行了修改,改成了
firenze.root.net.
,然后把
homeway.net
的解析权委派给了
perth.homeway.net.
。

至此,
Firenze
的设置完成,基本上和
Berlin
的设置是相同的,也是重新设置了根服务器,创建了
net
区域,修改了区域的
NS
和
SOA
记录,同时设置了区域委派。
四
负责
hexun.com
的服务器
Istanbul
负责
hexun.com
区域的解析,我们首先也是要设置
Istanbul
的根服务器,如下图所示,我们设置
Florence.root.net.
是唯一的根服务器。

接下来需要在
Istanbul
上创建区域
hexun.com
,具体的创建过程不再赘述,如下图所示,这是
hexun.com
区域创建后的结果,显然,我们需要对其中的
NS
和
SOA
记录进行修改。

如下图所示,我们编辑了
hexun.com
的区域数据文件
hexun.com.dns
。我们把
hexun.com
区域的
NS
和
SOA
记录中的域名服务器都改为了
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.net
的
NS
和
SOA
记录,用完全合格域名来表示
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.com
的
192.168.11.107
申请查询,这次终于如愿以偿,查到了正确结果,过程和以前在公网上的解析完全一样,我们设置私有根成功了!