歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網

DNS 服務

日期:2017/3/1 12:04:41   编辑:關於Linux

NDS domain name server (域名服務)
協議: DNS
UDP :53
TCP :53
實現軟件 : bind(Berkeley Internet Name Domain) PowerDNS , dnsmasq

名稱解析:將一種格式的信息轉化為另外一種格式,以某關鍵字為標准查找某一數據庫的過程

             passwd <--> nsswitch轉換
            login:nsswitch為login提供服務
            nsswitch配置文件在/etc/nsswitch

hosts:files 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


FQDN:Full Qualified Domain Name 完全域名解析
FQDN –> IP 正向解析
IP –> FQDN 反向解析

查詢 :

遞歸查詢 :只發出一次請求對方給出最終答案
迭代查詢 :發起一次請求,不一定得到答案
課戶端指向的DNS服務器,一定是允許給本地主機做遞歸的

資源記錄的類型

 數據庫每一個條叫一個資源記錄(Resource Record),資源記錄有類型 ,用於表示資源的功能 

   SOA : start of authority  起始授權 
   NS  :    Name Server,  域名服務器
   MX :  Mail eXchanger  郵件交換器
   A:Address,(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: isc(www.isc.org)

  主配置文件: :定義區域 /etc/named.conf
    案例: magelinux.com

配置bind

主配置文件 定義區域 /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}

區域數據文件 /var/named/

    用戶: named
     組: named 

反向解析區域數據庫文件 區域名稱以逆向的網絡地址,並以.in-addr.arpa為後綴

     第一條必須SOA 
     應該具有NS記錄,但不能出現MX和A 記錄
     較常見的即為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.in-addr.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/rndc。conf配置文件,並將配置文件中的後半部分復制到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
                    更改屬組 和權限     
Copyright © Linux教程網 All Rights Reserved