一、DNS主从同步原因及过程


   为了保证更好地进行域名解析服务,一般在网络中设置主、从两台DNS服务器。

     主从服务器触发同步过程的原因有4种:

               1.从域名服务器刚刚启动;

               2.主域名服务器的Serial值增大;

               3.执行了rndc reload命令;

               4.到了主从服务器的同步更新时间。  

       主从域名服务器同步过程:

             1. 主服务器向从服务器发送notify消息

             2. 从服务器收到主服务器发送notify消息,向主服务器返回一个notify response消息。

             3. 从服务器向主服务器发送SOA query消息。

             4. 主服务器向从服务器返回SOA response消息。

             5. 从服务器收到SOA response消息后,比对自身的Serial值,如果发现主服务器的Serial值大于自身的Serial值,那么就发送Zone transfer request消息。

             6. 主服务器返回Zone transfer response消息。

             7. 主服务器执行Zone transfer。


二、准备工作

   

   1、准备两天服务器:

       主服务器:172.16.251.45

       从服务器:172.16.251.46


   2、分别安装DNS

       yum -y install bind

       yum -y  install bind-utils (包含一些配置和测试工具)



三、配置主DNS服务器


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

           vim /etc/named.conf        

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
//  listen-on port 53 { 127.0.0.1; };
//  listen-on-v6 port 53 { ::1; };
    directory   "/var/named";
    dump-file   "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
//  allow-query     { localhost; };
    recursion yes;
//  dnssec-enable yes;
//  dnssec-validation yes;
//  dnssec-lookaside auto;
    /* Path to ISC DLV key */
//  bindkeys-file "/etc/named.iscdlv.key";
//  managed-keys-directory "/var/named/dynamic";
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {
    type hint;
    file "named.ca";
};
include "/etc/named.rfc1912.zones";
//include "/etc/named.root.key";

   

   2、/etc/named.rfc1912.zones最下面添加正向解析、反向解析区域文件

           vim /etc/named.rfc1912.zones      

zone "test1.com" IN {                    //正向解析
        type master;                      //类型为主DNS
        file "test1.com.zone";          //正向解析文件位置
        allow-transfer { 172.16.251.46; }; //授权从DNS连接主DNS
        allow-update { none; };           //允许自动更新
};
zone "251.16.172.in-addr.arpa" IN {      //反向解析
        type master;                     //类型为主DNS
        file " 172.16.251.zone";           //反向解析文件位置
        allow-transfer { 172.16.251.46; };//授权从DNS连接主DNS
        allow-update { none; };          //允许自动更新
};


   3、在/var/named/目录中编辑正反向解析文件

           vim /var/named/test1.com.zone

$TTL 600
@        IN   SOA    dns.test1.com   dnsmail.test1.com. (//SOA字段
                          2014031945   //版本号    同步一次  +1
                             1H        //更新时间
                             2M        // 更新失败,重试更新时间
                             2D        // 更新失败多长时间后此DNS失效时间
                             1D        //解析不到请求不予回复时间
)
         IN    NS   dns            //有两域名服务器
         IN    NS   ns2
         IN    MX  10  mail        // 定义邮件服务器,10指优先级  0-99 数字越小优先级越高
ns2      IN    A    172.16.251.46  //ns2域名服务器的ip地址
dns      IN    A    172.16.251.45  //dns域名服务器的ip地址
mail     IN    A    172.16.251.1   //邮件服务器的ip地址
www      IN    A    172.16.251.2   //www.test1.com的ip地址
pop      IN   CNAME  mail          //pop的正式名字是mail
ftp      IN   CNAME  www           //ftp的正式名字是www


   4、在/var/named/目录中编辑反反向解析文件

       vim /var/named/172.16.251.zone

$TTL 600
@        INSOA    dns.test1.com   dnsmail.test1.com. (
                   2014031945
                   1H
                   2M
                   2D
                   1D
)
     IN    NS     dns.test1.com.
10   IN    PTR    dns.test1.com.        //反向解析PTR格式
1    IN    PTR    mail.test1.com.
2    IN    PTR    www.test1.com.
// 声明域的时候已经有了,172.16.251 所以我们只需要输入45既代表172.16.251.45


   5、检查语法错误,修改权限

       named-checkconf

       named-checkzone "test1.com" /var/named/test1.com.zone

       named-checkzone "251.16.172.in-addr.arpa" /var/named/172.16.251.zone

           wKioL1Mq5MLjQjBaAADJFqx52XI681.jpg


       把两个自定义区域文件的属组改为named

       安全起见,把这2个文件权限改成640

 

chown :named test1.com.zone    //若这步没做正向解析会出现”server can't find www.cwlinux.com:SERVFAIL”的错误
chown :named 172.16.251.zone    //若这步没做反向解析会出现”server can't find 45.251.16.172.in-addr.arpa:SERVFAIL”的错误
chmod 640 test1.com.zone 172.16.251.zone

       

       重启bind服务

service named restart         //需要敲打键盘。。。如果时间较长请耐心


   6、在主DNS上测试正反向解析

dig -t A www.test1.com @172.16.251.45    //正向解析测试
dig -x 172.16.251.1 @172.16.251.45       //反向解析测试

   wKioL1Mq50fhS7moAAGyvp_olPA819.jpg


wKioL1Mq51-SZGGJAAGkizyOOXY886.jpg



四、配置从DNS服务器


   1、配置从DNS主配置文件/etc/named.conf,和主DNS内容一样

           vim /etc/named.conf      


     2、在/etc/named.rfc1912.zones最下面添加正向解析、反向解析区域文件

           vim /etc/named.rfc1912.zone

zone "test1.com" IN {                       //正向解析  
        type slave;                             //类型为从DNS
        masters { 172.16.251.45; };     //主DNS ip地址
    file "slaves/test1.com.zone";       //test1.com.zone拷贝到slaves目录下(/var/named/slaves)
        allow-update { none; };         //允许自动更新
};       
zone "251.16.172.in-addr.arpa" IN {  
        type slave;                  
        masters { 172.16.251.45; };         
        file "slaves/172.16.251.zone";
        allow-update { none; };        
};

       

   3、重启从DNS

        service named restart

       wKiom1Mq7YPCR7MnAAEh1-h_eC4738.jpg

       无限打打字中。。。

       查看从主服务器自动拷贝过来的正反向解析文件

       ls /var/named/slaves/

       wKioL1Mq7ffz5Fp9AABQJk9zwOM493.jpg

   

   4、测试从DNS正向解析  

dig -t NS test1.com @172.16.251.46
dig -x 172.16.251.2 @172.16.251.46

      wKioL1Mq8CmTJBf-AAGmbO_fdaw535.jpg


       wKiom1Mq8HbTFS8EAAGZDQ6ow28227.jpg



五、主从同步

       

   在主DNS /var/named/text1.com.zone 中修改版本号并加一条A记录(红线部分)

   wKiom1Mq8x-xmpAwAADc0bH0Qpo600.jpg

   注意:主DNS版本号必须大于从DNS版本号

   重读DNS文件

   service named reload


   wKioL1Mq81-ShfczAAE3wpC0Dno631.jpg

 

    同步成功!



以上就是DNS主从同步