BIND軟件的使用

1、BIND軟件的組成:    web

    BIND軟件的主要rpm包:數據庫

        bind:主程序包,包括:vim

    DNS服務程序(named)centos

    解析庫安全

    檢測工具;bash

    bind-libs:Bind軟件的共享庫程序包;服務器

    bind-utils:通用工具包,包括各類服務測試工具,如:dig, host, nslookup等;網絡

    bind-chroot:設置僞根,啓用監牢模式;bind-9+版本中出現的安全功能實現;ide


    應用層協議是DNS協議;DNS,Domain Name System;工具

        DNS的應用程序實現:BIND;

        BIND程序的服務主程序:named;

    53/TCP:完成區域傳送;

    53/UDP:完成主機名的解析查詢;

    953/TCP:rndc程序的監聽端口;


    配置文件:       

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

        輔助配置文件:能夠在主配置文件中利用include命令來包含其餘配置文件;

    /etc/named.rfc1912.zones:聲明瞭區域;

        安全認證祕鑰文件

    /etc/named.iscdlv.key

    /etc/named.root.key

        主程序:/usr/sbin/named

        遠程管理工具:/usr/sbin/rndc

        配置文件檢測工具:

    /usr/sbin/named-checkconf

        區域文件檢測工具:

    /usr/sbin/named-checkzone

        日誌文件:

    /var/log/named.log

        區域文件的存放目錄

    /var/named

        存放輔助區域文件的目錄

    /var/named/slaves


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

    文件格式:        

        分段式配置格式


    1.配置行的註釋方式:

        //:單行註釋

        /* */:多行註釋

    2.主配置文件中的經常使用配置段

        1)訪問控制列表配置段

    acl string { address_match_element;... };  //注意花括號左右有空格

        2)全局選項配置段

    options { statements; ... };

        3)日誌配置段

    logging { statements; ... };

        4)區域配置段

    zone string optional_class { statements;... };

        5)視圖配置段

    view string optional_class { statements; ... }

        6)include命令

    include /PATH/TO/SOME_CONFIG_FILE


    3.全局配置段:

        options {

    listen-on port 53 { 127.0.0.1; 172.16.72.2; };

                //在啓動DNS服務時,named進程所監聽的套接字;

    directory "/var/named"

                //定義解析庫(區域數據庫文件)的根目錄:在主配置文件中添加此配置語句以後,能夠在後面定義區域數據庫時使用相對路徑

    allow-query  { localhost; };    

                //訪問控制語句,意思是容許本服務器去處理哪些主機發送來的解析查詢請求;默認爲localhost,即只容許本機以127.0.0.1發送查詢請求,allow-query  { any; }則能夠處理全部主機發來的解析查詢請求

    recursion yes;

                //容許本服務器爲全部查詢請求作遞歸查詢,建議關閉,使用條件遞歸

    allow-recursion { 172.16.72.1/16; };

                //訪問控制指令,容許爲哪些客戶端作遞歸查詢;

    pid-files "/run/named/named.pid"

                //定義存放主進程pid文件的路徑

            };

    4.配置區域段:

        zone "FQDN" IN {

        //聲明一個區域名稱;此名稱要是有FQDN表示,如:ppp213.com

    type master;

                /*區域的類型

    master:主區域,主服務器

    slave:輔助區域,從區域

    hint:提示區域,僅能在根域上設置

    file "name.localhost"

    forward:轉發區域*/

    file "named.localhost"

                //存放與該域有關的解析信息的數據庫文件的路徑;若是是相對路徑,則相對於主配置文件的全局配置段中的"directory"指令所定義的目錄而言;

                //注:文件的全部權和權限設置必須可以讓named用戶有讀取權限;

    allow-update { none; };

                //訪問控制指令,容許哪些客戶端對數據庫內容進行動態更新:主要用於DDNS;

    allow-transfer { 172.16.0.0/16; };

                //容許哪些主機可以從當前服務器進行區域傳送;

    allow-query { address_match_element; ... };

                //訪問控制指令,容許哪些主機進行區域內的解析查詢

    allow-notify { address_match_element; ... };

                //訪問控制指令,容許哪些主服務器向當前服務器發送區域變動通知;

};


        例:在主配置文件中添加區域段

            zone "ppp213.com" IN {
                type master;
                file "ppp213.zone";
                allow-update { none; };
                allow-transfer { none; };
            };



    

3、建立資源記錄的通常步驟

    1.建立數據庫文件,修改權限並添加相應資源記錄:

        vim /var/named/ppp213.zone

    

        示例:

            @       IN      SOA     ns1.ppp213.com. root.ppp213.com.        (2018040701 1H 15M 1W 1D)
                    IN      NS      ns1
                    IN      MX 10   mail.ppp213.com.
            ns1     IN      A       192.168.109.136
            mail    IN      A       192.168.109.136
            www     IN      A       192.168.109.100
            www     IN      A       192.168.109.101
            web     IN      CNAME   www
            ftp     IN      CNAME   web
            *       IN      A       192.168.109.136
            ppp213.com.     IN      A       192.168.109.136

    2.檢測區域文件的語法格式:

        named-checkzone FQDN /PATH/TO/ZONE_FILE



    3.對主配置文件或區域數據庫文件進行修改以後並不會當即生效;只有在從新加載配置文件和區域文件以後文件才生效

        重載配置文件的方法:

            1)systemctl reload named.service

            2)rndc reload 

            3)systemctl restart named.service(不推薦)

            4)service named reload(centos 6-)

        注意:對於應用程序服務進程衝在配置文件的操做,若是能使用reload,就使用reload,不要輕易執行restart


4、客戶端測試工具:dig,host,nslookup

    1.dig命令

        格式: dig [@server] [-t type] [-x addr] [queryopt]

    @server:表示這次查詢請求使用指定的DNS服務器而不使用在/etc/resolve.conf文件中定義的nameserver;

    -t RR_type:指定這次查詢的資源記錄的類型:

    -x addr:進行反向解析查詢時,用於指定IP地址:

    queryopt:查詢選項:

            +[no]recurse:要求目標服務器必須[不]以遞歸的方式進行查詢

            +[no]trace:[不]跟蹤顯示整個查詢請求的解析過程


        模擬區域傳送(須要在主配置文件區域段中修改Allow-transfer{ };)

    dig -t axfr|ixfr DOMAIN_NAME_FQDN  


    2.host命令

        host [-t RR_type ] {name} [server]

        格式:

    host [-t RR_type] {name} [server]

                 host -t A www.ppp213.com 192.168.109.136


    3.nslookup命令

        交互式命令:

    server IP_ADDR:指定使用哪一個DNS服務器進行查詢

    set q=RR_type:指定這次查詢的資源記錄的類型及相關答案

    set type=RR_type:同q

    FQDN | IP_ADDR :根據FQDN進行正向查詢解析或根據IP_ADDR進行反向查詢解析;

        命令行工具:

    nslookup FQDN NS_SERV

    示例:

                nslookup www.ppp213.com 192.168.109.136


5、配置反向解析區域

    反向域的FQDN:

172.16.0.0/16  反向域名: 16.172.in-addr.arpa


    添加區域段

     zone "109.168.192.in-addr.arpa" IN {
            type master;
            file "192.168.109.local";
            allow-transfer { none; };
        };


    建立192.168.109.local文件(同時修改權限)

        $ORIGIN 109.168.192.in-addr.arpa.
        $TTL 86400
        @       IN      SOA     ns1.ppp213.com. root.ppp213.com. (2018041301 1H 15M 1W 6H)
        IN      NS      ns1.ppp213.com.
        136     IN      PTR     ns1.ppp213.com.
        136     IN      PTR     mail.ppp213.com.
        100     IN      PTR     www.ppp213.com.
        101     IN      PTR     www.ppp213.com.


    檢測:

named-checkzone 109.168.192-addr.arpa 192.168.109.local

        rndc reload

        dig -x 192.168.109.136


6、主從DNS服務器:(主輔)

    1.注意事項:

1)主服務器和輔助服務器都是域級別的概念

2)必須保證主輔服務器之間的網絡通訊的順暢以及時間同步

3)爲了確保全部的名稱服務器都能被識別和使用,須要在區域數據庫中添加全部的名稱服務器的NS資源記錄

4)區域數據庫中每條ns資源記錄都必須有A記錄與之對應

5)從服務器上能夠默認將複製而來的數據庫文件保存至/var/named/slaves/目錄中

6)在主服務器上應該經過訪問控制指令容許從服務器進行區域傳送,同時從服務器要指定主服務器


    2.配置從DNS服務器

        將主服務器(192.168.109.136)的對應區域段修改成容許從服務器(192.168.109.2)區域傳送

            allow-transfer { 192.168.109.2; };:


        將從服務器的全局配置段修改成容許解析查詢

            allow-query     { any; };


        在從服務器中添加區域段:

            zone "ppp213.com" IN {        
                    type slave;
                    masters { 192.168.109.136; };
                    file "slaves/ppp213.slave.zone";
                    allow-transfer { none; };
                };
        
            zone "109.168.192.in-addr-apra" IN {
                    type slave;
                    masters { 192.168.109.136; };
                    file "slaves/192.168.109.slvae.local";
                    allow-transfer { none; };
                };

    

        以後在從服務器使用dig進行名稱解析時,會自動調用主服務器的數據庫,注意將主輔服務器的防火牆關閉

            iptables -F; setenforce 0

            

7、轉發器:

    全局轉發:對於凡是不能由本服務器管理的域的請求,所有以轉發的方式由指定的服務器進行遞歸查詢;

在bind的主配置文件的全局配置段中定義;

        options {
            forward first;
            forwarders { 192.168.109.136; };
        };

    

    區域轉發:專門針對於某個特定的域的請求,若是不能給出權威答案,則轉發至指定的服務器進行遞歸查詢;

在bind的主配置文件的區域配置段中定義;

        zone "ppp213.com" IN {        
                    type forward;
                        //類型爲轉發區域
                    forward only;
                        //only:只轉發,不找本地。first:先轉發,再找本地
                    forwarders; { 192.168.109.136; };
                };

        

8、子域委派受權

    將子域的管理權受權給子域中的名稱服務器;父域中不保存任何子域數據庫中資源記錄;但爲了可以成功受權,須要添加一條NS記錄,指向子域的名稱服務器;

        在子域名稱服務器(192.168.109.2)中添加區域段:

        zone "pp.ppp213.com" IN {
            type master;
            file "pp.ppp213.com.zone";
            allow-transfer { none; };
        };

    

         建立pp.ppp213.com.zone文件

        $ORIGIN pp.ppp213.com.
        $TTL 86400
        @       IN      SOA     ns1.pp.ppp213.com.      root.pp.ppp213.com. ( 2018041301 3H 30M 10D 8H )
                IN      NS      ns1
        ns1     IN      A       192.168.109.2
        www     IN      A       1.2.3.4

        

        在父域名稱服務器(192.168.109.136)中,在ppp213.zone文件添加兩行

        pp.ppp213.com.  IN      NS      ns1.pp.ppp213.com.
        ns1.pp.ppp213.com.      IN      A       192.168.109.2

        

        此時在其餘服務器使用

            dig -t a www.pp.ppp213.com @192.168.109.136

        能夠獲得 1.2.3.4 的結果


9、Bind中的基礎安全相關的配置:

    1.訪問控制列表:

acl,Access Control List,將一個或多個IP地址,歸併爲一個集合,隨後能夠經過實現定義好的名稱對集合中的多個IP地址進行統一調用或設置;

bind內部有四個內置的acl:

    any:包括全部的IP地址,整個IP地址棧中的全部有效IP地址;

    none:不包括任何一個IP地址;

    local:僅包含本地已經配置生效的全部IP地址;

    localnet:包含本機全部已經配置並生效的IP地址所在的網段的IP地址;


定義acl的語法格式:

    acl acl_name {

[!] ip_addr;

[!] network/prefix;

};


示例:

        acl myacl {        
            192.168.109.136/24;
            ! 192.168.109.2;
            192.168.109.3;
        };


注意:

    1)在調用ACL以前,確保事先已經定義了指定的ACL;

    2)一般在主配置文件/etc/named.conf中定義ACL,建議將自定義的ACL放置在配置文件的最前面,以保證後面的操做能夠成功調用到此ACL;


全部的allow*語句,都是能夠調用ACL的,包括:

    allow-update { acl_name; }; 

    allow-transfer { acl_name; };

    allow-recursion { acl_name; };

    allow-query { acl_name; };

    allow-notify { acl_name; };

...

相關文章
相關標籤/搜索