NDS domain name server (域名服务)

协议: DNS  

                UDP 53

                TCP 53

实现软件 bindBerkeley Internet Name Domain PowerDNS , dnsmasq 

 

 名称解析:将一种格式的信息转化为另外一种格式,以某关键字为标准查找某一数据库的过程

      

                 passwd <--> nsswitch转换

                loginnsswitchlogin提供服务

                nsswitch配置文件在/etc/nsswitch


   hostsfiles dns  

            

            files  /ect/hosts  (存放主机名或者别名和IP

            dns  不用host文件 集中向一个服务器提出申请

            

##分布数据库 

         

     根域(.-->一级域(ICCNA)-->二级域(组织域)

     namespace:名称空间  容纳名称的整体范围

     一级域: 

      组织域:.com , .org , .mil , .gov , .edu , .net.jp,.ir(伊朗),.iq(伊拉克).us,.uk

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

     反向域: .in-addr.arpa

     

   <!--  递归:逐层解析   

           迭代:DNS才会迭代   

           根拒绝回答递归问题 

    -->

 FQDNFull Qualified Domain Name 完全域名解析

 FQDN --> IP 正向解析

 IP --> FQDN 反向解析



##查询

  递归查询 :只发出一次请求对方给出最终答案

  迭代查询 :发起一次请求,不一定得到答案

  课户端指向的DNS服务器,一定是允许给本地主机做递归的     



##资源记录的类型

     数据库每一个条叫一个资源记录(Resource Record,资源记录有类型 ,用于表示资源的功能 

       

       SOA start of authority  起始授权 

       NS  :    Name Server,  域名服务器

       MX :  Mail eXchanger  邮件交换器

       AAddress,(FQDN-->IP  地址记录 正解 

       PTR: PoiTeR,IP-->FQDN   指针记录   反解

       AAAA: Address,FQDN-->IPv6    

       CNAME:Canonical Name,正式名称(别名记录)


            <!-- 早期的DNS 只支持 FODN-->iP ,正方向解析数据不同,不能存放于同一个数据库进行 -->

            

    : Domain ,逻辑概念 

    区域: zone ,物理概念  也就是数据文件

    

 DNS服务器类型:

          DNS服务器

          辅助DNS服务器

          缓冲名称服务器

           转发服务器

       DNS的数据库文件(区域数据文件,区域自身有名字):文本文件,只能包含资源记录或宏定义,每行一个


 资源记录的格式

 

        name  [ ttl 缓存纪录]   IN  RRtype(资源记录类型)   Value

        列子: 

            www 600 IN  A 1.2.3.4

            www.magedu.com. 600 IN A 1.2.3.4  

 

      SOA 只能一个

            

            name : 只能是区域名称,通常可以简写为@,例如:magedu.com.

            value n个数值,最主要的是主DNS服务器的FQDN,点不可省略

           <!-- 注意:SOA 必须是区域数据库文件第一条记录-->

      例子:

          @  600 IN SOA  na.magedu.com.  邮箱地址(dnsadmin.magedu.com. ;@变为. ) 序列号(serial number) ; 注释内容,十进制数据,不能超过10位,通常使用日期,例如2014031001

             刷新时间(refresh time) ;即每隔多久到主服务器检查一次

             重试时间(retry time) ;应该小于refresh time

             过期时间(expire time) 

             netgative answer ttl    ;否定答案的ttl   客户端可以缓存多久的

          

                                <!--          ;是注释-->

    NS 可以有多条    

                    name: 区域名称,通常可以简写为@

                    value  DNS 服务器的FQDN(可以使用相对名称)

                例如: @ 600 IN NS ns 

        

        A 

              name :  FQDN ( 可以使用相对名称)

              value: IP 

        列子: 

            www  600 IN  A  1.2.3.4

            www  600 IN  A   1.2.3.5

             ftp     600 IN  A   1.2.3.5

             

     AAAA ipv6 

     MX :可以有多个

             name : 区域名称,用于标示 smtp 服务器

              value :包含优先级和FQDN

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

        列子:

                  @ 600 IN  MX  10 mail       

                  @ 600 IN  MX  20  mail2    

       CNAME     别名

                         name : FQDN 

                         value :FQDN

         列子: ftp  IN  CNAME  www

        

        PTR  指针纪录  IP-->FQDN  只能记录在方向区域数据文件中,反向区域名称为逆向网络地址加 .in-addr.arpa.  后缀组成

                name: IP ,主机地址反过来写  例如: 172.16.100.7 name 7.100,完全格式为:7.100.16.172

                value : FQDN      

    列子: 

         4.3.2  600 IN PTR   www.maged.com.

    

    

##区域传送 

     定义: 辅助DNS服务器从主DNS服务器或其他的辅助DNS服务器请求数据传输过程

                 完全区域传送:传送区域的所有数据,AXFR

                 增量区域传送:传送区域中改变的数据部分,IXFR

                

        

        

##视图 view 


    acl telecom{

     1.2.0.0/16

     4.5.8.0

     }

     acl unicom{

     6.4.0.0/16

     4.5.3.0

     }

    view {   //一个逻辑的dns服务器

          recursion no;  不给递归

           match-clients {telecom};  //telecom 是一个acl 范围

            zone "magelinux.com"  IN {

                   type master ;

                   file "magelinux.com.internal";  //文件可以是同一个

            };

     };

     view {    

              match-clients{ unicom }; //unicom 是一个 acl 范围

               zone "magelinux.com" IN {

                    type master;

                    file "magelinux.com.external";

               };

     };

     缺陷: 如果IP地址没有收集齐全,就悲剧了, 所以最好还是定义一个Other (默认)

     

     view {

        match -clients {any ;}

        zone "magelinux.com" IN {

           type master;

           file "magelinux.com.other";

         };

     };

      

           只要写入view,所有的都应该写在view

           自上而下匹配

     

##bind  iscwww.isc.org

      主配置文件: :定义区域 /etc/named.conf

        案例: magelinux.com

                        

##配置bind 

  1. 主配置文件   定义区域  /etc/named.conf

                    

                    至少有三个区域: 

                         根,localhost ,127.0.0.1  

            options {

                    listen -on  port 53     any;};

                    //全局选项  

                    directory "/var/named" ;

                    allow-query { any; }; 允许所有客户端查询

                    recursion  yes | on  是否运行递归

                

             }  ;   

             

             zone "zone name"  IN {

              //定义区域的 

                   type{hint()|master()|slave()|forward(转发)}    

                    file “named.ca”

             } ; 

             

             loggin {

                   //定义日志的 

             };

           

             include "文件位置"   加载别的文件  

                   

         <!--

             named-checkconf 检查主配置文件  service named configtest

             named -u named     手动启动

             name-checkzone "区域" “区域文件位置”  检查配置文件  -->

             定义监听的地址


            recursion 是否允许递归查询


dig 命令

  

              dig [-t type] [-x a  ddr] name @DNS服务器

              +[no]trace []适用迭代

              +[no]tcp 是否使用tcp

              +[no]recurse:是否使用递归

                  

host

    

              host[-t type] {name} [server]

            

            

nslookup   


         nslookup>

                      server DNS_SERVER_IP

                      set q=TYPE

                      {name}

                                     

                


 2. 区域数据文件 /var/named/

    

            用户: named

             组: named 

            

            

            

    ##反向解析区域数据库文件 区域名称以逆向的网络地址,并以.in-addr.arpa为后缀

             第一条必须SOA 

             应该具有NS记录,但不能出现MXA 记录

             较常见的即为PTR纪录

                    名称为逆向的主机地址

                    

反解: 

        

             zone "100.16.172.in-addr.arpa " IN

                     type  master ;

                     file "172.16.100.zone";

            

             /var/named/下创建172.16.100.zone

             ![](media/14595736364157/14601888712923.jpg)    

        tail /var/log/messages 检查日志

        dig -x 172.16.100.7

        检查区域  named-checkzone "100.16.172.inaddr.arpa" 172.16.100.zone

        

    


##区域传送: 

  

                      dig 模拟完全区域传送

                        dig -t axfr 区域名称 @server

                      

                      主从同步:  /etc/resolv.conf

                         nameserver   Master_DNS_IP   

                         nameserver   SLAVE_DNS _IP     

         主从版本:

                    主: bind版本可以低于从的版本

                    从: 主的版本不能高于从的版本   兼容问题

        

        向区域中添加从服务器的关键两步

                     1. 在上级获得授权)

                     2. 在区域数据文件中为从服务器添加一天ns记录和对应的A记录 PTR纪录

                     

        /etc/named.rfc1912.zones

           zone "magelinux.com"  IN {

                 type slave;

                 masters { 172.16.100.7 ; };

                 file "slaves/magelinux.com.zone"; 

            }

            

            区域传送安全控制:   

                   allow-transfer { IP };    指定IP做区域传送

            

##rndc   Remote Name Domain Controller 

    远程管理bind的工具                            

     Rndc : 密钥      

           rndc :保存于rndc 的配置文件中

           bind 持有一半点的密钥,保存于主配置文件中

     

     rndc 的配置文件 /etc/rndc.conf

            CentOS ,RHEL : /etc/rndc.key 

    

     reconfig 只重新读取配置文件并且加载新增加的区域

    querylog 关闭或开启查询日志

     stop  关闭服务

     flush 清空服务器的缓存

    flushname name:只清空指定名称相关的缓存

    trace:打开debug,调试模式,debug有级别的概念,每执行一次提升一个等级

    trace LEVEL:指定debug的级别    


     如果rndc无法正常工作,可尝试使用rndc-confgen生成/etc/rndcconf配置文件,并将配置文件中的后半部分复制到BIND的主配置文件中按指示启用即可         

      rndc-confgen  > /etc/rndc.conf

   

##bind子区域的授权实现  (正向)

      定义: 在父域的配置文件中添加如下项: 

                授权的子区域名称

                子区域的名称服务器

                子区域的名称服务器的IP地址

         名称    IN    NS  IP   dns.tech   子域名 

       

          glue record  胶水效果     

          

##配置区域转发:转发域

        定义: 解析某本机不负责的区域内的名称时不转发给根,而是转给制定的主机            转发非本机负责解析的所有区域

                 options{

                       forward only|frist

                       forwarders{ ip; }

                  }

                  

      转发某特定区域

                 zone"特定区域" IN{

                             type forward;

                             forwarders{ ip; }

                             forward only | frist  

                          <!--     only:服务器将只会请求 forwarders中的DNS主机    

                               frist 服务器首先请求 forwarders list ,如果 forwarders list 中的DNS主机不应答,该主机将自己去找应答-->

                 }

            运行使用转发的前提: 本机要在对方的允许的递归主机列表中  

           



##安全控制选项:

   

     allow-transfer{};通常都需要启用,从服务器

     allow-query{};此项仅用于服务器是缓存名称服务器时,只开放查询功能给本地客户端

     allow-recursion{可以使用网段};允许递归的白名单

     allow-update{ none; }:允许动态更新数据文件的主机白名单


##ACL:BIND支持使用访问控制列表

    acl ACL_NAME{

      172.16.0.0/16

      192.168.0.0/24

      127.0.0.0/8

    } 

    

    访问控制列表只有定义后才能使用,通常acl要定义在named.conf的最上方

    BIND有四个内置的acl

    any:任何主机

    none:无一主机

    local:本机

    localnet:本机所在的网络           

    

    view,编译安装named,如何实现对named做压力测试,BIND dlz

     

     

     

     

     

     

     

     

##搭建本地非权威解析DNS配置过程

    

     1.修改/etc/named.conf

            listen-on port 53 {any;};

            allow-query {any;};

            

    2.修改/etc/named.rfc1912.zones 添加要解析的域

            zone "xxx.com" IN {

                  type master;

                  file "xxx.com.zone";

                  allow-update {none;};

            }  ;

            

     3. 添加数据库文件/var/named/xxx.com.zone 

            xxx.com. IN SOA  ns1.xxx.com. root.xxx.com. (20160402 1d 1h 1w 1h) 

            xxx.com. IN NS ns1.xxx.com.

            ns1.xxx.com. IN A  192.168.30.98

            www.xxx.com IN A 192.168.30.98

            

     4.重启服务

                    service named restart

        

    5. 修改/var/named/xxx.com.zone 文件的用户和用户组

                         chown named.named /var/named/ —R

        

    6.检查nameserver 是否为本机IP 

                    nameserver  192.168.30.98

    

    7.重启服务

               service named restart

    

    8.  nslookup  测试 nslookup IP 

    

## bind子域授权的实现

                

                $TTL 600

                @ IN SOA dns.magelinux.com. dnsadmin.magelinux.com. (

                         20160410 1H  5M 3D 12H)

                    IN NS     dns

                    IN MX  10 dns

                www IN A 192.168.1.11

                dns IN A 192.168.1.10

                mail IN A 192.168.1.12

                pop IN CNAME mail

                ftp IN CNAME www

                

                //加入信息

                 tech IN NS  dns.tech.magelinux.com.

                 dns.tech.magelinux.com.  IN  A  192.168.10   

             

                要在另外一台服务器中增加 

                            vim /etc/named.rfc1912.zones

                            

                            zone "tech.magelinux.com" IN {

                                    type master;

                                    file "tech.magelinxu.com.zone";

                            }

                    

                 创建一个 techo.magelinux.com.zone 

                               $TTL 600

                               @ IN SOA  dns.tech.mageliunx.com (20160410 1H 5M 3D 1D)

                                   IN NS dns 

                                   IN MX 10 mail 

                        dns IN A 192.168.2.10

                        www IN A 192.168.2.11

                        ftp     IN A 192.168.2.12

                        更改属组 和权限