我们在互联网上实现的访问大多都是基于IP的访问,而我们每一台主机又不可能记录全球所有其他主机的IP,我们需要一种可以让我们人类便于记忆的方法。这就用到了域名。比如:www.taobao.com;我们更多的是记忆淘宝的域名而不是淘宝所对应的IP,所以我们就需要一种服务来实现域名和IP的相互解析。这就是DNS也就域名解析服务诞生的初由。

    DNS :域名解析服务;

    从解析的方式上分为正向解析和反向解析。正向解析也就是从域名到IP的解析,反向解析就是从IP到域名的解析。

    从服务的类型上分为主DNS服务和从DNS的服务。从DNS服务器主要是为了分担主DNS服务器的压力。比如说一个大型网站的访问量很大,当有很多的PC机要访问时,那么解析该网站的DNS服务器就可能不能及时的响应。这就造成用记在访问一个网站被“卡”很长时间,这显然是不合理的。所以要用到从DNS服务器来缓解主DNS服务器的压力。从DNS是解析数据完全是从主DNS的数据库中更新过来的。但大家要记住一点的是当主DNS服务器由于某些原因停止工作的话,那么从DNS服务器也就不再工作了;还有就是主DNS不能解析的地址从服务器也根本不能解析。

      下面主要讲述的是本机利用回环接口实现的本地域名解析服务:

   首先,在LINUX上实现域名解析服务的rpm包的名字是 bind包。进程服务是 named.服务端口是53. 在实现服务之前我们要确保我们已经安装了bind的rpm包。我这里演示的是安装bind97的包。至于怎样使用yum安装rpm包,我就不扯了,你懂得。完成的效果是这样的:

   named服务的配置文件在 /etc/named.conf文件中。其中定义了域的类型各

对应的数据文件,整个配置过程中要注意分号的使用是很重要的,不然就会报错。

内容如下:

    options {

#定义数据文件默认的路径;

         directory "/var/named/"

};

#定义根域;(根域是装载后自动生成的,其中定义的是全球的13台根DNS服务器)

zone "." IN {

     type hint;

     file "named.ca";

};

下面的是自己定义的要解析的域;

#正向解析本机的名称(也可以不定义):

zone "localhost" IN {

        type master;

        file "localhost.zone";

};

#反向解析回环接口(也可以不定义):

zone "0.0.127.in-addr.arpa" IN {

            type master;

            file "127.0.0.zone";

};

#定义自己要正向解析的域名:

zone "xiaowei.com" IN {

          type master;

          file "xiaowei.zone";

};

#定义自己要反向解析的地址:以自己本机的ip实际情况而定;

zone "16.172.in-addr.arpa" IN {

            type master;

            file "172.16.zone";

};

修改文件的属性属组named 模式640

到此,定义/etc/named.conf文件已经完成,我们要创建上面我们用到的/var/named/目录中的文件。

   named.ca文件是我们在安装bind的rpm包时自动生成的,记录了全球13台根服务器的IP。 

    然后创建localhost.zone ,如下:

#定义缓存时间

$TTL 123 

# @是继承我们在/etc/named.conf文件中定义的域名 。每不个文件必须要有一个SOA记录,标识该域内的主DNS是谁。

@      IN     SOA      admin.localhost.(

# 日期(用于标识该数据的新旧度)

             2012061701

#定义刷新时间(刷新是为了及时的更新数据,当我们在下面增加或删除条目时我们都要及时的刷新和同步)

             1H 

#定义重试时间 (当我们的请求没有被响应时我们要重试服务)

            30M

#过期时间 (定义缓存的时间是1天)

            1D

#否定时间 (在服务器的数据中没有要被解析的域时就给一明确的否定,持续1天)

           1D

(继承上面的@)        IN        NS        localhost.

(继承上面的@)        IN        A          127.0.0.1

    创建完成以后我们切记要修改文件的属性:属组named  640模式   

 上面的步骤就定义完成了实现本地的DNS域名解析。我们也可可以使用dig命令来测试语法错误:

如:dig -t  axfr 0.0.127.in-addr.arpa 

     再创建xiaowei.zone,类似于上面的localhost.zone文件。我们可以复制然后再进行修改:

$TTL 500

@    IN     SOA       xiaowei. admin.xiaowei.(

                       2012061701

                        1D

                        2H

                        2D

                        1D)

);

     IN      NS       xiaowei.zone

@    IN       A        172.16.121.1

 到此,文件xiaowei.zone的文件已经定义完成,保存后我们也要修改它的属组为named ,640的模式。

    最后是创建反向解析 

$TTL 600

@         IN       SOA          xiawei.       admin.xiaowei. (

                   2012061701

                    1D

                    7H

                    1D

                   1D )

        IN     NS      xiaowei.

1.121   IN     PTR     xiaowei.

然后保存就可以了。之后要修改权限和属性。

  这样就做成了基于本地的回环接口的一个域名解析服务。

  然后我们用dig -t A 172.16.121.1测试.

 这样我们就完成了一个基于正向解析和反向解析的主DNS服务器的定义。

     下面我们来说明从服务器的定义:

   在另一个IP的主机上定义从服务器:

  比如说我们上在一个IP为172.16.111.1上为我们前面的xiaowei.com 的正向解析定义一个从服务器。那么我们也是先安装bind包,之后定义/etc/named.conf 的配置文件:下面就以作xiaowei.com这个域的从服务器为例:

   zone "xiaowei.com"  IN {

          type slaves;

          file "slaves/xiaowei.zone"; 这里必须说明的是必须在slaves目录下,                                       因该目录的属主属组都是named,不然别                                       的目录以named身份没有权限。

       masters {172.16.121.1; } 这里可以定义多个master地址,因为一台从服务                                  器可以作为多台主DNS服务器的从服务器。

};

之后重启服务从服务器就会根据他所要同步的主DNS服务器的域的日期进行同步。

 这样就定义了一台从DNS服务器。

    下面我们来说明子域授权的问题 。

     先说什么是子域授权:

      这就好比是一个国家的管理机构一样:根DNS结点授权给一个区域内的某一台主机来完成DNS的解析来减轻根DNS的压力。

     还以我们上面的例子为例:

    子域授权只需我们在 /var/named/xiaowei.zone中添加一行就可以完成子域授权:

      假如我们们在xiaowei.com下有一个子域tech.xaiowei.com 

那么我们就可以在/var/named/xiaowei.com中添加一行来完成子域授权。

     可以这样添加 :

xiaowei.com   IN     NS     tech.xiaowei.com

tech.xiaowei.com   IN    A     172.16.111.1

      这样就完成了子域授权。然后重新载入就可以生效了。当下有请求要解析       AA.tech.xiaowei.com 时,当请求给送到xiaowei.com时xiaowei.com这台根DNS服务器不会解析,会把它所授权的tech.xiaowei.com的IP地址发给请求主机,而请求主机会再向tech.xiaowei.com 发出域名解析的请求。而tech.xiaowei.com恰恰有该记录。那么就可以返回给请求主机他所要解析的请求的结果。

    这就完成了子域授权。