DNS服务器原理以及搭建主-辅DNS服务器操作指南

 

    DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。 域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区。


  主-辅DNS服务器:

    主DNS服务器:维护所负责解析的域数据库的那台服务器,读写操作均可进行

    辅助DNS服务器:从主DNS服务器那里或其他的从DNS服务器那里“复制”一份解析库,但只能进行读操作

      “复制”操作的实施方式:

         序列号:serial,也即是数据库的版本号,主服务器数据库内容发生变化时,其版本号递增

         刷新时间间隔:refresh,从服务器每隔多久到主服务器检查序列号更新状况

         重试时间间隔:retry,从服务器从主服务器请求同步解析库失败时,再次发起尝试请求的时间间隔

         过期时长:expire,从服务器始终联系不到主服务器时,多久之后放弃从主服务器同步数据,停止提供服务

         否定答案的缓存时长:negative answer ttl


    主服务器“通知”从服务器随时更新数据


    区域传送:

        全量传送:axfr,传送整个数据库

        增量传送:ixfr,仅传送变量的数据



    区域(zone)和域(domain):

       listen.com域:

         FQDN --> IP

           正向解析库;区域

         IP --> FQDN

           反向解析库;区域


    区域数据库文件:

       资源记录:resource record,简称rr

         记录类型:A,AAAA,PTR,SOA,NS,CNAME,MX


         SOA:Start Of Authority,起始授权记录:一个区域解析库有且只能有一个SOA记录,而且必须放在第一条

         NS:Name Server,域名服务记录:一个区域解析库可以有多个NS记录,其中一个为主的

         A:Address,地址记录:FQDN --> IPv4

         AAAA:地址记录:FQDN -->IPv6

         CNAME:Canonical Name,别名记录

         PTR:Pointer,IP -- FQDN

         MX:Mail eXchanger,邮件交换器

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


         资源记录的定义格式:

            语法:  name   [TTL]   IN    RR_TYPE     value


         注意:

           (1)TTL可以全局继承

           (2)@表示当前区域的名称

           (3)相邻的两条记录其name名称相同时,后面的看省略

           (4)对于正向区域来说,各MX、NS等类型的记录的value为FQDN,此FQDN应该有一个A记录


      程序包:(程序包使用yum安装即可)

         bind-libs:被bind和bind-utils包中的程序共同用到的库文件

         bind-utils:bind客户端程序集,例如:dig,host,nslookup等

         bind:提供dns server程序、以及几个常用的测试程序

         bind-chroot:选装,让named运行与jail模式下



      bind:

         主配置文件:/etc/named.conf

            或包含进来其他文件

                /etc/named.lscdlv.key

                /etc/named.rfc1912.zones

                /etc/named.root.key

         解析库文件:

            /var/named/目录下

                一般名字为:ZONE_NAME.zone


         注意:

             (1)一台DNS服务器可同时为多个区域提供解析

             (2)必须要有跟解析库文件,named.ca

             (3)还应该有两个区域解析库文件,localhost和127.0.0.1的正方向解析库

                  正向:named.localhost

                  方向:named.loopback


        rndc:remote name domain contoller(远程名称域触发器)

            953/tcp,但默认监听与127.0.0.1地址,因此仅允许本地使用


        bind程序安装完成之后,默认即可做缓存名称服务器使用,如果没有专门负责解析的区域,直接即可启动服务

            CentOS 6:service named start

            CentOS 7:systemctl start named.service


        主配置文件格式:

            全局配置段:

               options{......}

            日志配置段:

               logging{......}

            区域配置段:

               zone{......}

                  那些由本机负责解析的区域或转发的区域

            注意:每个配置语句必须以分号结尾



            缓存名称服务器的配置:

               监听能与外部主机通信的地址;

                   listen-on port 53 {127.0.0.1;};


               学习时,建议关闭dnssec(配置文件默认路径为/etc/named.conf)

                   dnssec-enable no;

                   dnssec-validation no;

                   dnssec-lookaside no;


               关闭仅允许本地查询:

                   //allow-query     { localhost; };



            检查配置文件语法错误:

                #named-checkconf [/etc/named.conf]


            测试工具:

                dig,host,nslookup等


                dig命令:

                   dig [-t RR_type] name [@SERVER] [query options]


                      用于测试DNS系统,因此不会查询host文件


                      查询选项:

                         +[no]trace:跟踪解析过程

                         +[no]recurse:进行递归解析


                示例:

                   ~]# dig -t A www.baidu.com

                   ~]# dig +trace -t A www.baidu.com

                   ~]# dig -t A www.baidu.com @192.168.73.133


                   注意:反向解析测试

                      dig -x IP

                   模拟完全区域传送:

                      dig -t axfr DOMAIN [@SERVER]



                host命令:

                   host [-t RR_type] name SERVER_IP

                  示例:

                     ~]# host -t A www.baidu.com 192.168.73.133



                nslookup命令:

                   nslookup [-options] [name] [server]

                   交互式模式:

                      nslookup>

                         server ip:以指定的IP为DNS服务器进行查询

                         set q=RR_TYPE:要查询的资料记录类型

                         name:要查询的名称


                  示例:

                     [root@localhost named]# nslookup 

                     > server 192.168.73.133

                     Default server: 192.168.73.133

                     Address: 192.168.73.133#53

                     > set q=A

                     > www.baidu.com

                     Server: 192.168.73.133

                     Address: 192.168.73.133#53


                     Non-authoritative answer:

                     www.baidu.com  anonical name = www.a.shifen.com.

                     Name: www.a.shifen.com

                     Address: 163.177.151.109

                     Name: www.a.shifen.com

                     Address: 163.177.151.110



                rndc命令:named服务控制命令

                    rndc status

                    rndc flush


主DNS服务器配置步骤:


            配置解析一个正向区域:

               以listen.com域为例:

               (1)定义区域

                  在主配置文件中或主配置文件辅助配置文件中实现

                     zone"ZONE_NAME" IN {

                        type {master|slave|hlnt|forward};

                        file "ZONE_NAME.zone";

                     };


                     注意:区域名字即为域名


               (2)建立区域数据文件(主要记录为A或AAAA)

                  在/var/named/目录下建立区域数据文件


                     文件为/var/named/listen.com.zone

                     [root@localhost named]# cat /var/named/listen.com.zone 

                     $TTL 3600

                     $ORIGIN listen.com.

                     @           IN       SOA     ns1.listen.com.    admin.listen.com. (

                                   2018120401  

                                   1H

                                   10M

                                   3D

                                   1D)

                                 IN        NS      ns1.listen.com.

                                 IN        MX  10  mx1

                                 IN        MX  20  mx2    

                     mx2         IN        A       192.168.73.142

                     mx1         IN        A       192.168.73.141

                     ns1         IN        A       192.168.73.133

                     ns2         IN        A       192.168.73.140

                     www         IN        A       192.168.73.133

                     web         IN        CNAME   www


                    权限及数组修改:

                      #chgrp named /var/named/listen.com.zone

                      #chmod o= /var/named/listen.com.zone


                    检查语法错误:

                      #named-checkzone ZONE_NAME ZONE_FILE

                      #named-chekconf


               (3)让服务器重载配置文化和区域数据文件

                   #rndc reload 或 #systemctl reload named.service


            配置解析一个反向区域:

               (1)定义区域

                  在主配置文件中或主配置文件辅助配置文件中实现

                     zone"ZONE_NAME" IN {

                        type {master|slave|hlnt|forward};

                        file "ZONE_NAME.zone";

                     };

                     

                     注意:方向解析区域的名字

                         反写的网段地址.in-addr.arpa

                            73.168.192.in-addr.arpa


               (2)定义区域解析库文件(主要记录为PTR)

                  示例:

                    [root@localhost named]# cat 73.168.192.in-addr.arpa.zone 

                    $TTL 3600

                    $ORIGIN 73.168.192.in-addr.arpa.


                    @      IN     SOA      ns1.listen.com.    admin.listen.com.(

                               2018120401

                               1H

                               10M

                               3D

                               12H)

                           IN     NS      ns1.listen.com.

                   142     IN     PTR     mx2.listen.com.

                   141     IN     PTR     mx1.listen.com.

                   133     IN     PTR     ns1.listen.com.

                   140     IN     PTR     ns2.listen.com.

                   133     IN     PTR     www.listen.com.


                    权限及数组修改:

                      #chgrp named /var/named/listen.com.zone

                      #chmod o= /var/named/listen.com.zone


                    检查语法错误:

                      #named-checkzone ZONE_NAME ZONE_FILE

                      #named-chekconf


               (3)让服务器重载配置文化和区域数据文件

                   #rndc reload 或 #systemctl reload named.service


辅助DNS服务器配置:


       配置一个从区域:

          On Slave

            (1)定义区域

              定义一个从区域:

                 zone "ZONE_NAME" IN {

                     type slave;

                     file "slaves/ZONE_NAME.zone";

                     masters { MASTER_IP };

                 };


                 配置区域语法检查:

                 #named-checkconfig

            (2)重载配置

              #rndc reload

              #systemctl reload named.service

                    

          On Master

            (1)确保区域数据文件中为每个从服务配置NS记录,并且在正向区域需要为每个从服务器的NS记录的主机名配置一个A记录,且此A后面的地址为真正的从服务器的IP地址


          注意:时间要同步

              ntpdate命令


  



以下为主DNS服务器相关配置文件配置内容:


[root@www ~]# tail -11 /etc/named.rfc1912.zones 

zone "listen.com" IN {

    type master;

    file "listen.com.zone";

allow-update { none; };

};

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

    type master;

    file "73.168.192.in-addr.arpa.zone";

allow-update { none; };

};



[root@www ~]# cat /var/named/listen.com.zone 

$TTL 3600

$ORIGIN listen.com.

@           IN       SOA     ns1.listen.com.    admin.listen.com. (

                2018120401  

                1H

                10M

                3D

                1D)

            IN        NS      ns1.listen.com.

            IN        MX  10  mx1

            IN        MX  20  mx2    

mx2         IN        A       192.168.73.142

mx1         IN        A       192.168.73.141

ns1         IN        A       192.168.73.133

ns2         IN        A       192.168.73.140

www         IN        A       192.168.73.133

web         IN        CNAME   www


ops         IN        NS      ns1.ops

ns1.ops     IN        A       192.168.73.136



[root@www ~]# cat /var/named/73.168.192.in-addr.arpa.zone 

$TTL 3600

$ORIGIN 73.168.192.in-addr.arpa.


@      IN     SOA      ns1.listen.com.    admin.listen.com. (

            2018120402

            1H

            10M

            3D 

            12H )

        IN     NS      ns1.listen.com.

142     IN     PTR     mx2.listen.com.

141     IN     PTR     mx1.listen.com.

133     IN     PTR     ns1.listen.com.

140     IN     PTR     ns2.listen.com.

133     IN     PTR     www.listen.com.


辅助DNS服务器区域配置文件内容:


[root@bogon slaves]# tail -10 /etc/named.rfc1912.zones 

zone "listen.com" IN {

        type slave;

        file "slaves/listen.com.zone";

        masters { 192.168.73.133; };

};

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

        type slave;

        file "slaves/73.168.192.ip-addr.arpa.zone";

        masters {192.168.73.133;};

};


注意:辅助DNS服务器的区域解析库文件会根据主DNS服务器自动生成,默认路径为/vat/named/slaves下

[root@bogon ~]# ll /var/named/slaves/

总用量 8

-rw-r--r--. 1 named named 474 1月   4 13:52 73.168.192.ip-addr.arpa.zone

-rw-r--r--. 1 named named 608 1月   4 13:46 listen.com.zone