DNS學習總結

    友情提示:文中實驗平臺vmware 10 + Centos6.6 X86_64,涉及的命令只爲實現工作模型,不做爲生產服務器配置依據。

    內容概括:

    1.DNS的工作模型

    2.DNS正反解析實現

    3.DNS主從同步

    4.DNS子域授權和簡單的安全機制

    5.DNS中view的使用


一.DNS細微知識點

      1.1)DNS: Domain Name Service,是個應用層協議,做域名與IP地址之間互相解析。

              使用UDP53做DNS查詢應答

              使用TCP53做DNS服務器間區域文件傳送。

       1.2)域名的結構示意圖:



wKiom1U5rDajv0xZAAD39YvG0Ek330.jpg

       

      1.3)主機做域名查找的流程:

    Client-->本地host文件---->Local Cache--->(recursion遞歸)網絡運營商DNS Server----->Server Cache ---->(iteration迭代)internet DNS domain name server

    *任一環節找到後停止後面位置查找

    Centos 6.6上 host文件位置:/etc/hosts

    windows上host位置:%WINDOWS%/system32/drivers/etc/hosts

   

      1.4)查找的方式:

    遞歸查找:recursion,發起域名查找後,必會得到一個明確的答案。

    迭代查找:iteration,發起域名查找後,得到的是個參考答案,還需根據參考答案,查詢別的服務器。

      主機和本地運營商提供的DNS服務器之間是 遞歸查詢,一次查詢請求發出,得到明確答案。

      運營商DNS代替客戶端去查詢地址時,先搜索根區域,從全球13臺根服務器中選一個最快的,進程查詢,例如查找www.51cto.com,  先查找根服務器,根服務器迴應讓去找.com域名服務器和.com服務器的地址, 運營商DNS再去找.com域名服務器,.com服務器迴應讓去查找51cto.com域名服務器和51cto.com.域名服務器地址,運營商DNS再去找51cto.com域名服務器,取得www.51cto.com對應的ip地址,並返回給客戶端,這就是 迭代查詢。


      1.5)域名服務器的合法化

     假設 jx.santan.com 爲santan.com域內的一臺dns服務器,它若想合法化:

       (1)有個本地互聯網運用商提供的可路由的ip地址

       (2)正常工作的提供域名查詢的軟件和santan.com域的資源文件。

       (3)在上級域名.com服務器中有關於santan.com域的NS記錄和A記錄(見下面的“DNS子域授權”)。


      1.6)DNS服務器的類型:
    主DNS服務器:維護所負責解析的域內解析庫服務器,庫文件由管理員維護的。
    輔助DNS服務器:從主DNS服務器或其他的從DNS服務器那裏“區域傳送”解析庫
    緩存DNS服務器:帶局域網內主機做DNS查詢,將結果暫存在緩存中,便於下次快速查找。


       1.7)DNS服務器維護的資源記錄類型:

       資源記錄:Resource Record, RR
       記錄類型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授權記錄;一個區域解析庫有且僅能有一個SOA記錄,而必須爲解析庫的第一條記錄;

A:internet Address,標明:FQDN對應的IP地址。
AAAA: 標明:FQDN對應的IPV6地址
PTR: PoinTeR,反向記錄,標明:IP地址對應的FQDN
NS: Name Server,標明當前區域的DNS服務器
CNAME:Canonical Name,別名記錄
MX: Mail eXchanger,郵件交換記錄,定義區域內的郵件服務器。

        1.8)提供DNS服務的軟件

    軟件:bind,

wKioL1U5wCWAZY_TAANkpEACiDQ287.jpg

    

二.DNS正反解析模型的實現

    * 請關閉防火牆和selinux,以下配置僅做爲實現DNS工作模型,你不要想的太多。

    wKiom1U5uYTzwqUIAANqo6jq69E600.jpg

    Test01.lijun.com上配置:

    2.1)安裝bind軟件:

    建議使用yum安裝,bind,bind-libs,bind-utils這三個包是必裝的。bind-chroot在實驗環境下建議不安裝。

    2.2)配置文件的設定:

      DNS的配置文件分爲主配置文件和區域配置文件,其中主配置文件在/etc/named.conf其中最少應該包含三段信息,分別爲根、local和127.0.0.1的配置,區域配置文件存放在/var/name的路徑下,每個文件用於指定一個區域,名稱要同在/etc/named.conf中配置的一致。

wKiom1U5wk2Tls0fAANsTsd0X5w756.jpg        2.3)區域配置文件的設定:

      bind軟件運行後的進程名爲named,進程屬主爲named,所以請注意建立的區域文件的權限和所有組的設定。

wKiom1U5wy2BCLubAAUep4MS6kQ666.jpg

[root@Test01 named]# vim lijun.com.zone        該文件是lijun.com域的正向解析文件

wKioL1U5xziTVPx0AAIMasnmljE730.jpg

[root@Test01 named]# vim 192.168.100.zone     該文件是lijun.com域的反向解析文件

反向解析文件中存在SOA,NS和PTR記錄

wKioL1U50l3Tb5vYAAFr_OOPTeA040.jpg

   2.4)啓動服務

    動服務前,請使用自帶的named-checkzone檢查區域文件,使用named-checkconf檢查bind的配置文件。

wKioL1U5y1nT_r84AANKlhosSlc172.jpg

2.5)驗證配置

wKioL1U50b2ShQtWAAM4rc24GYw581.jpg

三.DNS主從同步模型的實現

     注意: 每個域之能有一臺主DNS服務器,從DNS服務器可有多臺。

                 主DNS服務器的區域文件由管理員手工維護,從DNS服務器的區域文件從主DNS服務器上通過區域傳送過來。當然也可從DNS服務器通過區域傳送同步給從DNS服務器。

                 從DNS服務器bind的配置文件中指定的區域文件的名稱一定要同主DNS服務器上設定的區域文件的名稱一致。

  * 請關閉防火牆和selinux,以下配置僅做爲實現DNS工作模型,你不要想的太多。

wKiom1U50UfQ3kfEAANqo6jq69E999.jpg

   3.1)主DNS服務器上添加關於輔助dns服務器的NS和A記錄

[root@Test01 named]# vim /var/named/lijun.com.zone 

wKiom1U50iCT3TplAAHyVzaa6_M856.jpg

[root@Test01 named]# vim /var/named/192.168.100.zone

wKioL1U51AjTydOjAAHpb-XNPNU159.jpg


    3.2)輔助DNS的設定

安裝bind程序包:

[root@Test02 ~]# yum install bind -y

編寫bind主配置文件:

wKioL1U51aygO5YSAADkm-9njlo794.jpg

wKiom1U51YeDwXtfAANZLX9C0GM682.jpg

wKiom1U51fDxTZ9lAAKffNsMd3g478.jpg


    3.3)測試下輔助DNS的解析


wKioL1U5193w91JtAAQ2ZcGje_I591.jpg


   3.5)修改主DNS服務器中設定,觀察主輔DNS服務器間傳送

wKiom1U51zWzxNdwAAGn3EXZrnc465.jpg


wKiom1U52HWz4Lh7AAJDwZfCYaY085.jpg


wKiom1U52BGQoRvCAAF1dYmvoZE729.jpg


wKioL1U52lHjvT6JAAGNkOwvpfk363.jpg

四.DNS子域授權和簡單的安全機制

       在DNS管理方面,通過子域授權,分離父域的工作負擔,將子域的工作交給子域DNS服務器去維護,這樣可減輕父DNS的壓力,同時實現分佈式部署DNS,避免因父域DNS服務器或網絡故障導致整個域名下DNS的解析故障。

    這裏實現的是DNS正向解析的子區授權,反向解析的子域授權沒做成功j_0068.gif

    實現步驟:

             1)在父域的主DNS服務器上添加關於子域的NS記錄和A記錄。

             2)在子域DNS服務器上做好本區域的區域解析

            默認情況下:父域知道子域DNS服務器位置,而子域DNS服務器不知道父域DNS服務器。可以在子域DNS服務器上指定轉發的方式,解決這種默認動作。

              3)子域DNS服務器上配置關於父域的指定轉發。

                        格式:

                                zone "ZONE_NAME" IN {

                                        type forward;

                                        forward   only | first ;

                                    //在only 和 first中選一個,only表示爲只發給下面的forwarders 後的地址,不管它理不理

                                    //first表示先發給下面forwarders 後的地址,它不理我,在去找根迭代解析

                                        forwarders { father-zone-name-ns-ip; };

                                    // 這是指明父域ns的IP地址

                            };

               4)本次實驗中添加DNS簡單的安全機制

                  allow-query {}; //指明解釋查詢的地址範圍,這是個白名單

                  allow-transfer {}:允許區域傳送的主機,也就是填寫從DNS地址的;白名單;
                  allow-recursion {}: 允許遞歸的主機,DNS服務器應對所屬區域下的主機做遞歸查詢,其它的不做遞歸詢;
                  allow-update {}: 允許更新區域數據庫中的內容,這個不應允許任何的主機做該操作;

                5)DNS中做地址範圍匹配,定義好後在配置文件中可被多次調用:

                    注意:只能先定義後使用,一般在配置文件最開始的地方,一般放置在option中。

                    格式:

                    acl acl_name {
                                ip;
                                ip;
                                net/prelen;
                        };

                例如:

                         acl dg {
                                  192.168.100.0/24;
                                   127.0.0.0/8;
                                };

                      bind有四個內置的acl:
                                none: 沒有一個主機;
                                any: 任意主機;
                                local: 本機;
                                localnet: 本機的IP同掩碼運算後得到的網絡地址;              

    實驗場景:L公司的lijun.com.域下,建立zhuzao.lijun.com.子域名給下屬分公司使用,要求:父域服務器可對子域內主機域名的解析,子域DNS服務器可解析父域內主機域名的解析。

   * 請關閉防火牆和selinux,以下配置僅做爲實現DNS工作模型,你不要想的太多。wKiom1U8mkqihYNGAAOY14xV3Uw753.jpg       

父域主DNS服務器Test01上:

1)yum安裝bind程序包,見上,再次不重複。

2)設定配置文件和區域解析文件

wKioL1U8rX-y1RJ4AAPfWQKlt-U762.jpg


wKioL1U8oP-DxjpnAAIBkD8-Ofk752.jpg


[root@Test01 named]# vim lijun.com.zone

wKiom1U8oYCQGzWoAALYACZOl3s388.jpg

wKiom1U8rGXDnevBAABrjZbfrB4478.jpg


wKiom1U8oqnyppcKAAPYn9CxW5Y031.jpg


子域主DNS服務器Test02上:

1)yum 安裝bind略

2)配置主配置文件/etc/named.conf

wKiom1U8qKOBnMtEAASCImFlWR0204.jpg

3)建立區域解析文件:

wKioL1U8pkXQ1vAHAAGqtrAn-rg102.jpg

wKioL1U8qkrjXEIEAAFvcB8sEWc796.jpg

wKioL1U8p1zCCuRXAALELCi1n-w788.jpg

wKioL1U8qC7hojHWAARsQPbcSE0740.jpg

wKioL1U8qQqSRxrPAAS4H685kbs619.jpg


在父區域上測試對子區域的解析:

wKioL1U8rnmwBhKeAAPbBfH4xLY290.jpg


五:DNS中view的使用:

    大家都知道在我們天朝,網絡運營商是各自爲營的,雖有中間的互通網絡,但是面對洶涌的用戶數據流,那點中間網絡帶寬瞬時會被佔滿,帶來就是用戶體驗的不好,尤其是遊戲運營,電商特注意用戶體驗。

    解決方式:1)在不同省份不同的運營商機房中分別配置服務器。2)將服務器放置於雙線機房。使用智能DNS,根據用戶來源網絡運營商地址的不同,對相同域名的解析給出各自運營商網絡主機的地址。 借用下面的圖:都是對WWW.XBAO.COM這個域名的請求,因客戶來源不同的運營商,那麼中間的DNS主機,會智能進行判斷,X信的用戶給予的解析地址爲10.100.100.1,而X通的用戶得到的解析地址爲192.168.1.100,雖然客戶請求解析的地址都是www.xbao.com。

     當然要保證各個運營商服務器上網站內容一致性還需使用CDN技術,這就超出本文的內容範圍。  

    中間DNS服務器要達到上述的效果可以使用bind的view技術來實現,下面就是實驗過程。

    view要點:

            1)一個bind服務器可定義多個view,每個view中可定義一個或多個zone;
            2)每個view用acl定義的地址來匹配一組客戶端;
            3)多個view內可能需要對同一個區域進行解析,但使用不同的區域解析庫文件;
            4) 一旦啓用了view,所有的zone都只能定義在view中;
            5)只在匹配允許遞歸請求的客戶所在view中定義根區域;
            6)客戶端請求到達時,是自上而下檢查每個view所服務的客戶端列表;先匹配的先處理,後續的就停止不再做匹配動作。

    view格式:

               view VIEW_NAME {

                match-clients {  ACL-NAME };
                zone "zone-name" IN {

                        ....

                };

                    ....

              };

  * 請關閉防火牆和selinux,以下配置僅做爲實現DNS工作模型,你不要想的太多。

wKioL1U8sUqwpSudAAZhuyGF6Ls635.jpg


1)中間DNS服務器配置網絡和安裝BIND軟件:

wKiom1U8uL6RpG_FAAFsfclQR_w901.jpg


wKioL1U8utrQoWqdAAWeL5Bx5xE387.jpg

2)安裝bind並配置文件:

wKioL1U8uyzTtSmGAABjq6u4xX4893.jpg

wKiom1U8ueaBQTr0AADhVDz1yaA980.jpg


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

wKioL1U8yFGioeZoAAK9dixj7EU603.jpg

局部配置文件:/etc/named.rfc1912.zones

wKiom1U8wJbA48i9AAJi7mJU1sE301.jpg

wKioL1U8wofh82kUAAKFZZpDmcM137.jpg

3)定義區域解析文件:

wKioL1U8wz7CbTGiAAHVS7_7-iM998.jpg


wKiom1U8xBGhKqIYAAEbt26Zftc581.jpg

wKioL1U8xZHxW3-rAAEvimca5jk781.jpg


wKiom1U8xHqRmdp4AAGe7esF_wA924.jpg

4)測試機測試:

wKiom1U8x9nx15fuAAGebNJewqk497.jpg


另一臺測試機地址

wKiom1U8yCnCd1OHAACTRq39Txk790.jpg


wKioL1U8ygfCrtxJAAE0oOFrqMA777.jpg


終於寫完了!!






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