DNS(域名系統)與BIND(Berkeley互聯網名稱域)

一直以來對瀏覽器地址欄輸入的地址有極大的困惑,爲何輸入的是www?爲何結尾是.com?爲何要用"."來分隔三部分(大多數狀況下)?好吧,大學後才知道,這東西學名是叫域名,而不是網民稱的網址什麼的;域名讓咱們更方便的訪問,而不是要死記住那一大串的數字:ip地址;web


1、先認識一下這個名稱域,也能夠叫ta名稱空間,在空間上形象的把ta看做一棵倒置的樹,數據結構裏的樹形結構知道吧,就跟那差很少的樣子;數據庫

好比www.baidu.com 瀏覽器

根域(.)在最後被省略不寫,com是它的頂級域,baidu是二級域名,www是三級域名,也叫主機名緩存

下面詳細介紹域名空間:
服務器

首先是根域(.);session

根域下面是頂級域,也由Internet域名註冊受權機構管理,共有3種類型的頂級域.
1.組織域,採用3個字符的代號,表示DNS域中所包含的組織的主要功能或活動,經常使用的組織域名.
2.地理域.採用兩個字符的國家或地區代號,如cn爲中國,kr爲韓國,us表明美國.
3.反向域.這是一個特殊域,名字爲in-addr.arpa,用於將IP地址映射到名字.
數據結構

  對於頂級域的下級域,Internet域名註冊受權機構受權給Internet的各類組織,當一個組織得到了對域名空間某一部分的受權後,這個組織就負責命令所分配的域及其子域,包括域中的計算機的其餘設備,並管理分配的域中主機名字與IP地址的映射信息.ide


域名系統就是負責名稱解析的,有正向解析和反向解析。顧名思義就是由名稱知曉IP抑或是由IP知曉名稱;spa

2、一次完整的DNS查詢有兩種:日誌

 一、主機向本地域名服務器的查詢通常都是採用遞歸查詢。所謂遞歸查詢就是:若是主機所詢問的本地域名服務器不知道被查詢的域名的IP地址,那麼本地域名服務器就以DNS客戶的身份,向其它根域名服務器繼續發出查詢請求報文(即替主機繼續查詢),而不是讓主機本身進行下一步查詢。所以,遞歸查詢返回的查詢結果或者是所要查詢的IP地址,或者是報錯,表示沒法查詢到所需的IP地址。

 二、本地域名服務器向根域名服務器的查詢的迭代查詢。迭代查詢的特色:當根域名服務器收到本地域名服務器發出的迭代查詢請求報文時,要麼給出所要查詢的IP地址,要麼告訴本地服務器:「你下一步應當向哪個域名服務器進行查詢」。而後讓本地服務器進行後續的查詢。根域名服務器一般是把本身知道的頂級域名服務器的IP地址告訴本地域名服務器,讓本地域名服務器再向頂級域名服務器查詢。頂級域名服務器在收到本地域名服務器的查詢請求後,要麼給出所要查詢的IP地址,要麼告訴本地服務器下一步應當向哪個權限域名服務器進行查詢。最後,知道了所要解析的IP地址或報錯,而後把這個結果返回給發起查詢的主機。


舉個栗子:

假定域名爲m.xyz.com的主機想知道另外一個主機y.abc.com的IP地址。例如,主機m.xyz.com打算髮送郵件給y.abc.com。這時就必須知道主機y.abc.com的IP地址。下面是上圖a的幾個查詢步驟:

一、主機m.abc.com先向本地服務器dns.xyz.com進行遞歸查詢。

二、本地服務器採用迭代查詢。它先向一個根域名服務器查詢。

三、根域名服務器告訴本地服務器,下一次應查詢的頂級域名服務器dns.com的IP地址。

四、本地域名服務器向頂級域名服務器dns.com進行查詢。

五、頂級域名服務器dns.com告訴本地域名服務器,下一步應查詢的權限服務器dns.abc.com的IP地址。

六、本地域名服務器向權限域名服務器dns.abc.com進行查詢。

七、權限域名服務器dns.abc.com告訴本地域名服務器,所查詢的主機的IP地址。

八、本地域名服務器最後把查詢結果告訴m.xyz.com。


3、資源記錄 RR

有如下幾種類型:

    A,AAAA,PTR,SOA,NS,CNAME,MX

下面分別介紹每一個資源類型及在數據庫中的具體格式

1.SOA:Start Of Authority,起始受權記錄

在任何一個數據庫中有且只能由一條SOA記錄,並且必須是數據庫的第一條記錄

name:當前域的域名,如:qhdlink.com.;或者可使用"@"代替

value:

1.當前區域的主DNS服務器的FQDN;

2.當前區域數據庫的管理員的郵件地址;可是使用"."來代替"@";

   如:mailmaster.(@)whjlab.com

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

(Serial 1H 15M 1W 1D)

括號內的字段的意義是:

    

Serial

表明這個zone file 的版本,每當zone file 內容有變更,name server 管理者就應該增長這個號碼,由於slave 會將這個號碼與其copy 的那份比對以便決定是否要再copy 一次(即進行zone transfer )。


Refresh

slave server 每隔這段時間(秒),就會檢查master server 上的serial number。 不 過這裏會發生一個問題就是,在master server 在update data 完成到slave server 來檢查時再update 可能還有 好一段時間,所以這段期間master/slave DNS server間zone files 就可能出現不一致。 所 以在Bind較新的版本中便加入"notify"功能,使用者在"named.conf" 設定中在須要的zone 中加入"notify"的設定,則master server在update 完成某個zone file 的data 後便會主動發個訊息(NOTIFY),藉以通知該其它的slave servers,所以若是slave servers 也有支援這個"notify"功能時,接下來slave servers 立刻就能夠作zone transfer 來update data。 

當slave server 沒法和master 進行serial check時,要每隔幾秒retry 一次。


Expire

當時間超過Expire 所定的秒數而slave server 都沒法和master 取得連絡,那麼slave 會刪除本身的這份copy。


Minimum

表明這個zone file 中全部record 的內定的TTL 值,也就是其它的DNS server cache 這筆record 時,最長不該該超過這個時間。

例:

@ 86400 IN SOA ns1.whjliab.com. mail.whjlab.com.(

  2017081001;serial

  1H;refresh

  15M;retry

  1W;expire

  1D;)ttl

2.A:Address,主機記錄

標識從徹底合格域名到IP地址的映射關係;FQDN --> IPv4

name:域中某主機的FQDN或主機名

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


例:

www.whjlab.com. 86400 IN A 192.168.1.1

www IN A 192.168.1.1



3.AAAA:Address,FQDN --> IPv6


4.NS記錄:

name:當前域的域名

value:當前區域內某DNS服務器的徹底合格域名,如:ns#.qhdlink.com

注意:

    1.一個域內能夠有多個NS資源記錄

    2.每一個NS資源記錄都必需要有一個A記錄與之對應


例如:

whjliab.com. 86400 IN NS ns1.whjlab.com.


5.MS記錄:

name

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

注意:

1.一個域中能夠有多條

2.每一個MX都要有一條A記錄對應

例如

whjlab.com. 86400 IN MX 10 mail1.whjlab.com

@ IN MX 20 mail2

6.CNAME:

name 別名的FQDN或者簡單名稱

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

例:

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

web IN CNAME www


7.PTR記錄:

  name:IP地址反過來寫,並在其後綴加反向域標準後綴

好比:1.72.16.172.in-addr.arpa.

4、主從DNS服務器:

主DNS:維護所負責解析的區域數據庫文件的主體服務器,即:能夠在區域數據庫中進行增刪改等管理操做;讀寫操做都可進行

從DNS:輔助DNS服務器,從主DNS-server或者其餘的從DNS-server以區域傳送的方式複製對方的區域數據庫;因此從DNS不具有管理操做的做用;

    

爲了保證二者中 的數據庫保持一致,須要保證:

序列號一致:Serial,即數據庫中的版本號;主DNS服務器的數據庫內容若是發生變化,序列號應該自增。若是從服務器接收到的新數據庫,若是其序列號沒有變化,則忽略;若是發現其序列號比當前自身的數據庫序列號大,則更新;

     刷新時間間隔:refresh,從DNS服務器每隔多長時間到主DNS服務器上去檢查序列號的變化更新狀況;


    重試時間間隔:retry,從DNS服務器向主DNS服務器要求同步數據失敗以後,再次發起嘗試請求的時間間隔;


過時時間:expire,從DNS服務器始終聯繫不到主DNS服務器時,從DNS服務器多長時間以後中止服務;


    否認答案的緩存時長:minimal TTL


5、實現方式-Bind軟件

實現DNS協議的程序是BIND,其中BIND的服務器的主程序是named


bind:

主配置文件:/etc/named.conf

能夠在此配置文件中使用include命令包含其餘的配置文件;

/etc/named.lscdlv/key

/etc/named.rfc1912.zones

聲明區域;

/etc/named.root.key


主配置文件的格式:

1.註釋方式:

//或者/* ... */

2.分段配置的特色

 a.訪問控制列表定義字段

acl ACL_NAME {...};

 b.全局選項段:

options {...}

 c.日誌配置段:

logging {...};

 d.區域配置段:

zone "ZONE_NAME" IN {...}

 e.視圖配置段:

view VIEW_NAME {...}

 f.include包含段:

include /PATH/TO/SOME_CONFIG_FILE



 options {

listen-on port 53 { 127.0.0.1; };

//在啓動DNS服務以後,named進程所監聽的ipv4地址

listen-on-v6 port 53 { ::1; };

//在啓動DNS服務以後,named進程所監聽的ipv6地址

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; };

       //訪問控制語句,容許哪些主機將查詢請求發送至本服務器;默認爲localhost,即只爲服務器自身提供查詢請求處理;


      recursion yes;

      //全局開啓遞歸查詢;默認爲全部客戶端開啓遞歸查詢

dnssec-enable yes;

       dnssec-validation yes;

       dnssec-lookaside yes;

       //建議初學者關閉 此dnssec功能


       /* Path to ISC DLV key */

       bindkeys-file "/etc/named.iscdlv.key";


       managed-keys-directory "/var/named/dynamic";


       pid-file "/run/named/named.pid";

       session-keyfile "/run/named/session.key";


};

相關文章
相關標籤/搜索