DNS服務和Bind配置


 一、DNS介紹

  

   DNS是計算機域名系統(Domain Name System 或Domain Name Service) 的縮寫,它是由域名解析器和域名服務器組成的。域名服務器是指保存有該網絡中所有主機的域名和對應IP地址,並具有將域名轉換爲IP地址功能的服務器。其中域名必須對應一個IP地址,一個IP地址可以有多個域名,而IP地址不一定有域名。域名系統採用類似目錄樹的等級結構。域名服務器通常爲客戶機/服務器模式中的服務器方,它主要有兩種形式:主服務器和轉發服務器。將域名映射爲IP地址的過程就稱爲“域名解析”。


  DNS所監聽的端口: 53/UDP,53/TCP(默認)。 一般情況下僅使用UDP協議進行訊通,若網絡出現連接問題會自動轉爲TCP協議通訊

   

  傳輸層協議: TCP, UDP, SCTP

TCP: Transmission Control Protocol

面向連接的協議:雙方通信之前需要事先建立虛連接;

UDP:User Datagram Protocol

無連接的協議:雙方無須通信之前需要事先建立虛連接;


 二、DNS域的組成
       根域:爲DNS根節點服務器,用"."表示            

            全球有13組DNS根服務器
        
       頂級域:top level domain
        分類:
         組織域:.com, .org, gov, .edu, mil
         國家域:.tw, .hk, .cn
         反向域:.in-addr.arpa

         頂級域是由根域劃分,由各種組織或商業公司代理

        

      二級域:
       二級域就是我們常見的網站名,例如taobao.com就是一個二級域的域名,www.taobao.com是taobao.com這個域中的某個主機


    三、FQDN 

    FQDN:(Fully Qualified Domain Name)完全合格域名/全稱域名,是指主機名加上全路徑,全路徑中列出了序列中所有域成員。全域名可以從邏輯上準確地表示出主機在什麼地方,也可以說全域名是主機名的一種完全表示形式。從全域名中包含的信息可以看出主機在域名樹中的位置。DNS解析流程:首先查找本機HOSTS表,有的直接使用表中定義,沒有查找網絡連接中設置的DNS 服務器由他來解析
  例如,acmecompany公司的Web服務器的全域名可以是 acmecompany.,而若sales主機是在銷售部子域,則它的全域名可以是sales.acmecompany。當給出的名字像acmecompany而不是acmecompany.時,他們通常是指主機名,而名字後邊帶有點號(“.”是指根域名服務器)的則認爲是全域名。這種區別在理解和控制解析過程時是非常重要的。點號實際上指出了域名樹的根


  四、DNS查詢

  DNS查詢分爲:spacer.gif遞歸查詢和迭代查詢


  (1)遞歸查詢: recursion

   遞歸查詢是一種DNS 服務器的查詢模式,在該模式下DNS 服務器接收到客戶機請求,必須使用一個準確的查詢結果回覆客戶機。如果DNS 服務器本地沒有存儲查詢DNS 信息,那麼該服務器會詢問其他服務器,並將返回的查詢結果提交給客戶機。


 (2)迭代查詢: iteration  

   DNS 服務器另外一種查詢方式爲迭代查詢,DNS 服務器會向客戶機提供其他能夠解析查詢請求的DNS 服務器地址,當客戶機發送查詢請求時,DNS 服務器並不直接回複查詢結果,而是告訴客戶機另一臺DNS 服務器地址,客戶機再向這臺DNS 服務器提交請求,依次循環直到返回查詢的結果

爲止。

兩種過程的示意圖:

    wKiom1cMn4GjL4XYAARD_psTqLg164.png


   個人總結:

       DNS遞歸:內網區域(客戶端---->服務器,服務器找到符合條件的內容---->客戶端)


       DNS迭代:外網區域(客戶端---->服務器,服務器找不到,讓客戶端找根)

   

五、DNS名稱解析方式:

     名稱 --> IP:正向解析

IP --> 名稱:反向解析

注意:二者的名稱空間,非爲同一個空間,即非爲同一棵樹;因此,也不是同一個解析庫;


六、DNS一次完整的查詢請求經過的流程:

       Client --> hosts文件 --> DNS Local Cache --> DNS  Server (recursion) --> 

自己負責解析的域:直接查詢數據庫並返回答案;

不是自己負責解析域:Server Cache --> iteration(迭代)


 www.taobao.com爲例

     

  1、當客戶端要解析一個域名時,客戶端首先分析本地hosts文件,若無對應的主機條目,就去分析

本地緩存,若沒有答案,則向本地DNS服務器發起請求 。       
  2、DNS服務器接收到請求,首先分析服務器本地的緩存,看是否存在要解析的答案,有則直接返回,沒有則向根發起請求

  3、根接收到請求,但根並不負責任何遞歸性的回答,所以,根會返回www.taobao.com的頂級域.com所在的主機地址給本地DNS服務器   

  4、本地DNS服務收到根的指向性答覆,然後去找負責.com的DNS服務器

  5、負責.com的DNS服務器發現taobao.com是自己的管理的區域,但自己並不負責做遞歸性的答覆

所以返回負責解析taobao.com的DNS服務器地址給本地DNS服務器

  6、本地DNS服務器向負責解析taobao.com這個域的DNS服務器發起請求

  7、負責解析johnson.com這個二級域的DNS服務器接收到解析www.johnson.com請求後,分析自己的區域數據庫文件,發現存在www主機,給本地DNS服務器返回答案

  8、本地DNS服務器收到答覆,將答案返回給客戶端,域名解析過程完成   


七、DNS服務器類型和配置


   主DNS服務器:維護所負責解析的域數據庫的那臺服務器;讀寫操作均可進行;

   從DNS服務器:從主DNS服務器那裏或其它的從DNS服務器那裏“複製”一份解析庫;但只能進行讀操作;

    “複製”操作的實施方式:

  序列號:serial, 也即是數據庫的版本號;主服務器數據庫內容發生變化時,其版本號遞增;

  刷新時間間隔:refresh, 從服務器每多久到主服務器檢查序列號更新狀況;

  重試時間間隔:retry, 從服務器從主服務器請求同步解析庫失敗時,再次發起嘗試請求的時間間隔;

 過期時長:expire,從服務器始終聯繫不到主服務器時,多久之後放棄從主服務器同步數據;停止提供服務;

 否定答案的緩存時長:

    主服務器“通知”從服務器隨時更新數據;

    區域傳送:

   全量傳送:axfr, 傳送整個數據庫;

   增量傳送:ixfr, 僅傳送變量的數據;


  主從服務器配置:

 注意:從服務器是區域級別的概念;

配置一個從區域:

  (1) 定義區域

zone "ZONE_NAME"  IN {

type  slave;

file  "slaves/ZONE_NAME.zone";

masters  { MASTER_IP; };

};

  配置文件語法檢查:named-checkconf

  (2) 重載配置

    CentOS 6 ~]# rndc  reload

              CentOS 7 ~]# systemctl  reload  named.service

配置一個主區域:

 (1) 確保區域數據文件中爲每個從服務配置NS記錄,並且在正向區域文件需要每個從服務器的NS記錄的主機名配置一個A記錄,且此A後面的地址爲真正的從服務器的IP地址;

 注意:時間要同步;

   ntpdate命令

            

   

八、區域數據庫文件

   

   8.1  區域(zone)和域(domain)

  magedu.com域:

FQDN --> IP

正向解析庫;區域

IP --> FQDN

反向解析庫;區域



   8.2 資源記錄:Resource Record, 簡稱rr;

  記錄有類型:A, AAAA, PTR, SOA, NS, CNAME, MX

  SOA:Start Of Authority,起始授權記錄; 一個區域解析庫有且只能有一個SOA記錄,而且必須放在第一條;

  NS:Name Service,域名服務記錄;一個區域解析庫可以有多個NS記錄;其中一個爲主的;

  A: Address, 地址記錄,FQDN --> IPv4;

  AAAA:地址記錄, FQDN --> IPv6;

  CNAME:Canonical Name,別名記錄;

  PTR:Pointer,IP --> FQDN

  MX:Mail eXchanger,郵件交換器;

優先級:0-99,數字越小優先級越高;

   8.3 資源記錄的定義格式:

 語法:name   [TTL] IN  RR_TYPE  value


    name:資源名稱,不同資源類型名稱不同

          [ttl]: 緩存有效期,可省略,可以在宏中定義
          IN: Internet,固定格式
          RRtype: 資源類型
          value:資源對應的值

 

   8.4 記錄類型


   SOA:只能有一個

     (1) 當前區域的區域名稱(也可以使用主DNS服務器名稱);

 (2) 當前區域管理員的郵箱地址;但地址中不能使用@符號,一般使用點號來替代;

 (3) (主從服務協調屬性的定義以及否定答案的TTL)

例如:

magedu.com. 86400  IN SOA magedu.com. admin.magedu.com.  (

       2017010801 ; serial(爲數據庫的版本號,十進制格式,不能超過10位)

   2H ; refresh(從服務器到主服務器的更新間隔)

  10M ; retry(更新失敗重試時間,應該小於refresh time)

  1W ; expire(重試多久後,依然沒有聯繫到主DNS,自己拒絕提供服務的時間)

  1D ; negative answer ttl(否定答案緩存時間) 

)

    NS:可以有多條

  name: 當前區域的區域名稱

  value:當前區域的某DNS服務器的名字,例如ns.magedu.com.;

 

例如:

  magedu.com. 86400 IN NS   ns1.magedu.com.

  magedu.com. 86400 IN NS   ns2.magedu.com.

   

   MX:記錄可以有多個;但每個記錄的value之前應該有一個數字表示其優先級;

  name: 當前區域的區域名稱

  value:當前區域某郵件交換器的主機名;

                優先級:0-99,數字越小,優先級越高

     例如:

   magedu.com. IN MX 10   mx1.magedu.com.

   magedu.com. IN MX 20   mx2.magedu.com.

   

   A:

  name:某FQDN,例如www.magedu.com.

  value:某IPv4地址;

例如:

        www.magedu.com. IN A 1.1.1.1

    www.magedu.com. IN A 1.1.1.2

    bbs.magedu.com. IN A 1.1.1.1

   AAAA:

  name:FQDN

  value: IPv6

    PTR:

  name:IP地址,有特定格式,IP反過來寫,而且加特定後綴;例如1.2.3.4的記錄應該寫爲4.3.2.1.in-addr.arpa.;

  value:FQND

例如:

  4.3.2.1.in-addr.arpa.   IN  PTR www.magedu.com.


   CNAME:

  name:FQDN格式的別名;

  value:FQDN格式的正式名字;

 例如:

  web.magedu.com.   IN   CNAME  www.magedu.com.

    注意:

 (1) TTL可以從全局繼承;

 (2) @表示當前區域的名稱;

 (3) 相鄰的兩條記錄其name相同時,後面的可省略;

 (4) 對於正向區域來說,各MX,NS等類型的記錄的value爲FQDN,此FQDN應該有一個A記錄;

  

 九、Bind配置及安裝

   

     BIND: Berkeley Internet Name Domain,  ISC.org

dns: 協議

bind: dns協議的一種實現

named:bind程序的運行的進程名

程序包:

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

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

bind:提供的dns server程序、以及幾個常用的測試程序;

bind-chroot:選裝,讓named運行於jail模式


   

  創建新的DNS主配置文件:

 

      主配置文件:/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


      

      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;

                  listen-on port 53 { 172.16.100.67; };

學習時,建議關閉dnssec

  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系統,因此其不會查詢hosts文件;

查詢選項:

+[no]trace:跟蹤解析過程;

+[no]recurse:進行遞歸解析;

注意:反向解析測試

dig  -x  IP

模擬完全區域傳送:

dig  -t  axfr  DOMAIN  [@server]

host命令:

host  [-t  RR_TYPE]  name  SERVER_IP

nslookup命令:

nslookup  [-options]  [name]  [server]

交互式模式:

nslookup>

   server  IP:以指定的IP爲DNS服務器進行查詢;

   set  q=RR_TYPE:要查詢的資源記錄類型;

   name:要查詢的名稱;

rndc命令:named服務控制命令

rndc  status

rndc  flush

     

    bind view:

視圖:

view  VIEW_NAME {

zone

zone

zone

}

view internal  {

match-clients { 172.16.0.0/8; };

zone "magedu.com"  IN {

type master;

file  "magedu.com/internal";

};

};

view external {

match-clients { any; };

zone "magecdu.com" IN {

type master;

file magedu.com/external";

};

};



  十一、正向和反向區域配置

   

    配置解析一個正向區域:

  以taobao.com域爲例:

  (1) 定義區域

在主配置文件中或主配置文件輔助配置文件中實現;

 zone  "ZONE_NAME"  IN  {

type  {master|slave|hint|forward};

file  "ZONE_NAME.zone"; 

 };

注意:區域名字即爲域名;

  (2) 建立區域數據文件(主要記錄爲A或AAAA記錄)

在/var/named目錄下建立區域數據文件;

文件爲:/var/named/taobao.com.zone

$TTL 3600

$ORIGIN magedu.com.

@       IN      SOA     ns1.taobao.com.   dnsadmin.taobao.com.               2017041201

       1H

            8M

       4D

            2D )

     IN      NS      ns1

IN      MX   10 mx1

IN      MX   20 mx2

ns1     IN      A       172.16.100.67

mx1     IN      A       172.16.100.68

mx2     IN      A       172.16.100.69

www     IN      A       172.16.100.67

web     IN      CNAME   www

bbs     IN      A       172.16.100.70

bbs     IN      A       172.16.100.71

  權限及屬組修改:

~]#  chgrp  named  /var/named/taobao.com.zone

~]#  chmod  o=  /var/named/taobao.com.zone

 檢查語法錯誤:

~]#  named-checkzone  ZONE_NAME   ZONE_FILE

~]#  named-checkconf 

(3) 讓服務器重載配置文件和區域數據文件

~]#  rndc  reload 或

~]#  systemctl  reload  named.service

    配置解析一個反向區域

(1) 定義區域

在主配置文件中或主配置文件輔助配置文件中實現;

zone  "ZONE_NAME"  IN  {

type  {master|slave|hint|forward};

file  "ZONE_NAME.zone"; 

};

注意:反向區域的名字

反寫的網段地址.in-addr.arpa 

100.16.172.in-addr.arpa

(2) 定義區域解析庫文件(主要記錄爲PTR)

示例,區域名稱爲100.16.172.in-addr.arpa;

 $TTL 3600

 $ORIGIN 100.16.172.in-addr.arpa.

 @       IN      SOA     ns1.magedu.com.  nsadmin.magedu.com. (

   2017041201

   1H

   8M

   4D

        2H )

  IN      NS     ns1.magedu.com.

67       IN      PTR     ns1.magedu.com.

68       IN      PTR     mx1.magedu.com.

69       IN      PTR     mx2.magedu.com.

70       IN      PTR     bbs.magedu.com.

71       IN      PTR     bbs.magedu.com.

67       IN      PTR     www.magedu.com.

  權限及屬組修改:

~]# chgrp  named  /var/named/172.16.100.zone

~]# chmod  o=  /var/named/172.16.100.zone

  檢查語法錯誤:

~]# named-checkzone  ZONE_NAME   ZONE_FILE

~]# named-checkconf 

(3) 讓服務器重載配置文件和區域數據文件

~]#  rndc  reload 或

~]#  systemctl  reload  named.service


 十二、主從服務器配置:

 注意:從服務器是區域級別的概念;

配置一個從區域:

(1) 定義區域

zone "ZONE_NAME"  IN {

type  slave;

file  "slaves/ZONE_NAME.zone";

masters  { MASTER_IP; };

};

  配置文件語法檢查:named-checkconf

     (2) 重載配置

    CentOS 6 ~]# rndc  reload

              CentOS 7 ~]# systemctl  reload  named.service

配置一個主區域:

(1) 確保區域數據文件中爲每個從服務配置NS記錄,並且在正向區域文件需要每個從服務器的NS記錄的主機名配置一個A記錄,且此A後面的地址爲真正的從服務器的IP地址;

注意:時間要同步;

ntpdate命令;

 子域授權:

正向解析區域授權子域的方法:

ops.magedu.com. IN NS   ns1.ops.magedu.com.

ops.magedu.com. IN NS   ns2.ops.magedu.com.

ns1.ops.magedu.com. IN A IP.AD.DR.ESS

ns2.ops.magedu.com. IN A IP.AD.DR.ESS


定義轉發:

 注意:被轉發的服務器必須允許爲當前服務做遞歸;

   (1) 區域轉發:僅轉發對某特定區域的解析請求;

   zone  "ZONE_NAME"  IN {

       type  forward;

forward  {first|only};

forwarders  { SERVER_IP; };

   };

  

           first:首先轉發;轉發器不響應時,自行去迭代查詢;

   only:只轉發;

   (2) 全局轉發:針對凡本地沒有通過zone定義的區域查詢請求,通通轉給某轉發器;

   options {

    ... ...

    forward  {only|first};

    forwarders  { SERVER_IP; };

.. ...

   };


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章