构建域名缓存服务器

    大家都知道,平时我们访问某个网站输入的一般都是字符串(域名)如:www....com等等,但是在互联网中标识不同的主机的并不是这些字符串,而是主机具体的IP地址,所以我们其实是通过IP地址对某个网站之类的站点进行访问的,大家也许就纳闷了,我输入的就是域名,而不是IP地址啊,这就对了!之所以我们用具有特色容易记忆的域名而不是一串数字组成的IP地址就可以访问站点的主要原因就是因为有DNS这个“幕后英雄。
     DNS的主要作用就是对域名和域名相对于对应的IP进行相互“翻译”的,这个翻译的过程规范的说就是解析,DNS服务器中记录了它所管理的范围内的所有的域名和IP地址的对应关系,当我们输入域名的时候,DNS通过查询自己的记录,将域名解析成与之对应的IP地址,让我们对站点请求连接的数据包可以找到相应的站点,这叫做正向解析,当DNS服务器将IP地址解析为其相对应的域名时,这叫做反向解析。
     我们现在了解到NDS服务器管理的是一个范围(域)的,在这个域内,会有提供不同服务的主机,DNS要通过相应的文本文件记录对这个域的内提供不同服务的主机的信息,针对主机提供不同的服务其记录类型也是不同的,主要的记录类型主要有一下几种:
         A :正向记录,是用来记录域名所对应的IP地址
         NS:(name server)指明当前域内有哪些服务器
         MX:用来指明一个域的邮件服务器
         CANME:进行正式名称和别名的对应
         SOA:标明当前域的起始授权记录,指明当前域内的主DNS服务器
    了解了这些基本的DNS内容之后,我们就可以自己来搭建以个最基础的DNS服务器(域名缓存服务器)来好好了解DNS的真正内容了,下面我们就来搭建一个域内的一个DNS缓存服务器,这个缓存服务器主要是我们为对DNS服务器进行更深一点的了解而搭建的,并不是真正用来放在互联网上进行相应的服务的,所以要相对简单很多。

 搭建过程:

 1、安装软件包bind,由于只是讲解,我们就采用简单的方法安装。

       yum install bind -y       

 2、配置DNS的主配置文件/etc/named.conf,由于这个文件本来不存在,所以我们手动创建。

       vim /etc/named.conf 并添加如下内容:

       options { 

             directory "/var/name/" ;     #定义NDS服务器的全局工作目录

        } ;          

        zone "." IN {                     #声明根区域,在下面我们将具体介绍根区域

             type hint ;

             file "named.ca"

        };       

        zone "localhost" IN {                       #定义本地解析的域

             type master;    类型为主域名服务器

             file "localhost.zone";   文件名

       };

        zone "0.0.127.in-addr.arpa" IN {             #定义本地域的反向解析 

             tpye  master;

              file "named.local"

        };

       保存退出,即可

   3、创建我们在主配置文件中定义的三个文件named.ca localhost.zone  named.local  注意:这三个文件的名字和作用是相对固定的,不能改变。
         (1)创建根区域文件named.ca 
              cd /var/named
              dig -t NS . > named.ca   这个文件保存的是全球的13个根域,当全球的哪个DNS服务器不能解析某个地址的时候就可以直接向这13个根域的主服务器发送解析请求,当让是在联网的前提下。

         (2)创建本地域正向解析文件localhost.zone
              vim localhost.zone  写入如下内容:

          $TTL 86400   定义全局解析缓存的有效期限。                  

        @    IN  SOA    localhost.(主dns服务器的名字)  admin@localhost.(邮箱)(                         2011081601   序列号,最多十位
                      1H   辅助服务器的刷新时间间隔,默认为秒,
                      10M  重试时间, 如果不能联系主服务器,隔多长时间重试连接                             7D  过期时间,如果在这段时间内连接不上主服务器,那么开始自杀
                      1D )  否定回答的ttl值,告诉没有之后,1天内不要 在进行查询
                      IN   NS         localhost.   本地域的NDS服务器
        localhost.    IN    A          127.0.0.1    本地域 的正向解析记录

         (3)创建本地域的反向解析文件named.local
              vim named.local  输入如下内容
              $TTL 86400 。                  
              @             IN  SOA    localhost.   admin@localhost.  (
                                                 2011081601   
                                                 1H                    
                                                 10M            
                                                 7D    
                                                 1D )          
                            IN   NS         localhost.   
                  1         IN   PTR        localhost.   

              保存即可

    4、检查创建文件的语法是否有错误

          由于这些文件对语法的要求十分严格,所以在启动服务前有必要进行语法检测。

          named-checkconf  检查主配置文件的语法错误,若无任何提示,则表示正常

          service named configtest  也可以检查主配置文件语法错误

          named-checkzone "localhost"  "file-name" 用来测试记录文件的语法是否正确

          如果检查语法没有错误,我们就可以启动服务了

          service named start

     5、验证实验结果是否正确

          通过命令dig  -t  A localhost @IP  主机ip  来查看正向解析

                         dig  -x @IP 来查看反向解析  

    如果看到了域名和IP的对应关系则表示解析成功,当让这只是一个最基础的NDS服务器,关于DNS服务器其他功能的添加,将会在后面介绍。