Linux上DNS实现工具之bind详叙






 一、DNS的描叙及层次结构:

1、DNSdomain name service,即域名服务,是把复杂的IP地址解析成我们易于记忆并理解的域名,以方便在网络上通信。

2、DNS的层次:DNS呈金字塔状结构,根域在最顶层,向下依次为一级域、二级域、三级域(或有或无)、主机名。如下所示:

                A、根域:. ,以“.”来标识,全世界有13组根域服务器。

                B、一级域:(1)组织域:.com,.org .mil .gov .edu .net

                           (2)国家域:.cn.hk.tw.jp.ir.iq.us.uk

                           (3)反向域:.in-addr.arpa

                C、二级域:需要向一级域申请和注册二级域名,如:xybbs.comhello.net.

                D、三级域:可有可无,通常用在父子域关系中,如:tech.hello.edu.

                E、主机:具体的主机,即FQDNFull Qualified Domain Name,完全合格的域名,如:www.baidu.com

二、linux上的DNS实现程序工具:

   1、实现工具:BIND(Berkeley Internet NameDomain), PowerDNS, dnsmasq。我们以bind为例来介绍DNS的安装和使用。

   2、使用yum安装bind程序包以及相应的路径:

       图1

   图2



三、名称解释:

           1DNS查询类型:

           (1)递归查询:只发出一次请求就得到最终结果。只有客户端主机才能向DNS服务器递归,且DNS服务器必须允许客户端递归,即recursion yes,客户端才能得到结果。根域是不允许客户端主机递归的。

           (2)迭代查询:经过多次查询才能返回结果。只有DNS服务器才能向其他DNS服务器进行多次迭代查询。

           2、名称解析类型:

             (1)正向解析:通过完全合格的域名来解析IP地址。

             (2)反向解析:通过IP地址来解析完全合格的域名。

           3、资源记录的类型:

             (1SOAStart OfAuthority起始授权,上级区域授权某一区域来管理的区域。SOA只能有一个。

             (2NSName Server,域名服务器,标明某一DNS服务器所管理的区域。NS可以有多个,如辅助DNS服务器的NS记录,子域的NS记录。

             (3MXMaileXchanger邮件交换器,标明该区域的邮箱服务。

             (4Ainternetaddress,地址记录,通常是正向解析。

             (5PTRPoiTeR,指针记录,通常用于反向解析。

             (6AAAAaddressIPV6的正向解析记录。

           (7CNAME: Canonical Name,别名记录。通常用于A记录的别名。

         4DNS服务器类型:

           (1)主DNS服务器:只能有一个。

           (2)辅助DNS服务器:辅助主DNS服务器工作,在主DNS服务器宕机的时候能顶替上去,辅助DNS要实时从主DNS同步区域名称和区域数据库文件。辅助DNS可以有多个。

           (3)缓存名称服务器:缓存其它客户端向DNS服务器递归查询后,DNS服务器迭代查询所缓存的的DNS记录。

           (4)转发DNS服务器:某一DNS服务器无法查询的记录会转发给其它DNS服务器进行查询,那么前一个DNS服务器就是一个转发DNS服务器。

         5、区域传送:辅助DNS服务器从主DNS服务器或其它的辅助DNS服务器请求传输数据的过程:

           (1)完全区域传送:传送区域的所有数据,命令为AXFR

           (2)增量区域传送:传送区域中改变的数据部分,命令为IXFR

         6、子域授权:父域DNS服务器授权子域DNS服务器所管理的区域。所以父域DNS服务器的配置文件中要有:授权的子区域名称、子区域的名称服务器、子区域的名称服务器的IP地址,并且子域要设置好自己的区域数据文件,并把DNS服务器指向父域。如:父域为:yanhai.com.,子域为tech.yanhai.com.

         7、转发机制:配置好父子域之后,子域会无法解析父域的资源记录,或子域想解析其它区域的资源记录,那么就得在子域上做好转发,并把地址指向想要解析的区域。转发分2种,区域转发和全局转发,如果想解析某一或某些区域,则设置区域转发,如果想让本地客户端解析所有区域,则设置全局转发。

         8view视图:通常是让内外网或不同地区访问某一网站时,访问的FQDN都一样,但解析的IP地址不同。View提高了不同地区访问网站的速度。

         9rndc Remote Name Domain Controller,即远程名称域控制器,是远程管理BIND的工具,能够实现重新载入区域数据文件、重新加载主配置文件等远程操作。

四、正向解析、反向解析的实现:

1、配置bind的主配置文件/etc/named.conf

图片3

图4

2、从一级域.com那里申请yanhai.com.的二级域名,并在/etc/named.rfc1912.zones中配置yanhai.com的区域:

图片5

图6

3、正向区域的区域数据库文件:

7

图8

说明:

资源记录的格式:

               name    [ttl]    IN       RRtype           Value

1SOA:只能有一个

    name: 区域名称, 通常可以简写为@,例如:yanhai.com.

    value: DNS服务器的FQDN

    注意:SOA必须是区域数据库文件第一条记录

    如:@    600     IN          SOA          dns.yanhai.com.       admin.yanhai.com.(

    serialnumber ;序列号,十进制数字,不能超过10位,通常使用日期,例如2014031301

    refreshtime;刷新时间,即每隔多久到主服务器检查一次

    retrytime;重试时间,应该小于refresh time

    expiretime;过期时间

    negativeanswer ttl;否定答案的ttl

(2) NS:可以有多条

   name: 区域名称,通常可以简写为@

   value: DNS服务器的FQDN(可以使用相对名称)

   如:@          600      IN      NS           dns

 (3A只能定义在正向区域数据库文件中

     name: FQDN(可以使用相对名称)

     value: IP

     如:www         600           IN         A         172.16.35.100

  (4) MX: 可以有多个

      name: 区域名称,用于标识smtp服务器

      value: 包含优先级和FQDN

      优先级:0-99, 数字越小,级别越高

      如:@     600    IN       MX   10        mail

          @     600    IN       MX   20        mail2

 (5CNAME: 别名

      name: FQDN

      value: FQDN

      如:

         ftp      IN       CNAME          www

         pop      IN       CNAME          mail

 (6PTR:IP-->FQDN, 只能定义在反向区域数据文件中,反向区域名称为逆向网络地址加.in-addr.arpa.后缀组成

   name: IP, 逆向的主机地址,例如172.16.35.100name100.35,完全格式为。100.35.16.172.in-addr.arpa.

   value: FQDN

  4、反向区域的区域数据库文件:

  图9

 图10


5、更改主配置文件和区域数据库文件的属主为root,属组为named,权限为640

11

6、重启bindnamed服务:

12

7、dig工具模拟正向解析:

13

8、dig工具模拟反向解析:

14

五、主DNS和辅助DNS服务器的实现:

    1、配置辅助DNS服务器的IP172.16.35.2,并把DNS指向主DNS服务器的地址172.16.35.1

      图15

2、辅助DNS服务器安装bind程序。

3、在主DNS服务器上的正向区域数据库文件中添加辅助DNS服务器的NS记录及其A记录:

   图16

4、在辅助DNS服务器上的/etc/named.rfc1912.zones文件中定义区域yanhai.com,区域类型为slave,即辅助DNS服务器,masters中写上主DNS服务器的IP,并指定辅助DNS服务器的区域数据库文件在slaves目录下:

17

5、在主DNS服务器上生成远程DNS控制器的配置文件:

  图18

  图19

6、rndc配置文件中后半部分内容复制到/etc/named.conf中去:

  图20

7、重启named服务,并查看rndc运行状态:

  图21

8、重启辅助DNS服务器后查看其数据库文件已传送成功:

22

9、在主DNS服务器上添加一条A记录,并把序列号增加一个数:

  图23

10、重启主DNS服务器和辅助DNS服务器的named服务,然后查看辅助DNS的数据库文件中已成功传送到一条A记录:

  图24

11、在辅助DNS服务器上使用host解析2A记录:

  图25

六、子域授权和转发机制:

1、在子域tech.yanhai.com中设置子域DNS服务器的IP172.16.35.3DNS地址指向父域172.16.35.1yanhai.com):

  图26

2、注释子域的主配置文件中的某些部分,见图3

3、在子域DNS服务器上的/etc/named.rfc1912.zones文件中配置子域信息:

27

4、配置子域的区域数据库文件:

28

5、更改子域的区域数据库文件的权限及属主、属组:

29

6、在父域yanhai.com的区域数据库文件中添加子域的NS记录和子域的A记录:

30

7、分别重启父域和子域的named服务。

8、在父域上能解析子域的A记录:

     图31

9、在子域上能解析本区域的A记录:

 图32

10、在子域上无法解析父域的资源记录,原因是在子域上没有配置转发:

 图33

11、在子域的区域文件中配置对yanhai.com区域的解析都转发到yanhai.com区域:

    图34


12、重启子域的named服务后,子域能够解析父域的主机了:

35

13、如果想让子域内客户端能够通过北京DNS服务器来上网,可在主配置文件的全局选项中添加转发地址为北京DNS服务商的地址,或是如果父域和互联网相通,子域可在主配置文件的全局选项中添加转发的IP为父域的IP

      图36

七、view视图:

  1、在一台linux服务器上配置2IP,一个为内网用户解析,一个为外网用户解析:

37

2、注释掉viewDNS服务器的主配置文件的某些部分,如图3

3、/etc/named.rfc1912.zones中定义视图:

38

图39

4、配置相同区域解析不同IP的区域数据库文件:

40

      图41

5、更改2个区域数据库文件的权限和属主属组:

42

6、重启named服务后在内网和外网各解析www.yanhai.com,解析的IP不同:

43

图44

八、结束语:

至此,bind中基本的解析配置都已完成,DNS中还涉及一些高级的配置,还待我们进一步研究。。。






本文出自 “言海” 博客,谢绝转载!

Linux上DNS实现工具之bind详叙,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。