主辅DNS的简单配置

   今天我刚把主备DNS的相关内容复习了一下,自己边编写一个简单的教程,也算是对自己学习的一个回顾,旨在加强学习。坦白的讲DNS的相关知识还真是多,稍微一查资料就很多东西都不知道,都需要去吸收,但毕竟自己目前也是个初学者,很多东西目前不打算深究,这里只是对主辅DNS的简单配置进行一个说明,对一些新手或许会有所帮助,因水平有限,如果其中有不对的地方欢迎大家指正

------------------------天使的分割线----------------------

 一、首先我们先了解下为何需要有主辅DNS服务器

假设你的 DNS 服务器总共管理 50 部主机的 IP 与主机名称的对应好了, 同时假设你只有一部 DNS 服务器时,那么万一由于网路问题或者是主机的软、硬件问题,导致这个服务终止了, 想一想,你那 50 部主机的 hostname 与 IP 的对应还能不能找的到? 所以,一般来说, DNS 系统通常会建议您至少要有两部主机提供 DNS 的服务~这样当一台服务器出问题的时候我们还有备用的可以用。

既然是主辅DNS,那么自然会有一个为主DNS服务器(master),几个辅DNS(slave)

Master:这种类型的 DNS 本身含有领域名称的设定档 (就是有 Zone 啦!),这个设定档就是设定正解或者是反解的资料!所以他本身是具有提供 Internet 查询所需的资料喔!例如我可以在我的主机上面设定提供 example.com 这个网域,那么我的主机就是 master 类型的主机啦!

Slave:顾名思义其是对主DNS提供一种备份,当主DNS解析失败的时候,客户端通过辅DNS一样可以进行解析。但现在就有一个问题了,辅DNS一般是不只一部的,那么当主DNS内的A记录发生了更改,那么我们辅助DNS好几部要如何去自动同步呢?总不能一台一台去手动更改吧?这个问题当您看完文档后就会知道答案了

二.了解主辅DNS的复制原理

  首先master DNS服务器每次修改完成并重启服务后,将传送notify(通知)给所有的slave DNS服务器。slave DNS服务器将查询master服务器的SOA记录,master DNS服务器收到请求后将SOA记录发送给Slave DNS服务器,Slave DNS服务器收到后同时对比查询结果中的serial值,如果serial值不大于本机的话将结束数据同步过程;但是如果serial值大于本机的话,slave DNS将发送zone transfer(zone转移)请求要求(AXFR/IXFR)。Master响应zone transfer请求并传送结果,直到整个slave更新完成。整个过程如图所示:                                      

三.简单的配置

说明:主dns的ip:192.168.1.102

      辅dns的ip:192.168.1.101

1. master服务器的设置

主辅DNS要形成互相辅助的这种机制,那么主DNS必须要开放一个权限让辅助DNS可以去更新接受zone,以前我们只有一个DNS的时候是不允许zone的传送的,但这里却要开放,所以需要设置allow-transfer参数;同时我们根据主辅DNS的工作原理知道,每次主DNS修改完成后重启服务会传送notify值,所以我们也要在这里对notify进行设定,如图所示:

 

linux主辅DNS的搭配_linux

 notify: 默认为yes,当服务器的一个域授权发生改变,将发送DNS NOTIFY信息给域NS记录的服务器列表,和一些列在also-notify选项中的服务器.如果选master-only,信息只发给主域,如果是explicit,通知只发给also-notify的列表,no不发通知.

  这里需要注意:如果我们also-notify没有进行设定的话,那么会造成当主dns记录发生改变后,辅dns并没有同步更改相应的记录。也许有人会说我们可以更改SOA中的Refresh值,把它改小点也一样,这样说到也是可以的,但问题是我们的主DNS修改完重启服务后,它是会主动发送一个notify值,如果辅助DNS服务器没有收到才参考Refresh,Refresh 不成功,则参考Retry ,Retry 一直不成功,则参考 Expire,如果Expire也不成功,则选择放弃zone transfer的过程。所以为了主辅更好的同步,建议大家在这里设置also-notify。

  

2. slave服务器的设置

  slave DNS 的 /etc/named.conf 与 master DNS 几乎一模一样啊! 唯一的差异在于两个 zone 的类型 (type) 而已。

 

linux主辅DNS的搭配_辅助_02 

 

你得要特别留意类型是 slave 之外,那个主机来源 (masters) 是有加 "s" ,可别粗心的把这个给忘记了。

另外需要注意的是权限的问题,因为我们辅助DNS要接受来自主DNS的zone文件,比如此实验中,辅助DNS必须接受主DNS的example.com与dl.local两个文件,所以辅助dns的/var/named/chroot/var/named 这个目录的权限必须要是 named 这个使用者可以写入的状态,也就是这个目录的使用者必须是named,且分数最少也是750.如图

 

 

linux主辅DNS的搭配_职场_03

3. 结尾

   到这里基本上主辅DNS的配置就基本完成了,现在我们看看重启named服务,看看是否可以主辅同步更新

我们进入辅DNS的slaves目录下,观察此目录的文件

 

linux主辅DNS的搭配_dns_04

 

此时,slaves路径下是没有任何文件的。但如果我们重启了named服务后,我们再观察:

 

linux主辅DNS的搭配_职场_05

 

发现没,呵呵主DNS的记录已经被拷贝过来了。

现在我们在客户端上进行下试验,在客户端上,将DNS解析地址设为辅助DNS的地址,看看是否可以解析:

 

linux主辅DNS的搭配_linux_06

 

结果是毫无问题的,解析成功,同样反向解析也是一样:

 

linux主辅DNS的搭配_辅助_07

 

 

在这里需要强调一下每次主DNS记录更新的时候,就像本章一开始说的那样, 辅助服务器会查询其serial值,如果辅助的serial值大于主DNS,则辅助DNS不会去更新,只有辅助DNS的serial小于主DNS时候才会更新,所以我们主dns更新后,要记得将serial变的大于辅助DNS值。如图

 

linux主辅DNS的搭配_职场_08

 

                                                                 主DNS

 

linux主辅DNS的搭配_辅助_09

 

                                                           辅助DNS

Ok,我们现在做个试验,在主DNS的正向解析中添加一个记录:

 

 

 

linux主辅DNS的搭配_职场_10

这个时候我们先看看辅助DNS的example.com这个文件的内容是怎样的:

 

linux主辅DNS的搭配_dns_11

 

 现在我们主DNS重启named服务:

 

linux主辅DNS的搭配_dns_12

 

现在在开观察辅助DNS的变化:

 

linux主辅DNS的搭配_dns_13

 

   呵呵,发现没,辅助DNS的zone记录已经发生了改变。所以serial值必须是主大于辅才可以。现在我们在客户端上看看是否可以解析到这个新的地址(客户端上的DNS指向的是辅服务器)

 

linux主辅DNS的搭配_休闲_14

 

 呵呵没问题吧,到这里我们这章就结束了,下个章节我们讲讲述加密更新方面的内容,不过那要等我稍微复习下才可以。

   初学者写的教程,如果有错误欢迎指正