DNS、Bind

下面介紹的是DNS、轉發器、Bind


一、DNS

1、DNS基礎

 對於一個解析區域,我們可以把名稱域比作一棵倒置的樹,其中有根域、頂級域。其中,頂級域又分爲三類,即組織域、地理域、反向域。

 DNS名稱解析方式:正向解析、反向解析(所用的數據庫不同)。正向解析,即名稱到IP地址的解析;反向解析,即IP地址到名稱的解析。

 DNS查詢類型:遞歸查詢、迭代查詢。

 DNS服務器的分類:主DNS服務器、從DNS服務器、緩存DNS服務器。

 區域數據傳送的兩種類型:全量傳送、增量傳送。 

 FQDN:完全合格域名


2、DNS的查詢請求流程:

    Client --> hosts --> Local Cache --> first DNS(recursive) -->

      --> 服務器本地緩存或本地數據庫中有結果,直接響應客戶端;

      --> ROOT(iteration) --> TLD_DNS_SERVER --> 二級域DNS_SERVER --> ... --> ns.xxx. --> 解析結果;


3、主從DNS服務器數據庫的四部分:

(1)、序列號(serial) ---------數據庫的版本號,數據庫變化則自增

(2)、刷新時間間隔(refresh) --------------到主DNS服務器上檢查序列號的變化更新情況的時間間隔

(3)、重試時間間隔(retry) ----------------同步數據庫失敗,再次發起嘗試請求的時間間隔

(4)、過期時間(expire) ---------------接不上主DNS服務器時,從DNS服務器多久後停止服務

(5)、否定答案的緩存時長(minimal TTL)


4、資源記錄(RR)

  資源記錄,就是存放於區域數據庫文件中,用於解析工作的數據。

  

  常見的【7種資源記錄】類型爲:A、AAAA、PTR、SOA、NS、CNAME、MX,具體解釋如下:

(1)、SOA -------------起始授權記錄

  任何一個數據庫中,有且僅有一條,必須是第一條。


(2)、A ------------主機記錄(IPV4)

  標識完全合格域名,到IP地址的映射關係。


(3)、AAAA ------------主機記錄(IPV6)

  標識完全合格域名,到IPV6地址的映射關係


(4)、PTR ----------------指針記錄

  標識IP地址,到完全合格域名的映射關係。


(5)、NS ---------------名稱服務器記錄

  標明當前域中所有的DNS服務器。


(6)、CNAME -----------別名記錄

  標識從完全合格域名,到完全合格域名的映射關係。


(7)、MX ---------------郵件交換器記錄

  標識域中郵件服務器的主機名,從域名映射到完全合格域名


5、七種資源記錄的格式(在區域數據庫中):

 資源記錄格式:name|FQDN  [TTL]  IN  RR_TYPE  VALUE

(1)、SOA資源記錄

  name ------------當前域的域名(qhdlink.com.)/@

  value(三類):

  1)、當前區域的主DNS服務器的FQDN(ns1.qhdlink.com.)

  2)、當前區域數據庫的管理員的郵件地址(mailmaster.qhdlink.com.)

  3)、主從服務器進行區域傳送的相關時間定義及否定答案的統一TTL

    (Serial 1H 15M 1W 1D)

    (

    Serial; --------------序列號

    1H;refresh -----------刷新時間間隔

    15M;retry --------------------重試時間間隔

    1W;expire --------------------過期時間

    1D);minimal ttl -----------否定答案的緩存時長


 示例:

  $TTL 86400

  qhdlink.com. 86400 IN SOA ns1.qhdlink.com. master.qhdlink.com.(

                          2017081001;serial

                          1H;refresh

                          15M;retry

                          1W;expire

                          1D);ttl


(2)、NS記錄

 每個域中,可以有多條NS記錄,但每一條NS記錄必須對應一個A記錄。

  name ------------當前域的域名

  value -----------當前區域內某【DNS服務器】的完全合格域名(ns.qhdlink.com.)


  示例:

  qhdlink.com. 86400 IN NS ns1.qhdlink.com.

  qhdlink.com. 86400 IN NS ns2.qhdlink.com.


  $ORIGIN qhdlink.com.

  $TTL 86400

  IN NS ns1

  IN NS ns2


(3)、MX記錄

 一個域中,可以有多個MX記錄,但每個MX記錄必須與一條A對應。

  name -------------當前域的域名;

  value ------------當前域中某有效的【郵件服務器】的主機名


 示例:

  qhdlink.com. 86400 IN MX 10 mail1.qhdlink.com.


  $ORIGIN qhdlink.com.

  $TTL 86400

  @ IN MX 20 mail2


(4)、A記錄

  name --------------域中某主機的FQDN或主機名稱

  value --------------與主機名對應的IPv4地址


  示例:

  www.qhdlink.com. 86400 IN A 192.168.1.1

  www.qhdlink.com. 86400 IN A 192.168.1.2

  www.qhdlink.com. 86400 IN A 192.168.1.3

  www.qhdlink.com. 86400 IN A 192.168.1.4


  $ORIGIN qhdlink.com.

  $TTL 86400

  www IN A 192.168.1.1


(5)、CNAME記錄

  name -------------別名的FQDN或簡單的名稱

  value --------------真正的名稱的FQDN或其簡單名稱


  示例:

  web.qhdlink.com. 86400 IN CNAME www.qhdlink.com.


  $ORIGIN qhdlink.com.

  $TTL 86400

  web IN CNAME www


(6)、AAAA記錄 -------------與A一致

  name --------------域中某主機的FQDN或主機名稱

  value --------------與主機名對應的IPv4地址


  示例:

  ftp.qhdlink.com. 86400 IN AAAA ::1


(7)、PTR記錄

  name -----------將IP地址反過來寫,再加標準後綴。(1.72.16.172.in-addr.arpa.)

  value --------------域中某主機的FQDN


  示例:

  1.72.16.172.in-addr.arpa. 86400 IN PTR www.qhdlink.com.


  $ORIGIN 16.172.in-addr.arpa.

  $TTL 86400

  1.72 IN PTR www.qhdlink.com.


6、DNS配置(正反向區域配置)

(1)、正向區域配置

  正向區域配置,包括三部分,即:定義區域、創建區域數據文件、重載區域和配置文件。具體解釋如下:

  1)、定義區域的方式-----------/etc/named.rfc1912.zones

      zone "ZONE_NAME" IN {

        type {master|slave|forward|hint};

        file "ZONE_NAME.zone";

      };


  例:zone "qhdlink.com" IN {

        type master;

        file "qhdlink.com.zone";

      };

  

  2)、創建區域數據文件 -----------/var/named/qhdlink.com.zone

    在創建區域數據文件時,需要對ZONE_NAME.zone權限進行修改

    # chown :named qhdlink.com.zone 

    # chmod o-r qhdlink.com.zone

  例:

  $ORIGIN qhdlink.com.

  $TTL 86400

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

                                2017081001;serial

                                1H;refresh

                                15M;retry

                                1W;expire

                                1D);TTL

    IN NS ns1.qhdlink.com.

    MX 10 mx1.qhdlink.com.

  ns1.qhdlink.com.   IN  A   172.16.72.1

  www   IN  A   172.16.100.1

  www   IN  A   172.16.100.2

  www   IN  A   172.16.100.3

  web   IN  CNAME www

  mx1   IN  A   172.16.100.4


  3)、重載區域和配置文件

    # named-checkconf -----------檢測named.conf語法

    # named-checkzone "ZONE_NAME" FILE_NAME ---------檢測域名、區域數據庫文件語法

    # rndc reload ------------重載配置文件

    # systemctl reload named.service

    # service named reload ------------CentOS6

  

(2)、反向區域配置

  反向區域配置,包括三部分,即:定義區域、創建區域數據文件、重載區域和配置文件。具體解釋如下:

  1)、定義區域 -----------------/etc/named.rfc1912.zones

      zone "ZONE_NAME" IN {

        type {master|slave|forward|hint};

        file "ZONE_NAME.zone";

      };


  例:zone "16.172.in-addr.arpa" IN {

        type master;

        file "172.16.zone";

      };


  2)、創建數據庫文件 -------------/var/named/172.16.zone

  修改權限:

  # chown :named 172.16.zone 

  # chmod o-r 172.16.zone

  例:

  $ORIGIN 16.172.in-addr.arpa.

  $TTL 86400

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

                                2017081001;serial

                                1H;refresh

                                15M;retry

                                1W;expire

                                1D);TTL

    IN NS ns1.qhdlink.com.

  1.72  IN  PTR     ns1.qhdlink.com.

  1.100 IN  PTR     www.qhdlink.com.

  2.100 IN  PTR     www.qhdlink.com.

  3.100 IN  PTR     www.qhdlink.com.

  4.100 IN  PTR     mx1.qhdlink.com.


  3)、重載區域和配置文件

    # named-checkconf -----------檢測named.conf語法

    # named-checkzone "ZONE_NAME" FILE_NAME ---------檢測域名、區域數據庫文件語法

    # rndc reload ------------重載配置文件

    # systemctl reload named.service

    # service named reload ------------CentOS6 


7、DNS配置(主從服務器) --------------區域級別

  配置一個從服務,主要包括兩部分,即:定義區域、重載配置文件

(1)、主從服務器定義區域

  zone "ZONE_NAME" IN {

    type slave;

    file "slaves/ZONE_NAME.zone";

    masters { MASTER_IP; };

  };


  例:

  zone "qhdlink.com" IN {

    type slave;

    file "slaves/qhdlink.com.zone";

    masters { 172.16.72.1; };

  };


(2)、重載配置文件

  # named-checkconf

  # rndc reload



二、轉發器

1、區域轉發、全局轉發

  轉發器分爲兩種,即:區域轉發、全局轉發。區域轉發器是針對於某個特定區域的轉發,全局轉發針對的是沒有定義zone的全部區域。

(1)、區域轉發 ------------------/etc/named.rfc1912.zones

  例:  

  zone "baidu.com" IN {

    type forward;

    forward {first|only};

    forwarders { 172.16.72.1; };

  };


  forward {first|only}中:

  first:首先轉發,當指定的轉發器無響應時,再自行迭代

  only:只使用轉發器進行轉發,不執行自行迭代


(2)、全局轉發 -------------------/etc/named.conf

  例:

  options {

    ...

    forward {first|only};

    forwarders { SERVER_IP; };

    ...

  };


2、子域授權

(1)、子域授權

  對子域進行授權,只需在父域的區域文件中直接授權即可。在子域的NS服務器上,直接創建子域的區域文件,管理資源記錄。

 例:

  qhdlink.com內容如下:-------------------區域的文件爲/var/named/qhdlink.com.zone

   tech.qhdlink.com.   IN  NS  ns.tech.qhdlink.com.

   ns.tech.qhdlink.com. IN A   172.16.69.1

  其子域的授權如下(直接加一個域): ------------------/etc/named.rfc1912.zones

    zone "tech.qhdlink.com" IN {

      type master;

      file "tech.qhdlink.com.zone";

    };


(2)、子域的NS服務器解析父域的資源記錄步驟: -------------需定義轉發器(子 ---> 父)

  可以通過區域轉發和全局轉發,使子域能夠通過父域的NS服務器,查找父域中的資源記錄。區域轉發、全局轉發的定義如下:

  1)、定義區域轉發 ----------------/etc/named.rfc1912.zones

    zone "qhdlink.com" IN {

      type forward;

      forward first;

      forwarders { 172.16.72.1; };

    };

  2)、全局轉發 ------------/etc/named.conf

    options {

      ...

      forward first;

      forwarders { 172.16.72.1; };

      ...

    }; 



三、Bind

1、Bind配置文件

 Bind,實現DNS協議的程序,Bind對應的服務器的主程序爲named,named使用的是tcp/udp的53號端口。

 Bind的主配置文件爲:/etc/named.conf。對於該主配置文件,其註釋可以使用單行註釋,也可以採用多行註釋。同時,該配置文件採用分段配置的方式,其配置文件主要分爲6部分,即:訪問控制列表段(acl ACL_NAME)、全局選項段(options)、日誌配置段(logging)、區域配置段(zone "ZONE_NAME" IN)、視圖配置段(view VIEW_NAME)、include包含段(include /PATH/TO/SOME_CONFIG_FILE)。


2、測試工具:dig, host, nslookup

 bind-utils通用工具包中,包含了dig、 host、 nslookup、rndc等測試工具。

(1)、dig命令 ------------DNS查詢

  格式:dig [@Server] [-t RR_TYPE] [query_options]

  常用選項:

  @Server -----------此次的查詢的DNS服務器,若沒有,就讀取/etc/resolv.conf中的nameserver配置項

  -t RR_TYPE ----------查詢請求的資源記錄類型

  +[no]trace ----------跟蹤整個解析過程

  +[no]recurse -----------目標DNS服務器遞歸查詢


  # dig -x IPADDR -----------反向解析

  # dig -t axfr DOMAIN_NAME [@Server] ----------模擬區域傳送


(2)、host命令

  格式:host [-t RR_TYPE] DOMAIN_NAME SERVER

  常用選項:

  -t RR_TYPE ----------查詢請求的資源記錄類型 

  DOMAIN_NAME -----------域名 

  SERVER -----------此次的查詢的DNS服務器


(3)、nslookup命令 ------DNS查詢,多用於windows(交互式)

  > server IP_ADDR ----------DNS服務器的IP地址

  > set q=RR_TYPE ----------資源記錄的類型

  > QUERY_NAME -------------------解析的主機名

  > set type=RR_TYPE ----------資源記錄的類型


(4)、rndc命令 ----------------遠程名稱域控制器、DNS服務器端的控制命令,tcp/953

  # rndc status -----------服務器端的運行狀態

  # rndc reload -----------服務器端程序重載配置爲文件和區域文件


3、bind安全配置,acl訪問控制列表

(1)、bind的四個acl訪問控制列表,如下:none、any、local、localnet。

(2)、acl語法: ------------使用前,確保已定義

  acl acl_name {

    [!] ip;

    [!] network/prefix;

  };


  例:

  acl mynet {

    172.16.0.0/16;

    127.0.0.1;

    ! 172.16.100.100;

  };


4、定義視圖

  view VIEW_NAME {

    match_clients { acl; };

    zone 

    zone

    zone

    ...

  };


視圖配置示例:--------------定義視圖後,所有zone必須定義如視圖內。

view intranet {

  match-clients { mynet; };

  zone "." IN {

    type hint;

    file "named.ca";

  };

  zone "qhdlink.com" IN {

    type master;

    file "qhdlink.com.intra.zone";

    allow-query { mynet; };

    allow-update { none; };

    allow-transfer { none; };

  };

};


view internet {

  match-clients { any; };

  zone "." IN {

    type hint;

    file "named.ca";

  };

  zone "qhdlink.com" IN {

    type master;

    file "qhdlink.com.inter.zone";

    allow-update { none; };

    allow-transfer { none; };

  };

};


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