18、DNS服務

1、不同主機程序(進程)間通訊機制:

    socket:ip+port


2、裸套接字:

    無需調用傳輸層的tcp和utp協議端口號,而自身可以實現此功能,並能藉助網絡層發送出去。


3、DNS:domain name server;是一個應用層程序

    協議端口:tcp:53,udp:53

    tcp53:用於區域傳送

    udp53:用於負責解析


4、客戶端名稱解析過程:

    先查本地的hosts文件,在去查dns緩存,如果都沒有,在去查dns服務器。


5、hosts文件:

    它記錄了要通信主機的主機名和ip地址,主機不多時,可以用,多了就會降低解析效率。host文件是通用的,可以作爲庫文件供開發人員調用。

    庫:getipbyhostname( )

    庫:gethostnamebyip( )


6、dns基礎知識介紹:

    dns是一個分層結構的名稱解析程序。

      由根(.)、一級域(也叫頂級域:tlp,top level domain)、二級域、三級域(可以繼續往下分層)組成。


    DNS緩存(dns cache):

       爲了減少每次輸入域名主機時,都要去dns服務器查找提供服務的主機,因此,每次去訪問dns服務器時,都緩存一份名稱庫解析在dns cache中,緩存時間的定義(即緩存有效期)是由DNS服務器來設定的,它通過設置一個遞減的時間(TTL)來實現此功能。


    DNS查詢類型:

      遞歸查詢:一般是主機到指定的DNS服務器進行查詢,需要DNS服務器幫自己去完成解析

      迭代查詢:一般是DNS服務器向根、頂級域及二級域之間的查詢

    

    DNS解析方式:

      正向解析:從名稱解析得到ip

      反向解析:從ip解析得到名稱

      注意:正向解析和反向解析是兩種完全不同的解析功能,他們不是同一個名稱空間,是彼此間獨立的,因此二者的數據庫也是不一樣的。

blob.png


    常見的域名提供商:萬網(國內備案商)、godaddy(國外,無需備案)


    域和FQDN的區別:FQDN:full qualified domain name。

      域:mageedu.com

      FQDN:www.magedu.com


    DNS服務器類型:

      負責解析至少一個域:主機名稱服務器,輔助名稱服務器

      不負責域解析: 緩存名稱服務器。

       

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

    client--->查找本地hosts文件--->dns本地緩存--->dns服務器(如果是dns負責的域,直接返回查詢結果;否則進行迭代查詢)。


    解析應答結果分類:

      分類一:

        肯定答案

        否定答案(不存在查詢的鍵,因此不存在與其查詢鍵對應的值)

      分類二:

        權威應答:由直接負責的DNS服務器回答的結果

        非權威應答:


8、DNS服務器類別:主dns服務器、從(輔助)dns服務器

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

    從(輔助)DNS服務器:從主DNS服務器那裏或從其他的從(輔助)服務器那裏“複製”一份解析庫,但只能進行讀操作,即查詢操作。


8.1、主從(輔助)DNS服務器“複製”操作的實施方式:

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

    refresh:刷新時間間隔,從(輔助)服務器每次多久到主服務器檢查序列號更新狀況。

    retry:重試時間間隔,重試時間間隔短於(小於)刷新時間間隔,輔助服務器從主服務器那裏請求同步解析庫失敗時,再次發起嘗試請求的時間間隔。

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

    否定答案的時長:


    注意:DNS主服務器“通知”從服務器隨時更新數據。


8.2、主從(輔助)DNS同步方式:即區域數據傳送

    axfr:全量傳遞,傳送整個數據庫,一般發生在同步的第一次

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


8.3、區域和域:

    域:mageedu.com

    區域:正向區域、反向區域

    注意:域和區域沒有絕對大小之分,如上,域有兩個區域,但是域(magedu.com)又是.com區域中的一個記錄。同時,dns權限都是由上級指派的。


9、DNS區域數據文件組成:主要由資源記錄組成

    區域文件中每一行一個資源記錄(Resourse Record ,簡稱RR)    

    資源記錄有類型的概念區分,常見的類型有:A AAAA PTR SOA NS CNAME MX9.1    


9.1、資源記錄類型:

    SOA:start of authority;起始授權記錄,一個區域解析庫有且只能有一個soa記錄,而且必須放在第一條;它用來標識是哪個區域的

    NS:name service;域名服務記錄,一個區域解析庫可以有多個ns記錄,其中一個爲主的;它用來標識區域內哪些服務器是dns服務器。

    A:address,地址記錄,FQDN--->IPv4

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

    CNAME:canonical name,別名記錄

    PTR:pointer,IP--->FQDN

    MX:mail exchange;郵件交換器,可以有多個,有優先級的概念,mx優先級0-99,數值越小優先級越高


9.2、資源記錄的定義格式:注意資源記錄中的“.”是不能少的

    語法:name [TTL] IN RR_NAME VLAUE    

        name:名稱或ip

        ttl:ttl存活時間,可省,

        IN:關鍵字

        RR_NAME:資源記錄類型

        VALUE:name對應的值


各類型定義格式說明:

    SOA類型資源記錄:

        name:當前區域的名字,例如:magedu.com或者2.3.4.in-addr-arpa

        value:由多部分組成

            第一部分:當前區域的區域名稱,也可以使用主dns服務器的名稱

            第二部分:當前區域管理員的郵箱地址,但地址中不能有“@”符號,一般用“.”(點)來代替

            第三部分:(主、從服務協調屬性的定義以及否定答案的TTL)   //放在括號中來說明主從複製的參數

         示例:

            $TTL 1D

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

                         0; serial

                         1D; refresh

                         1H; retry

                         1W; expire

                         3H ); minimum

            )  

  

    NS類型資源記錄:

        name:當前區域的區域名稱

        value:當前區域的某dns服務器的名字,例如ns.magedu.com. ;注意一個區域可以有多個ns記錄

        示例:

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

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

        


    MX類型資源記錄:

        name:當前區域的區域名稱

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

            注意:郵件交換器是smtp,不是pop,MX記錄可以有多個,但每個記錄的value之前應該有一個數字表示的優先級,數字越小,優先級越高

       示例:

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

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


   A類型資源記錄:

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

        value:某IPv4地址。

        注意:A記錄的name和value是多對多的關係

       示例:

        www.magedu.com. 86400 IN A 1.1.1.1

        www.magedu.com. 86400 IN A 1.2.3.4 

        bbs.magedu.com. 86400 IN A 1.1.1.1


   AAAA類型資源記錄:

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

        value:某IPv6地址。

        注意:AAAA記錄的name和value是多對多的關係


    PTR類型資源記錄:

        name:ip地址,但是有特定格式,ip要反過來寫而且還要加特定後綴。如:1.2.3.4的記錄應寫成:4.3.2.1.in-addr.arpa.

        value:FQDN

       示例:

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

    

    CNAME記錄:

        name:別名,FQDN格式的別名

        value:FQDN格式的正式名字

       示例:

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


注意:

    ①、TTL可以從全局繼承,但要事先定義,如:$TTL 86400

    ②、@表示當前區域的區域名稱,因此,任何用到當前區域的的名稱的地方都可以用“@”來替代

    ③、相鄰的兩條資源記錄的“name”相同時,後面的name可省略,如下:

          www.magedu.com. 86400 IN A 1.1.1.1

        www.magedu.com. 86400 IN A 1.2.3.4 

       可寫成:        

          www.magedu.com.  86400 IN A 1.1.1.1

                 86400 IN A 1.2.3.4 

    ④、對於正向區域來說,各MX、NS等類型的記錄value值爲FQDN時,此FQDN應該有一個A記錄。


    




10、DNS and bind

    bind:Berkeley internet name domain,現由ISC.org組織維護


    dns是協議,bind是dns協議的一種實現工具    

    

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


10.1、bind程序包安裝:

   查看程序包是否安裝:

    [root@localhost ~]# yum info bind   //查看程序包信息

    [root@localhost ~]# yum list all *bind* 

    [root@localhost ~]# rpm -q bind   //查詢是否安裝bind

    bind-9.9.4-37.el7.x86_64

    [root@localhost ~]# 

    

   bind程序包:

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

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

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

    bind-chroot:選裝項,讓named進程運行於jail(容器或沙箱)模式下。


10.2、bind安裝後程序文件: 

   主配置文件:

    /etc/named.conf


   其他輔助性配置文件:

    /etc/named.iscdlv.key

    /etc/named.rfc1912.zones   //區域一般定義在此文件中。

    /etc/named.root.key


   解析庫文件:

    /var/named   //一般名字爲zone_name.zone

      注意: ①一臺dns服務器可同時爲多個區域提供解析(包括正向和反向)

         ②、必須要有根區域解析文件,一般爲:/var/named/named.ca

        ③、還應該有兩個區域解析庫文件:localhost和127的正、反向解析庫文件。

        正向:/var/named/named.localhost

        反向:/var/named/named.loopback

        

   遠程名稱服務器管理工具:rndc   

    /usr/sbin/rndc;默認工作與tcp的953端口,但默認監聽於127.0.0.1地址,因此僅允許本地使用。


注意:bind程序安裝完成後,默認即可做緩存名稱服務器使用,如果沒有專門負責解析的區域,直接可啓動服務。

    centos6:service named start

    centos7:systemctl strart named


10.3、bind主配置文件格式:/etc/named.conf

   由三段組成:

    全局配置段

        options {.....}

示例:部分配置

    options {

      listen-on port 53 { 127.0.0.1; };    //監聽能與外部通信的地址

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

        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; };     //允許哪些主機查詢



    日誌配置段


        logging{.....}


    區域配置段: 主要配置那些有本機負責解析的區域或轉發的區域。

        zone {.....}


10.4、緩存名稱服務器的配置:不負責解析

    ①、在options段添加監聽能與外部主機通訊的地址,如添加192.168.0.107 

        listen-on port 53 { 127.0.0.1; 192.168.0.107 };    //注意地址與花括號前後都有空格隔開

    

    ②、註釋掉:options中 allow-query     { localhost; };選項,或者添加可以訪問的地址、地址段   

        註釋方法:

            多行註釋:/*........*/

            單行註釋://


    ③、關閉dns安全配置,(學習是建議關閉);將兩處yes改爲“no”

        dnssec-enable yes;

        dnssec-validation yes;


    ④、檢查配置文件語法是否有錯誤

        [root@localhost named]# named-checkconf /etc/named.conf   //可以寫要檢查的配置文件,也可以不寫

        [root@localhost named]# named-checkconf -h     //查看named-checkconf的使用方法

        usage: named-checkconf [-h] [-j] [-p] [-v] [-z] [-t directory] [named.conf]

    注意:生產環境中一定要在重啓前檢查配置文件,防止因配置錯誤導致服務不能正常啓動。

                  

    ⑤、啓動服務:並查看服務

         centos6:service named start

         centos7:systemctl strart named

        [root@localhost named]# systemctl  status named


    ⑥、查看相應端口是否開啓:

        [root@localhost named]# ss -utnlp        

         tcp53:用於區域傳送

        udp53:用於負責解析


    ⑦、測試是否能正常完成;測試工具dig、host、nslookup

        dig命令:用於測試DNS系統,因此不會查詢hosts文件

        dig命令格式:dig [-t RR_TYPE] name [@server] [query options]   //@server指定以哪臺服務器去測試解析;不加@server:表示以本機測試

            [query options]

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

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

          示例:[root@localhost named]# dig -t A wwww.baidu.com @192.168.0.107 +trace

             #dig -x IP  //反向解析

            #dig -t axfr domain [@server]  //模擬完全區域傳送

            [root@localhost /]# dig -t a www.baidu.com


            ; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t a www.baidu.com

            ;; global options: +cmd    //全局屬性配置項

            ;; Got answer:         //已經得到應道

            ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33057

            ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 6   //flags:標誌位;qr:查詢請求;ra請求答案


            ;; OPT PSEUDOSECTION:   //僞選項段

            ; EDNS: version: 0, flags:; udp: 4096

            ;; QUESTION SECTION:    //問題段,請求的問題是什麼

            ;www.baidu.com.IN  A     //重複問題是什麼,解析www.baidu.com的A記錄 


            ;; ANSWER SECTION:       //應答段部分

            www.baidu.com.   433 IN CNAME www.a.shifen.com.  //www.baidu.com是一個www.a.shifen.com.的別名記錄

            www.a.shifen.com.  274 IN  A 180.97.33.107      //www.a.shifen.com.的A記錄是180.97.33.107

            www.a.shifen.com.  274 IN  180.97.33.108      //www.a.shifen.com.的A記錄是180.97.33.108


            ;; AUTHORITY SECTION:   //權威段;誰來負責解析的

            a.shifen.com. 413 IN NS ns2.a.shifen.com.   //a.shifen.com.域是由ns2.a.shifen.com.(dns服務器)負責解析

            a.shifen.com. 413 IN NS ns4.a.shifen.com.

            a.shifen.com. 413 IN NSns5.a.shifen.com.

            a.shifen.com. 413 IN NSns1.a.shifen.com.

            a.shifen.com. 413 IN NSns3.a.shifen.com.


            ;; ADDITIONAL SECTION:  // 附加段,將權威段的dns服務器解析爲IP地址

            ns1.a.shifen.com. 449 IN 61.135.165.224

            ns2.a.shifen.com. 452 IN 180.149.133.241

            ns3.a.shifen.com. 27  IN 61.135.162.215

            ns4.a.shifen.com. 24  IN 115.239.210.176

            ns5.a.shifen.com. 503 IN 119.75.222.17


            ;; Query time: 103 msec   //查詢指令時長

            ;; SERVER: 192.168.1.1#53(192.168.1.1)   //由哪個服務器負責解析的,基於迭代的方式查詢並返回解析結果

            ;; WHEN: Sun Feb 04 09:04:19 CST 2018

            ;; MSG SIZE  rcvd: 271


            [root@localhost /]# 




        host命令格式:host [-t] [RR_type] name server_ip    //server_ip指定使用指定的ip去測試解析,而不用本機測試


        nslookup命令格式:nslookup [-options] [name] [server]

            交互模式:nslookup>

                    server IP   //以指定的IP作爲server進行解析

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

                    name      //要查詢的名稱。

           

        rndc命令:named服務控制命令

            #rndc status

            #rndc flush //清空緩存


10.5、配置一個正向區域的步驟:

    ①、定義區域:在主配置文件中或主配置文件的輔助配置文件中實現  //主配置文件:/etc/named.conf,主配置文件的輔助配置文件:/etc/named.rfc1912.zone

        基本格式:

            zone "zone-name" IN {

                type {master | slave | hint | forward };  

                file "zone_name.zone";

            };

    注意:每行的分號(;)是不能少的,否則爲語法錯誤,hint表示定義爲根服務器;file “zone_name.zone”此處的路徑是相對路徑(/var/named/目錄下),也可以使用絕對路徑。 


    ②、建立區域數據文件:在/var/named目錄下建立區域數據文件,主要記錄爲A、AAAA

    ③、讓服務器重載配置文件和區域數據文件;注意:重載前要記得檢查配置語法是否有錯誤。

  

 正向區域配置示例:以magedu.com域爲例:

    ①、定義區域:

        [root@localhost named]# vim /etc/named.rfc1912.zones  //添加如下語句

        zone "magedu.com" IN {

         type master;

         file "magedu.com.zone";

        };

        

    ②、建立區域數據文件:

        [root@localhost named]# vim /var/named/magedu.com.zone

        $TTL 1D    //定義區域全局TTL時間,下面的資源記錄不寫ttl,從此處繼承。

        $ORIGIN magedu.com. //如果下面的資源記錄不寫全的話,則自動爲其補上此magedu.com.後綴。如果不寫此項,則從/etc/named.rfc1912.zones中定義的“zone_name”字符串補全

        @              IN SOA @ admin.magedu.com. (

         2018020401

         1H

         20M

         1D

         1W

        )

        @               IN NS  ns1.magedu.com.    //@代表區域的名稱

        @              IN NS  ns2     //會自動補上magedu.com. ;補上/etc/named.rfc1912.zones中定義的“zone_name”字符串,此時不要加點(.),和$ORIGIN不衝突

        @              IN MX  10 mx1.magedu.com.

        @              IN MX  20 mx2.magedu.com.

        ns1             IN A  192.168.100.100

        ns2             IN A  192.168.100.101

        mx1             IN A  192.168.100.103

        IN A  192.168.100.104

        www.magedu.com.     IN A  192.168.100.105

             IN A  192.168.100.106    //如果此處的name和上次一樣,可以不寫name

        web1.magedu.com. IN CNAME www.magedu.com.

        web2             IN CNAME www

        web3             IN A  192.168.100.107 

        [root@localhost named]# 


    注意:區域數據文件的權限要設置成其他用戶沒有權限;區域數據文件的屬主、屬組爲root named;然後在檢查主配置文件,區域數據文件的語法是否有錯誤。

        [root@localhost named]# chgrp  named magedu.com.zone 

        [root@localhost named]# chmod o= magedu.com.zone 

        [root@localhost named]# ll magedu.com.zone

        -rw-r-----. 1 root named 561 Feb  4 07:11 magedu.com.zone

        [root@localhost named]# 

         [root@localhost named]# named-checkconf

        [root@localhost named]# named-checkzone  magedu.com.  /var/named/magedu.com.zone 


    ③、讓服務器重載配置文件和區域數據文件:

        [root@localhost named]# rndc status

        [root@localhost named]# rndc reload        


    ④、檢驗:

        dig -t a www.magedu.com

          dig -t a www.magedu.com @192.168.0.107

          dig -t a web1.magedu.com @192.168.0.107

          dig -t a www.magedu.com @192.168.0.107

          dig -t a web1.magedu.com @192.168.0.107

          dig -t a web2.magedu.com @192.168.0.107

          dig -t a web3.magedu.com @192.168.0.107

            

10.6、配置解析一個反向區域

    ①、定義區域:在主配置文件中或主配置文件的輔助配置文件中實現  //主配置文件:/etc/named.conf,主配置文件的輔助配置文件:/etc/named.rfc1912.zone

        基本格式:

            zone "zone-name" IN {

                type {master | slave | hint | forward };  

                file "zone_name.zone";

            };

    注意:每行的分號(;)是不能少的,否則爲語法錯誤,hint表示定義爲根服務器;

        zone-name:一般寫法爲ip地址的反寫,遵循特定格式:反寫的網段.in-addr.arpa.;如:1.2.3.4的記錄應寫成:3.2.1.in-addr.arpa.

       file “zone_name.zone”此處的路徑是相對路徑(/var/named/目錄下),也可以使用絕對路徑。

        

    ②、建立區域數據文件:在/var/named目錄下建立區域數據文件,主要記錄爲PTR


    ③、讓服務器重載配置文件和區域數據文件;注意:重載前要記得檢查配置語法是否有錯誤。


 正向區域配置示例:以magedu.cn域爲例:    

    ①、定義區域:

        [root@localhost named]# cat /etc/named.rfc1912.zones    

        zone "3.2.1.in-addr.arpa" IN {

         type master;

         file "1.2.3.zone";

        };


    ②、定義反向區域數據文件

        [root@localhost named]# vim  /var/named/1.2.3.zone

        $TTL 8H

        $ORIGIN 3.2.1.in-addr.arpa.  //自動補上區域名字,但是此時不再是magedu.cn;而是3.2.1.in-addr.arpa. ;因此名字要寫全了。簡寫的只能是IP不能是主機名

        @     IN  SOA  magedu.cn admin.magedu.cn (

         2018020214

         1D

         2H

         30M

         1W

        )

         IN  NS ns1.magedu.cn.

             IN  NS ns2.magedu.cn.

        67   IN  PTR ns1.magedu.cn.

        68   IN  PTR ns1.magedu.cn.

        69   IN  PTR ns2.magedu.cn.

        70   IN  PTR www.magedu.cn.

        [root@localhost named]# 


        [root@localhost named]# chgrp named 1.2.3.zone 

        [root@localhost named]# chmod o= 1.2.3.zone 


    ③、驗證:

        [root@localhost named]# rndc reload

        [root@localhost named]# dig -x 192.168.0.70 @192.168.0.107 

       


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