1、什么是DNS?

 DNS是计算机域名系统或域名解析服务器(Domain Name Server或Domain Name System) 的缩写,它是由解析器以及域名服务组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。DNS使用TCP与UDP端口号都是53,主要使用UDP,服务器之间备份使用TCP。

域名解析分为正向解析和反向解析:

  正向解析式根据主机名称查找对应的IP地址  主机名--->IP

  反向解析是根据IP地址查找对应的主机域名    IP  --->主机名

全球有13台根域名服务器,主根服务器在美国。

  根: .        

  顶级域:.com .net  .org  .edu  .cn  .uk  ...    

  二级域:.com.cn  .net.com                

  三级域:.sina.com.cn    

DNS查询方式有两种:迭代查询和递归查询。

 迭代查询的过程

   A-->B A向B请求,B不知道但B说C可能知道

   A-->C A又向C请求,C不知道但D可能知道

   A-->D 于是A又向D请求

   A<--D D将信息告诉A,最终A找到需要的信息

 递归查询过程

  A-->B-->C-->D A向B请求,B不知道B向C请求,C不知道向D请求

  A<--B<--C<--D D将信息告诉C,C将信息告诉B,B将信息告诉A,最终A找到需要的信息

DNS服务器可以分为三种:缓存域名服务器(向其他域名服务器查询的结果缓存到本地)

                       主域名服务器(特定DNS区域的官方服务器)

                       从域名服务器(解析记录来源于主域名服务器)。


2、构建缓存域名服务器

  本人的实验是在centos6.4上操作。主域名服务器IP地址192.168.0.104,从域名服务器IP地址192.168.0.106。

  安装DNS服务软件,BIND域名服务:yum install -y bind

[root@server ~]# yum install -y bind

  备份并清空主配置文件/etc/named.conf

[root@server ~]# cp /etc/named.conf /etc/named.conf.bak
[root@server ~]# > /etc/named.conf

  编辑配置主配置文件:vim /etc/named.conf

[root@server ~]# vim /etc/named.conf
options {
    directory "/var/named";  //存放解析信息的数据库目录
};
zone "." IN  {    //根域解析配置
    type hint;
    file "named.ca";  //根域数据文件
};

 确认根域的区域数据文件:cat  /var/named/named.ca

 启动named服务:/etc/init.d/named start

 在客户机中验证缓存域名服务器

C:\Users\Administrator>nslookup
默认服务器:  dns1.gzgwbn.com.cn
Address:  211.162.62.1
> server 192.168.0.104
默认服务器:  [192.168.0.104]
Address:  192.168.0.104
> www.baidu.com
服务器:  [192.168.0.104]
Address:  192.168.0.104
非权威应答:
名称:    www.a.shifen.com
Addresses:  61.135.169.105
          61.135.169.125
Aliases:  www.baidu.com

知识点:NS域名服务器记录,MX邮件交换记录,A正向解析,PTR反向解析,CNAME别名记录


3、构建主域名服务器

安装DNS服务软件,BIND域名服务:yum install -y bind

备份并清空主配置文件的内容

[root@server ~]# cp /etc/named.conf /etc/named.conf.bak
[root@server ~]# > /etc/named.conf

编辑主配置文件:vim /etc/named.conf


[root@server ~]# vim /etc/named.conf
options {
    directory "/var/named";
};
zone "." IN  {
    type hint;
    file "named.ca";
};
zone "test.com" IN {   //配置域名,正向解析
    type master;    //类型是主域名服务器
    file "test.zone";  //解析数据文件
};
zone "0.168.192.in-addr.arpa" IN {   //反向解析
    type master; 
    file "192.168.zone";
};

改变配置文件所属主:chown named /etc/named.conf

初始化解析记录:cd /var/named/;dig -t NS . > named.ca

编辑正向解析数据文件/var/named/test.zone

[root@server ~]# cd /var/named/
[root@server named]# vim test.zone
$TTL 86400
@                   IN      SOA     test.com.  admin.test.com.     (
                                                                        2114191601
                                                                        1H
                                                                        10M
                                                                        7D
                                                                        1D
                                                                           )
@                   IN          NS          test.com.
test.com.          IN          A           192.168.0.104
www                 IN         A           192.168.0.2

编辑反向解析数据文件/var/named/192.168.zone

[root@server named]# vim 192.168.zone
$TTL 86400
@                    IN      SOA     test.com.  admin.test.com.      (
                                                                        2013081601
                                                                        1H
                                                                        10M
                                                                        7D
                                                                        1D
                                                                        )
@                    IN          NS          test.com.
104                    IN          PTR         test.com

检测文件:named-checkconf

检测正解析、反解析文件named-checkzone

[root@server named]# named-checkzone "test.com" /var/named/test.zone
//正向解析文件检测
zone test.com/IN: loaded serial 20131081601
OK
[root@server named]# named-checkzone "0.168.192.in-addr.arpa" /var/named/192.168.zone
//反向解析文件检测
zone 0.168.192.in-addr.arpa/IN: loaded serial 2013081601
OK

生成 rndc.key文件

[root@server named]# rndc-confgen -r /dev/urandom -a   //生成文件
wrote key file "/etc/rndc.key"
[root@server named]# chown named:named /etc/rndc.key  

启动named:/etc/init.d/named start

验证主域名服务器

[root@server named]# nslookup
> server 192.168.0.104  //指定域名服务器
Default server: 192.168.0.104
Address: 192.168.0.104#53
> www.test.com   //正向解析
Server:         192.168.0.104
Address:        192.168.0.104#53
Name:   www.test.com
Address: 192.168.0.2
> 192.168.0.104   //反向解析
Server:         192.168.0.104
Address:        192.168.0.104#53
104.0.168.192.in-addr.arpa      name = test.com.0.168.192.in-addr.arpa.

配置DNS转发

[root@server named]# vim /etc/named.conf
options {
    directory "/var/named";
//添加下面两条语句
    forward first;
    forwarders { 8.8.8.8; }; //指定转发到什么域名服务器上
};

3、构建从域名服务器

安装DNS软件:yum install -y bind

备份并清空主配置文件的内容:cp /etc/named.conf /etc/named.conf.bak

                              > /etc/named.conf

编辑配置文件:vim /etc /named.conf

root@client ~]# vim /etc/named.conf
     options {
         directory "/var/named";
     };
     zone "." IN  {
          type hint;
          file "named.ca";
     };
      zone "test.com" IN {
            type slave;   //从域名服务器
            file "slaves/test.zone";   //数据文件存放目录
            masters { 192.168.0.104; };  //主域名服务器IP
     };
      zone "0.168.192.in-addr.arpa" IN {
            type slave;
            file "slaves/192.168.zone";
            masters { 192.168.0.104; };
     };

生成rndc.key文件

[root@client slaves]# rndc-confgen -r /dev/urandom -a
wrote key file "/etc/rndc.key"
[root@client slaves]# chown named:named /etc/rndc.key

从域名服务器启动named: /etc/init.d/named start
查看是否成功生成文件

[root@client ~]# ll /var/named/slaves/
总用量 8
-rw-r--r--. 1 named named 345 4月  27 11:06 192.168.zone
-rw-r--r--. 1 named named 375 4月  27 10:19 test.zone

从服务器上测试

[root@client ~]# nslookup
> server 192.168.0.106
Default server: 192.168.0.106
Address: 192.168.0.106#53
> www.test.com
Server:         192.168.0.106
Address:        192.168.0.106#53
Name:   www.test.com
Address: 192.168.0.2
> 192.168.0.104
Server:         192.168.0.106
Address:        192.168.0.106#53
104.0.168.192.in-addr.arpa      name = test.com.0.168.192.in-addr.arpa.

 也可这样测试dig @127.0.0.1 www.test.com


4、加快主从同步

在localhost.zone中添加一行:

[root@server named]# vim test.zone
//添加下面一行
ftp      IN           CNAME                www

在主域名服务器上配置:vim /etc/named.conf #在test1.com的zone中增加两行

[root@server named]# vim /etc/named.conf
zone "test.com" IN {
    type master;
    file "test.zone";
//添加下面两行
    notify yes;
    also-notify { 192.168.0.106; };  //添加从服务器IP
};

重启主域名服务:/etc/init.d/named restart

验证从服务器中的文件是否同步

[root@client ~]# cat /var/named/slaves/test.zone
$ORIGIN .
$TTL 86400      ; 1 day
test.com                IN SOA  test.com. admin.test.com. (
                                2013081601 ; serial
                                3600       ; refresh (1 hour)
                                600        ; retry (10 minutes)
                                604800     ; expire (1 week)
                                86400      ; minimum (1 day)
                                )
                        NS      test.com.
                        A       192.168.0.104
$ORIGIN test.com.
ftp                     CNAME   www  //已同步
www                     A       192.168.0.2

同步时间 :ntpdate s1a.time.edu.cn

[root@client ~]# ntpdate s1a.time.edu.cn
27 Apr 11:22:32 ntpdate[1525]: adjust time server 202.112.10.60 offset 0.002257 sec