首页 > 代码库 > Linux基础服务_DNS原理以及正反向DNS配置

Linux基础服务_DNS原理以及正反向DNS配置

DNS服务的原理介绍:

        dns(Domain Name Service,域名解析服务)    为c/s架构的服务

        通常默认的监听的端口为:53/tcp     53/udp

        将dns服务实现的应用程序为:bind        (rpm包 ) 

     

        DNS的树状结构:

            

                   

技术分享

            根域为:.

            tld:(Top Level Domain  顶级域)

                        组织域:.com, .net, .org, .gov, .edu, .mil

国家域:.iq, .tw, .hk, .jp, .cn, ...


        DNS查询内型:


                递归查询:DNS请求被服务器接受后,如果属于此服务器管辖范围则请求上级服务器依次传递请求,并且依次传递结果给发出请求的主机。

                    

技术分享


                迭代查询:DNS请求被服务器接受后,如果不是自己管辖范围,让客户端访问根域服务器,然后跟域通知客户端去访问下级服务器,直到最后客户端访问管辖请求域名的服务器为止。

                    

技术分享

                DNS客户端设置使用的DNS服务器一般都是递归服务器,它负责全权处理客户端的DNS查询请求,直到返回最终结果。而DNS服务器之间一般采用迭代查询方式。


         DNS解析方式:


          正向解析:  名称(域名)——>IP

          反向解析:   IP——>名称(域名)

                  **二者的名称空间,非为同一个空间,即非为同一棵树;因此,也不是同一个解析库

        

        DNS服务器类型:


            主DNS服务器;从DNS服务器:负责解析一个域或多个域。

            缓存服务器:不负责解析域名


        区域(zone)和域(domain)

            例:

                   xxxx.com为域:            

                   将xxx.com进行正向解析时:正向解析库为区域

                   将xxx.com进行反向解析时:反向解析库为区域

            

                        区域传送

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

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


          区域的数据库文件中相关参数含义:


        资源记录:Resource Record, 简称rr;

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


                            SOA:Start Of Authority,起始授权记录;

                            NS:Name Service,域名服务记录;

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

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

                            CNAME:Canonical Name,别名记录;

                             PTR:Pointer,IP --> FQDN

                             MX:Mail eXchanger,邮件交换器;

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


        资源记录的定义格式:

                语法:  name  [TTL] INRR_TYPE value

               

        SOA:起始授权记录     

  name: 当前区域的名字;
  value:有多部分组成
     (1) 当前区域的区域名称(也可以使用主DNS服务器名称);
     (2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般使用点号来替代;
     (3) (主从服务协调属性的定义以及否定答案的TTL)
  注意:任何解析库文件的第一个记录的类型必须是SOA

         

 例: 
   @     IN     SOA     xxx.com    mailxxx.com  (
                20000001  ; serial    序列号#每增加配置版本号+1
                1D      ; refresh   刷新时间间隔
                1H      ; retry     重式时间间隔
                1W      ; expire    过期时常
                3H )    ; minimum   否定答案的缓存时长

         

    NS:Name Service,域名服务记录

	name: 当前区域的区域名称
	value:当前区域的某DNS服务器的名字,例如dns.xxx.com.;
	       注意:一个区域可以有多个ns记录;
       例:
            xxx.com    IN     NS          dns1.xxx.com
            xxx.com    IN     NS          dns2.xxx.com

    MX:Mail eXchanger,邮件交换器;

     name: 当前区域的区域名称        
     value:当前区域某邮件交换器的主机名;
	
	 优先级:0-99,数字越小优先级越高;
	        
      注意:MX记录可以有多个;但每个记录的value之前应该有一个数字表示其优先级;
例:
    xxx.com    IN  MX     20   mx1.xxx.com
    xxx.com    IN  MX     10   mx2.xxx.com

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

     name:某FQDN,例如www.xxx.com.
      value:某IPv4地址;
例:
    www.xxx.com        IN   A   172.16.0.55
    www.xxx.com        IN   A   172.16.1.11
    edu.xxx.com        IN   A   172.16.0.55


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

   name:FQDN    //表示的为域
   value: IPv6    //代表的IPV6


    PTR:Pointer,IP --> FQDN:反向解析

   name:IP地址,有特定格式,IP反过来写,而且加特定.in-ddar.arpa后缀;
   
           例如172.16.0.55的记录应该写为55.0.16.172.in-addr.arpa.;
   value:FQND
例:
    172.16.0.55.in-ddar.arpa  IN  PTR   www.xxx.com

    CNAME:Canonical Name,别名记录;

       name:FQDN格式的别名;        
       value:FQDN格式的正式名字;		
例:
    edu.xxx.com      IN  CNAME      www.xxx.com   
    sss.xxx.xom      IN  CNAME      www.xxx.com


区域的数据库文件中定义时要注意:

(1) TTL可以从全局继承;

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

(3) 相邻的两条记录其name相同时,后面的可省略;

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


配置正反向的DNS服务前的环境!

    linux中提供的DNS服务包为bind(bekerley internet name domain)

    使用 yum install 安装bind;并使用 rpm -ql 查看安装的程序的环境

程序环境:

    主程序:/usr/sbin/named
    主配置文件:/etc/named.conf, /etc/named.rfc1912.zones
    区域解析库文件:/var/named/
    主配置文件中定义域类型分为:
        主域(master)、从域(slave)、缓存域(hint)、转发域(forward)

  bind的配置文件:

主配置文件:

    /etc/named.conf
    
     或包含进来其它文件;
	/etc/named.iscdlv.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
bind程序安装完成之后,默认即可做缓存名称服务器使用;
                       如果没有专门负责解析的区域,直接即可启动服务;
CentOS 6与CentOS 7的bind启动方法:

CentOS 6: service  named  start
CentOS 7: systemctl  start  named.service

DNS服务的正反向解析配置!

    案例:

        为xxx.ss域配置一个dns服务

        dns服务器地址为:172.16.254.188

         www :  172.16.254.188

         mail:   172.16.252.177

         ftp别名www,指向www


    第一步安装:bind

    第二步修改/etc/named.conf配置文件:

[root@localhost ~]# vim /etc/named.conf 
 
 
options {                                                #全局配置
        //listen-on port 53 { 127.0.0.1; };              #注释后监听全部IP的53端口
        //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; };          #访问控制,注释后允许所有IP访问或改为any
        allow-query     { any; }; 
        recursion yes;                             #是否递归
 
        //dnssec-enable yes;                       //是否启用dns校验的服务注销或者改为no
        //dnssec-validation yes;

        dnssec-enable no;
        dnssec-validation no;
 
        /* 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;
        };
};

 

第三步:在/etc/named.rfc1912.zones创建正反向区域或在/etc/named.conf内配置

zone "xxx.ss" IN {               //正向区域
        type master;
        file "xxx.ss.zone";
};
zone "16.172.in-addr.arpa" IN {         //反向区域   在配置反向区域时IP为反写的并在后加特定的后缀.in-addr.arpa
        type master;
        file "172.16.zone";

第四步:在/var/named/ 下创建相关的正反向区域的配置文件

创建正向区域文件

    [root@localhost named]# vim xxx.ss.zone   #必须与区域文件名保持一致
     
    $TTL 2000
    @       IN      SOA     dns.xxx.ss.     admin.xxx.ss. (
                            2017052901
                            1H
                            5M
                            6D
                            1D )                       
    @       IN      NS      dns
    @       IN      MX 10   mail
    dns     IN      A       172.16.254.188
    mail    IN      A        172.168.252.177
    www     IN      A       172.16.254.188
    ftp     IN      CNAME   www

   

创建反向区域文件

    [root@localhost named]# vim 172.16.zone    #必须与区域文件名保持一致
     
    $TTL 2000
    @     IN    SOA    dns.xxx.ss.      admin.xxx.ss. (
                            2017052901
                            1H
                            5M
                            6D
                            1D )   
    @               IN      NS      dns.xxx.ss.
    188.254         IN      PTR     dns.xxx.ss.
    177.252         IN      PTR     mail.xxx.ss.
    188.254         IN      PTR     www.xxx.ss.

第五步:检查并修改文件权限,检查配置文件语法;

   修改创建配置文件的权限

# chgrp  named   ZONE_FILE NAME
# chmod  o=      ZONE_FILE NMAE

   检查配置文件是否语法错误:

# named-checkzone  ZONE_NAME   ZONE_FILE    
# named-checkconf

第六步开启服务:    

# rndc  reload   服务重载
# systemctl  reload  named.service   重启服务

第七步:产看本地53号端口是否正常监听

ss -tnl

第八步测试:

正向解析:
    dig  -t A     @172.16.254.188
反向解析:
    dig  -x 172.16.254.188   @172.16.254.188

更多的dig命令请自行查找

以上仅为个人学习整理,如有错漏,大神勿喷~~~

本文出自 “kkk” 博客,谢绝转载!

Linux基础服务_DNS原理以及正反向DNS配置