DNS詳解

概述

    互聯網訪問絕大多數都是基于域名的訪問,互聯網訪問的基礎是基于IP來實現的,因此,需要有一種將域名解析成IP的機制,讓用戶在利用域名訪問時,自動將域名轉換成為對應的IP,這就是DNS的功能,本章將介紹一些DNS相關的內容,具體分為:

    1、DNS的基礎概念

    2、配置DNS作為緩存DNS服務器

    3、DNS的正向解析區域

    4、DNS的反向解析區域

    5、主從DNS實現

    6、子域授權

    7、區域轉發

    8、DNS安全相關的配置(ACL及安全配置項)

    9、智能DNS(DNS的view)

第一章    DNS的基礎概念

    1、DNS:Domain Name Service,基于C/S模式的域名解析服務,應用層協議

        監聽在53/udp,53/tcp端口

        TCP用來區域傳送

        UDP用來解析

    2、域名分類

        根域 .

        TLD(top level domain頂級域):

            組織域:.com、.net、.org、.gov、.mil

            國家域:.iq、.tw、.hk、.jp、.cn……

        二級域:就是在頂級域上個人或組織申請的名稱

        所謂注冊域名實際是在某個頂級域內注冊的某個二級域

        如:nwc.com.

        然后在申請到的域內的建自己的各個子域名

        www.nwc.com.

        test.nwc.com.

        ftp.nwc.com.

        ….

    3、DNS的查找過程:

        遞歸查詢:

            客戶端向自己所指定的DNS服務器請求的過程,是遞歸的,也就是說客戶端向服務器請求時,服務器返回的必須是一個明確的結果,要么找到,要么找不到

        迭代查詢:

            是指當客戶端請求到達直接指定的DNS服務器后,如果該服務器上沒有緩存相關的條目,則需要向根域請求,根域返回給DNS服務器一個頂級域的地址,然后DNS服務器又根據返回的頂級域地址去找,頂級域又返回一個二級域的地址,而后,DNS服務器又向二級域去請求,追蹤返回出一個明確的解析結果給DNS服務器,這個DNS一級一級去查找的過程就是迭代查詢

    4、DNS的名稱解析方式:

        名稱 –> IP  正向解析

            正向解析時,給的地址是,如:www.nwc.com.

        IP –> 名稱  反向解析

            反向解析時,給的地址是,如:4.3.2.1.in-addr.arpa.

            解析的實際地址是1.2.3.4

        注意:正向解析和反向解析的名稱空間,不是同一個空間,也就是不是同一顆樹形結構;因此也不是同一個解析庫

    5、DNS服務器的類型:

        負責解析至少一個域的服務器

            主名稱服務器:新增的解析條目只能通過主服務器

            輔助名稱服務器:可以接受解析請求并響應,但新增的解析條目只能在主服務器上新增。主服務器故障后,從服務器也不向外提供解析服務了

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

    6、DNS解析的答案類型:

        肯定答案:有解析出來的結果

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

        對于肯定答案和否定答案都可以進行緩存,也都可以指定緩存時長

        權威答案:由直接負責的DNS服務器給出的答案,也就是給出的結果是自己負責解析域時,給出的答案

        非權威答案:給出的答案是緩存中的緩存下來的條目,此時因為緩存還在有效期,而后端真實的結果可能已經改變,但是由于有緩存,則依然用緩存響應請求,此時返回的就是非權威答案

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

        Client一旦希望以主機名與對方主機通信,此時就需要名稱解析,其會先查本地的hosts文件

        如果host文件中沒有對應的名稱和地址的對應關系,則客戶端會查DNS服務的本地緩存

        如果本地DNS服務的緩存沒有命中,則客戶端會向客戶端所指向的DNS服務器(可能是緩存DNS服務器,也可能是負責具體解析的某DNS主名稱服務器)發送查詢請求,此時的請求是遞歸請求(recursion請求)

        DNS服務器收到請求后,

            如果客戶端請求的就是自己負責的域,則直接查詢數據庫,并返回答案

            如果客戶端請求的不是自己負責解析的域,則先找服務器自己的緩存,如果緩存沒命中,則基于迭代的方式先找根域,然后再找頂級域,然后找二級域,一步一步完成查詢請求,并最終返回答案給客戶端

    8、主-輔DNS服務器:

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

        從DNS服務器:從主DNS服務器那里,或其他的從DNS服務器那里同步或復制一份解析庫,但是只能進行讀操作

        復制或同步操作的實施方式:

            序列號:serial

                也就是解析數據庫的版本號,一旦主服務器的數據庫內容發生改變時,其版本號遞增。從服務器會每隔一段時間,就向主服務器請求其版本號,如果發現版本號與其不匹配,則執行同步

            刷新時間間隔:refresh

                從服務器每隔多久到主服務器或其他從服務器上檢查序列號,用于判斷更新的狀況

            重試時間間隔:retry

                當從服務器嘗試與主服務器進行通信,獲取其序列號時,發現無法聯系上主服務器,則進行重試,兩次重試之間的時間間隔

                故重試時間間隔應該小于刷新時間間隔,而且要遠小于刷新時間間隔

            過期時長:expire

                從服務器始終聯系不上主服務器時,多久之后,放棄從主服務器同步數據;從服務器也就停止提供服務

            否定答案的緩存時長:

                當結果是明確的無法解析到時,此類否定答案緩存多長時間

            主服務器"通知"從服務器隨時更新數據

    9、區域(zone)和域(domain):區域是物理概念,域是邏輯概念

        比如:nwc.com.這個域

        FQDN–>IP:

            正向解析庫和正向解析的功能,就是一個正向解析區域

        IP–>FQDN:

            反向解析庫和反向解析的功能,就是一個反向解析區域

        一般而言,一個域分為正向解析區域和反向解析區域,但是單純的域卻不一定比區域大,因為父域的區域,可能就比子域的域要大

     

    10、區域傳送:

        全量傳送:axfr,傳送整個數據庫;一般在從服務器第一次向主服務器同步數據時

        增量傳送:lxfr,進傳送變化的數據

    11、區域數據庫文件:主要由資源記錄(RR,resource record)組成

        常見資源記錄類型:A、AAAA、PTR、SOA、NS、CNAME、MX

        SOA:start of authority,起始授權記錄,一個區域解析庫有且只能有一個SOA記錄,且必須放在所有資源記錄的第一條

        NS:name service,域名服務記錄,一個區域解析庫可以有多個NS記錄,一個NS記錄表示一臺DNS服務器,其中一個為主的,其余的為輔的

        A:address,地址記錄,也就是從FQDN–>IPv4

        AAAA:address,地址記錄,從FQDN–>IPv6

        CNAME:別名記錄

        PTR:pointer,主要用于實現IP–>FQDN

        MX:mail exchanger,郵件交換器,用于標明域內郵件服務器的地址的記錄,MX記錄可以有多個,其MX記錄有優先級的概念

            優先級 0-99,數字越小,優先級越高

    12、資源記錄的定義格式:

        語法:NAME [TTL] IN RR_TYPE  VALUE

        SOA記錄:

            NAME:當前區域的名字,例如:nwc.com.  或者如果是反向區域,則 1.168.192.in-addr.arpa.

            VALUE:有多部分組成

                <1>當前區域的區域名稱(也可以使用主DNS服務器名稱);

                <2>當前區域的管理員的郵箱地址,但地址中不能使用@符號,一般用點號.來替代;

                <3>主從服務的協調屬性的定義以及否定答案的緩存時長,整個內容要用()括號括起來,每行內容之后可以用;分號表示后面的都是注釋信息

            完整的SOA記錄定義示例:

                nwc.com. 86400  IN SOA  nwc.com.  admin.nwc.com  (

                    2016091801   //代表序列號,不能超過10位

                    2H           //代表從服務器向主服務器同步數據的刷新時間間隔,此處表示2小時

                    10M          //表示聯系不上主服務器時,從服務器再次聯系主服務器時的間隔時間,10分鐘

                    1W           //表示過期時間,也就是服務器始終聯系不上主服務器時的最長等待時間,也就是此時間一過,就判定主服務器故障,然后從服務器也停止服務,1周

                    1D           //表示否定答案的緩存時長,1天

                    )

        NS記錄:可有多個NS記錄,一個NS記錄對應一個DNS服務器,每個NS記錄應該有一個對應的A記錄

            NAME:當前區域的區域名稱

            VALUE:當前區域的某DNS服務器的名字,例如ns1.nwc.com

            例如:

                nwc.com.  86400  IN  NS  ns1.nwc.com.

                nwc.com.  86400  IN  NS  ns2.nwc.com.

        MX記錄:MX記錄可以有多個,一個MX記錄對應一個郵件服務器,每個記錄的VALUE之前應該有一個數字,用于表示其優先級,數字越小,優先級越高。每個MX記錄應該有一個對應的A記錄

            NAME:當前區域的區域名稱

            VALUE:當前區域某郵件服務器的主機名

            例如:

                nwc.com.  IN  MX  5  mail1.nwc.com.

                nwc.com.  IN  MX  20  mail2.nwc.com.

        A記錄:FQDN–>IPv4

            NAME:某FQDN,如:web.nwc.com.

            VALUE:某IPv4地址

            例如:

                web.nwc.com.  IN  A  1.1.1.1

                web.nwc.com.  IN  A  1.1.1.2

                bbs.nwc.com.  IN  A  1.1.1.2

            一個主機名額可以有多個IP,一個IP也可以有多個主機名          

                *.nwc.com.  IN  A   10.1.32.1

                表示將前面沒有單獨定義的都解析到10.1.32.1

                nwc.com.  IN   A    10.1.32.1

                表示當用戶訪問域名前不帶任何字符時,也即是直接訪問nwc.com.時解析到的地址是10.1.32.1

                $GENERATE 1-254  server$   IN   A   1.1.1.$

                    表示將server1.nwc.com.  解析的地址為1.1.1.1

                    server2.nwc.com. 解析的地址為1.1.1.2

                    server3.nwc.com.  解析為1.1.1.3

                    ….

                    server254.nwc.com.  解析為1.1.1.254

                同理:

                $GENERATE 5-20  test$   IN   A   1.1.1.2$

                    表示將test5.nwc.com.  解析的地址為1.1.1.25

                    test6.nwc.com. 解析的地址為1.1.1.26

                    test7.nwc.com.  解析為1.1.1.27

                    ….

                    test20.nwc.com.  解析為1.1.1.220

        

        AAAA記錄FQDN–>IPv6地址,定義方式與A記錄類似

        PTR記錄:反向解析記錄

            NAME:IP地址,有特定格式,IP反過來寫,而且要加特定后綴,如:192.168.1.2的記錄應該寫成2.1.168.192.in-addr.arpa。

            VALUE:為FQDN

            例如:

                2.1.168.192.in-addr.arpa.  IN PTR  bbs.nwc.com.

        CNAME記錄:別名記錄

            NAME:FQDN格式的別名;

            VALUE:FQDN格式的正式名稱

            例如:

                web.nwc.com.  IN CNAME www.nwc.com.

                表示web.nwc.com.是www.nwc.com.的別名

        注意:

            <1>TTL值可以從全局繼承,不用每個記錄都單獨定義

            <2>@可以用來表示當前的區域的名字

            <3>相鄰的兩條記錄,其NAME相同時,后面那條記錄的NAME可以省略

            <4>任何MX、NS等類型的記錄的value為一個FQDN,此FQDN應該有一個A記錄

    13、測試DNS的工具:dig、host、nslookup

        dig工具:用于測試DNS系統,因此其不會查詢hosts文件

            dig -t RR_TYPE NAME @SERVER [QUERY_OPTIONS]

            表示測試哪種資源記錄類型,NAME表示需要測試的地址或反向測試時的IP,@SERVER表示通過那個DNS服務器進行解析

            常見查詢選項:

                +[no]trace 跟蹤或不跟蹤解析過程

                +[no]recurse 進行遞歸解析 

                如果不寫@SERVER,則表示通過本機測試

            如:

                dig -t A www.baidu.com 

                dig -t A www.nwc.com @10.1.32.11

            反向解析:dig -x IP

                如:dig -x 119.75.222.17

                有正向解析不一定有反向解析的記錄

            dig命令模擬完全區域傳送:

                dig -t axfr DOMAIN [@SERVER]

        host工具:

            host -t A www.baidu.com 

                表示解析www.baidu.com這個域名的A記錄,也就是其對應的IP

            host -t NS baidu.com

                表示解析baidu.com的NS記錄,也就是看baidu.com這個域內,有哪些DNS服務器

            host -t MX baidu.com

                表示解析baidu.com的MX記錄,也就是看baidu.com這個域內,有哪些郵件服務器

            host -t PTR 119.75.222.17

                表示解析 119.75.222.17這個IP對應的域名是什么

        注意,以上使用方式中,可以在命令后面加上SERVER_IP表示利用指定的DNS服務器進行測試,而不是使用本機測試

        nslookup工具:

            nslookup [-OPTIONS] [NAME] [SERVER]

            有兩種工作模式,一種是交互式模式,一種是命令行模式,命令行模式與上述的工具類似,交互式則直接在命令行中輸入nslookup然后回車即可

            交互式模式下的命令:

                server IP  表示以指定的IP作為DNS服務器進行查詢

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

                NAME  表示查詢的名稱(各種資源記錄類型對應的NAME是不一樣的)

    14、rndc的使用

        rndc是DNS遠程管理的工具,默認只監聽在本地的127.0.0.1的953端口,只能在本機使用,如果要遠程主機上管理,需要在/etc/named.conf配置文件中修改相關的配置選項,不過為了安全考慮,不建議用rndc命令在遠程主機上管理,在本地管理即可

        rndc status  可顯示DNS服務器的狀態信息

        rndc stats   可顯示DNS的統計數據

        rndc stop    可停止DNS服務

        rndc flush   表示清空DNS服務器的DNS緩存條目

        rndc reload  表示重新裝載DNS服務的配置文件和區域數據庫文件

第二章    配置DNS作為緩存DNS服務器

    1、BIND的安裝包:

        BIND是dns協議的一種實現

        BIND的程序運行時的進程名為named

    2、BIND的程序包:bind

        bind  提供DNS服務器端程序,和解析庫文件,以及幾個常用的測試程序

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

        bind-utils  bind客戶端程序集,提供了如dig、host、nslookup等工具

        bind-chroot  可選裝的程序包,讓bind程序能運行在一個子shell中,萬一bind程序被劫持,不會影響外面的shell的程序

    3、bind安裝完成后,生成了許多文件,其中:

        /etc/named.conf  是其主配置文件,其內部用include指令包含進來了很多其他的文件,如

                /etc/named.rfc1912.zones  區域定義文件

                /etc/named.iscdlv.key

                /etc/named.root.key

        /var/named/  是區域解析庫文件的存放位置,也就是named的工作目錄,該目錄下文件名一般為ZONE_NAME.zone

        /usr/sbin/rndc 是DNS的遠程控制工具程序,其工作在tcp/953端口,默認只監聽在127.0.0.1的地址,因此僅允許本地使用

        注意:

            <1>1臺DNS服務器可同時為多個區域提供解析

            <2>在/etc/named/目錄下,必須要有根域的解析庫文件,在centos上一般為name.ca

            <3>在/etc/named/目錄下,還應該有兩個區域解析庫文件:localhost和127.0.0.1的正向和反向解析的解析庫文件,正向為named.localhost、反向為named.loopback文件

        bind程序安裝完成后,默認即可作為緩存名稱服務器使用,可以讓其他客戶端將DNS指向該主機,作為其DNS服務器,當該DNS服務器中沒有相應的緩存,或不是自己負責解析的區域后,也能夠向根域發起迭代的查詢請求,從而能夠返回給客戶端答案

        如果安裝完成bind后,如果沒有專門負責解析的區域,將配置文件中的監聽地址由120.0.0.1改為可與外部通信的地址,關閉dnssec功能,然后直接啟動服務即可

    4、主配置文件格式:

        全局配置段:

            options {

                …

            }

        日志配置段:

            logging {

                …

            }

        區域配置段:定義由本機負責解析的區域,或轉發的區域

            zone {

                …

            }

            可單獨定義在/etc/named.rfc1912.zones文件中

        注意:

            每個配置語句必須以分號;結尾,否則為語法錯誤

            注釋的風格為C語言風格,//表示注釋單行,/*  */表示注釋多行

    5、修改相關配置

        修改全局配置段中的監聽地址為可與外部通信的地址:

            listen-on port 53;表示監聽本機所有地址的53端口

            listen-on port 53 { 10.1.32.11; }; 表示監聽本機10.1.32.11這個IP的53端口,多個IP用分號間隔,{}兩段有空格

        學習時,建議關閉dnssec功能:

            dnssec-enable no;

            dnssec-validation no;

            dnssec-lookaside no;

        關閉僅允許本地查詢:

            注釋掉該行,// allow-query { localhost; };

    6、檢查配置文件語法錯誤

        named-checkconf  /etc/name.conf

    7、啟動服務

        centos6 : service named start

        centos7 : systemctl start named.service 

第三章    DNS的正向解析區域

    1、定義區域

        在主配置文件中或主配置文件的輔助配置文件中實現;

        在配置文件中,利用:

            zone "ZONE_NAME" IN { 定義區域名稱,就是域名

                type master|slave|hint|forward;

                    指明區域的類型是主|從|根|轉發

                file "ZONE_NAME.zone";

                    指明區域數據文件,如果不指名文件的目錄,則默認會到/var/named/目錄下去找

            };

            注意:區域名字即為域名

        一般不在主配置文件中編輯,而是到其include進來的專門定義區域文件/etc/named.rfc1912.zones中定義

             vim /etc/named.rfc1912.zones

             zone "nwc.com." IN {

             type master;

             file "nwc.com.zone";

             };

             區域名最后那個.可以不用加

    2、建立區域數據文件(主要記錄為A記錄或AAAA記錄)

        在區域數據庫存放的位置/var/named/目錄下建立區域數據文件

        一般數據文件其權限為640,屬主為root,屬組為named

        如:vim /etc/named/nwc.com.zone

            $TTL 3600

            $ORIGIN nwc.com.   表示當域名沒寫完整時,自動補上的部分的內容

            @   IN  SOA  nwc.com.   dnsadmin.nwc.com  (

                2016091801

                1H

                10M

                3D

                1D

                )

                //SOA記錄中的NAME可以寫成域名,也可以寫成該區域內的主DNS服務器的主機名,如此處的"nwc.com."可以用"ns1.nwc.com.替代"

            IN  NS  ns1  

               //前面沒寫@,是因為兩個相鄰的記錄NAME一樣,則后面不用寫,后面寫ns1是因為利用$ORIGIN定義了之后,會自動補上nwc.com.

            IN  MX  10  mail1

               //表示定義了一個mail1.nwc.com.的郵件服務器,其優先級為10

            IN  MX  20  mail2

                //又定義了一個mail2.nwc.com.的郵件服務器,其優先級為20

        ns1   IN  A   10.1.32.11

                //ns1.nwc.com.的IP地址為10.1.32.11

        mail1   IN  A   10.1.32.33

                //mail1.nwc.com.的IP地址為10.1.32.1

        mail2   IN  A   10.1.32.55

                //mail2.nwc.com.的IP地址為10.1.32.55

        www   IN   A   10.1.32.1

                //www.nwc.com.的IP地址為10.1.32.1

        www   IN   A   10.1.32.2

                //www.nwc.com.的IP地址為10.1.32.2

        web   IN   CNAME   www

                //web.nwc.com.是www.nwc.com.的別名

        bbs  IN  A  10.1.32.1

                //bbs.nwc.com.的IP為10.1.32.1

        修改區域數據文件的屬主為root,屬組為named,并修改其權限為640

    3、檢查配置文件語法和區域數據文件語法

        named-checkconf /etc/named.conf

        named-checkzone  nwc.com.  /var/named/nwc.com.zone

        指明區域名稱,和區域數據文件的位置

    4、讓服務器重載配置文件和區域數據文件即可

        用rndc reload命令即可實現

        如果是centos7,也可以用:

            systemctl reload named.service

    5、用rndc status查看DNS服務器的狀態,然后利用相關DNS測試工具進行測試dig、host、nslookup

第四章    DNS的反向解析區域

    1、定義區域

        在主配置文件中或主配置文件的輔助配置文件中實現;

        在配置文件中,利用:

        zone "ZONE_NAME" IN { 定義區域名稱,就是域名

            type master|slave|hint|forward;

                指明區域的類型是主|從|根|轉發

            file "ZONE_NAME.zone";

                指明區域數據文件,如果不指名文件的目錄,則默認會到/var/named/目錄下去找

        };

        注意:反向區域的名字的格式為:

                網段地址反寫.in-addr.arpa.

                如本例為:32.1.10.arpa.

        一般不在主配置文件中編輯,而是到其include進來的專門定義區域文件/etc/named.rfc1912.zones中定義

            vim /etc/named.rfc1912.zones

            zone "32.1.10.arpa." IN {

                type master;

                file "32.1.10.zone";

            };

            區域名最后那個.可以不用加

    2、定義區域解析庫文件:(反向解析庫的主要記錄為PTR記錄)

        在區域數據庫存放的位置/var/named/目錄下建立區域數據文件

        一般數據文件其權限為640,屬主為root,屬組為named

        vim /var/named/32.1.10.zone

            $TTL 3600

            $ORIGIN 32.1.10.in-addr.arpa.

            @    IN    SOA    ns1.nwc.com.  dnsadmin.nwc.com  (

                2016091801 

                1H

                10M

                3D

                12H

                )

                IN    NS   ns1.nwc.com.

                     //域內的NS記錄,表示DNS服務器為ns1.nwc.com.

            11   IN    PTR  ns1.nwc.com.

                    //ns1.nwc.com.的IP為10.1.32.11

            1    IN    PTR  www.nwc.com.

            2    IN    PTR  www.nwc.com.

            1    IN    PTR  bbs.nwc.com.

        注意:

            反顯區域數據文件中補充的是32.1.10.in-addr.arpa.,故其中的域名就不能與正向解析數據文件中寫成www,bbs之類的,因為自動補充的不是域名,是網絡地址反寫的區域名

            反向區域文件中不需要MX記錄的反向解析,也就是不需要對郵箱服務器進行反向解析

            不需要為正向解析區域的別名記錄定義反向解析

            反向解析也可以有別名記錄,只是別名記錄的意義是ip到ip,相當于兩個IP地址之間的別名

        修改該反向解析區域文件的屬主為root,屬組為named,權限為640

    3、檢查配置文件語法和區域數據文件語法

        named-checkconf /etc/named.conf

        named-checkzone  32.1.10.in-addr.arpa  /var/named/32.1.10.zone

        指明區域名稱,和區域數據文件的位置

    4、讓服務器重載配置文件和區域數據文件即可

        用rndc reload命令即可實現

        如果是centos7,也可以用:

            systemctl reload named.service

    5、用rndc status查看DNS服務器的狀態,然后利用相關DNS測試工具進行測試dig、host、nslookup

第五章    主從DNS

    1、從服務器是區域級別的概念;

        如,上述實驗中,我們將ns1.nwc.com這臺服務器,配置成了nwc.com.這個正向區域解析的主DNS服務器,同時也配置成了32.1.10.in-addr.arpa這個反向解析區域的主DNS服務器,但是我們可以在另外一臺服務器上,假設為ns2.nwc.com這臺服務器上,只配置其作為正向區域nwc.com.的從DNS服務器,或者只配置其作為反向區域32.1.10.in-addr.arpa的從DNS服務器,這樣相當于ns2.nwc.com服務器只作為正向的從服務器,或者反向的從服務器

        當然,我們也可以將ns2.nwc.com這臺服務器即作為正向區域nwc.com.的從DNS服務器,也作為反向區域32.1.10.in-addr.arpa的從DNS服務器

也可以將ns1.nwc.com這臺服務器做為正向區域的主DNS服務器,但是作為反向區域的從DNS服務器,而ns2.nwc.com這臺服務器作為反向區域的主DNS服務器,正向區域的從DNS服務器

        注意:在主從同步時,區域數據文件的復制可以級聯復制

            也就是說可以ns1.nwc.com這個服務器作為主服務器,ns2到ns1這臺服務器上進行復制區域數據文件,作為ns1的從服務器,而ns3可以在ns2上同步數據文件,ns3作為ns2的從服務器,這樣一級一級的級聯

    2、環境及準備工作

        環境:

            利用上述實驗中的ns1.nwc.com作為主DNS服務器,其地址為10.1.32.11,添加一臺ns2.nwc.com作為其從DNS服務器,其地址為10.1.32.22

        準備工作:

            在ns2上安裝bind,然后修改其監聽的地址為10.1.32.22

            關掉dnssec的相關功能

            關閉僅允許本地查詢:注釋掉該行,// allow-query { localhost; };

    3、在從服務器上定義一個區域,其區域類型為slave

        在/etc/named.rfc1912.zones中定義:

            zone "ZONE_NAME" IN {

                type slave;

                file "slaves/ZONE_NAME.zone";

                masters {MASTER_IP;}

            };

            區域數據文件不用手動建立,因為從服務器會自動的從主服務器去同步數據文件

        注意:此處file 指定區域文件的路徑要放在/var/named/目錄下的slaves目錄下的原因是:因為named進程是以named這個用戶的身份運行,而named用戶針對/var/named/這個目錄的權限為r-x,也就是沒有寫權限,因此當從服務器從主服務器那邊同步過來的數據文件,要寫入該目錄時,是無法完成的。但是在/var/named/這個目錄下,專門建了一個目錄為slaves,而named用戶對這個目錄是有寫權限的,故區域數據文件放在該目錄下,則可以完成同步的操作

        例如:

            vim /etc/named.rfc1912.zones

            zone "nwc.com."  IN {

                type slave ;

                file "slaves/nwc.com.slave.zone" ;

                masters { 10.1.32.11 ; };

            };

    4、在從服務器上,檢測配置文件語法檢查:named-checkconfig

    5、在從服務器上,啟動服務service named start或重載配置

        用rndc reload命令即可實現

        如果是centos7,也可以用:

            systemctl reload named.service

    6、在主服務器上,確保區域數據文件中為每一個從服務器配置了NS記錄,且有對應的A記錄

        如,在本例中,我們需要在主服務器的區域數據文件/etc/named/nwc.com.zone中加上一個NS記錄和對應的A記錄:

        @    IN    NS    ns2.nwc.com.

        ns2.nwc.com.   IN   A   10.1.32.22

        注意:在配置了主從的結構中,從服務器已經啟動,當我們手動修改了主服務器的區域配置文件后,要將其序列號人為的加1,否則從服務器無法通過判斷主服務器的序列號來進行同步

    7、如何讓一部分客戶端用主DNS服務器解析請求,一部分客戶端利用從DNS服務器解析請求

        在不同的客戶端上匹配不同的DNS服務器,一部分執行主DNS服務器地址,一部分指向從DNS服務器

    8、如果想讓ns2作為ns1上的反向解析區域的從服務器,步驟根上述類似,現在從服務器上定義一個區域,指明區域類型為slave,指明區域文件路徑,指明master為哪個服務器

        然后在主服務器上的反向區域的區域數據文件中增加一個NS記錄,指向到ns2上,添加對應的PTR記錄

        <1>在從服務器上,添加區域:

            vim /etc/named.rfc1912.zones 

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

                type slave ;

                file "slaves/32.1.10.zone"

                masters { 10.1.32.11 ; };

            };

        <2>在主服務器上的反向解析的區域數據文件中增加NS記錄和PTR記錄

            vim /var/named/32.1.10.zone

            增加:

                @   IN   NS   ns2.nwc.com.

                22  IN   PTR   ns2.nwc.com.

            注意修改其序列號+1

            檢查主服務器配置文件,區域配置文件語法:

                named-checkconf /etc/named.conf

                named-checkzone  32.1.10.in-addr.arpa  /var/named/32.1.10.zone

                指明區域名稱,和區域數據文件的位置

            重載配置文件:

                rndc reload

        <3>檢查從服務器匹配文件語法:named-checkconf

        <4>重載從服務器配置文件:rndc reload

        <5>在從服務器上利用dig、host、nslookup進行測試

    9、如果從服務器的區域數據文件沒有從主服務器上正常同步過來,則可以利用dig -t axfr nwc.com. @10.1.32.11測試區域傳送,表示從主服務器10.1.32.11上完全傳送 nwc.com.這個區域數據文件到本機

    10、注意:主從服務器的時間要同步,ntpdate命令

第六章    子域授權

    假設,在我們之前的nwc.com.這個域中,我們希望建一個子域,子域的域名為:ops.nwc.com.,該子域自己內部有自己的DNS服務器,而針對nwc.com.這個父域有我們之前建的兩個DNS服務器,也就是上述實驗中建的一主一從DNS服務器

    如果在父域的DNS服務器上實現,將對子域的解析,都交給子域自己去實現,而不是直接利用父域上添加相應的資源記錄來實現。

    環境:

        在之前實驗的基礎上,添加對子域的授權,假設子域為 ops.nwc.com.  子域內的DNS服務器為ns1.ops.nwc.com這臺服務器,服務器地址為10.1.32.111,子域的ns1的從DNS服務器ns2.ops.nwc.com,其地址為:10.1.32.222

    1、在父域的主DNS服務器上,編輯其區域數據文件,添加對子域的授權NS記錄和A記錄:

        vim /var/named/nwc.com.zone

        加入:

        ops.nwc.com.   IN   NS   ns1.ops.nwc.com.

        ops.nwc.com.   IN   NS   ns2.ops.nwc.com.

        ns1.ops.nwc.com.  IN  A   10.1.32.111

        ns2.ops.nwc.com.  IN  A   10.1.32.222

        注意:父域的DNS服務器由于有從服務器,且從服務器已經在工作,故修改完配置文件后,要將其序列號+1

        檢查配置文件和區域數據文件的語法:

            named-checkconfig

            named-checkzone nwc.com. /var/named/nwc.com

        重載配置文件:rndc reload

        在各個頂級域如.com域內,實際上也是用類似的方法授權子域的

    2、在子域的主DNS服務器ns1.ops.nwc.com這臺服務器上配置:

        <1>安裝bind程序,修改監聽的地址為10.1.32.111,關閉dnssec功能

            關閉僅允許本地查詢:注釋掉該行,// allow-query { localhost; };

        <2>添加區域的定義:

            vim /etc/named.rfc1912.zones

            加上:

            zone "ops.nwc.com" IN {

                type master ;

                file "ops.nwc.com";

            };

        <3>添加區域數據文件:

            vim /var/named/ops.nwc.com.zone

            $TTL  3600

            $ORIGIN  ops.nwc.com.

            @    IN   SOA   ns1.ops.nwc.com.  dnsadmin.ops.nwc.com.  (

                2016091801

                1H

                10M

                1D

                2H

                ) 

                IN  NS   ns1

                IN  NS   ns2

                IN  MX  10 mail1

            ns1   IN   A   10.1.32.111

            ns2   IN   A   10.1.32.222

            www   IN   A   10.1.32.100

            web   IN   CNAME  www

            mail1  IN   A   10.1.32.100

            mail2  IN   A   10.1.32.200

            修改區域文件的屬主為root,屬組為named,權限為640

        <4>檢查配置文件和區域數據文件語法:

            named-checkconfig

            named-checkzone  ops.nwc.com  /var/named/ops.nwc.com.zone

        <5>啟動服務,或重載配置文件rndc reload

    3、定義子域的從DNS服務器

        在子域的從DNS服務器上:

        <1>安裝bind程序,修改監聽的地址為10.1.32.111,關閉dnssec功能

            關閉僅允許本地查詢:注釋掉該行,// allow-query { localhost; };

        <2>添加區域的定義:

            vim /etc/named.rfc1912.zones

            加上:

            zone "ops.nwc.com" IN {

                type slave ;

                file "slaves/ops.nwc.com"

                master { 10.1.32.111 ; };

            };

        <3>檢查配置文件語法:

            named-checkconfig

        <4>啟動服務,或重載配置文件rndc reload

第七章    區域轉發

    在正常情況下,子域是無法直接找到父域內的解析的,因為當子域內的客戶端向子域內的DNS服務器,請求解析某地址時,如果該地址不是子域DNS服務器自己負責解析的區域,則子域的DNS服務器會去找根域,然后根域告訴其找頂級域,頂級域告訴其找二級域,這樣進行迭代查詢。

    但是在本實驗中,子域內的主機如果要找的是父域的DNS負責解析的地址,則按照上述的工作模式還是要先去找根域,然后一級一級找到父域,然后解析,這樣不符合實際需求,此時就需要用到定義轉發的概念了

    定義轉發有兩種:

        <1>區域轉發:表示僅將某特定區域的解析請求進行轉發

        <2>全局轉發:表示只要不是本DNS服務器直接負責解析的區域,都進行轉發。相當于針對本地沒有通過zone定義的區域查詢請求,一律轉發到某目標服務器

        注意:被轉發的服務器,必須允許為當前定義轉發的服務器對其做遞歸查詢,默認情況下,是允許給任何人遞歸的

    1、如何定義某區域轉發:

        要在區域定義文件中/etc/named.rfc1912.zones中定義一個區域:區域類型為forward

        zone "ZONE_NAME" IN  {

            type  forward ;

            forward  first|only ;

            forwarders  { SERVER_IP ; };

        };

        區域類型為forward

        forward  定義轉發的類型,有first和only兩種

            first:首先轉發,表示當本DNS服務器解析不了時,就轉發給目標服務器進行解析,當目標服務器由于不在線或其他原因,不響應時,則當前DNS服務器就自己去找根域,然后一步一步迭代查詢

            only:只轉發,表示當本地DNS服務器解析不了時,不管轉發的目標服務器有沒有響應,都轉發,沒響應就一直等著

        forwarders  定義轉發給誰,轉發的目標服務器的IP(注意:轉發的目標服務器必須要允許本服務器對其發起遞歸查詢請求,默認都是允許的)

        如,在上述實驗中,希望子域在解析請求時,先去找父域(父域的主DNS服務器IP為10.1.32.11,父域的從DNS服務器IP為10.1.32.22),如果父域沒響應時,則子域自己去找根域,然后迭代查詢,則可以如下定義:

            在子域的主DNS服務器ns1.ops.nwc.com服務器上進行:

            vim /etc/named.rfc1912.zones 

            加入:

            zone "nwc.com" IN  {

                type forward ;

                forward first ;

                forwarders { 10.1.32.11 ; 10.1.32.22 ; };

            };

            在實驗環境中,可以將forward類型為only,因為沒有外網環境,無法找到根域

            因為父域有主從兩個DNS服務器,兩個DNS服務器都能解析請求,故此處可以定義轉發的目標服務器為兩個

        配置完成后檢查配置文件語法:

            named-checkconfig

        重載配置文件:rndc reload

    2、如何定義全局轉發

        假設我們在子域上定義,凡是不是子域DNS服務器直接負責解析的,就都轉到父域的DNS服務器上

        如果定義全局轉發,就不需要定義區域的方式進行配置,而是要在主配置文件中的全局配置段options中定義

        在子域的ns1.ops.nwc.com這臺服務器上:

            vim /etc/named.conf

            在options段中加入:

            forward only|first ; 

                 //根據需要選擇是first還是only

            forwarders { 10.1.32.11; 10.1.32.22; };

                 //選擇轉發的目標服務器地址

        這樣定義之后,表示只要不是自己負責的區域,則都轉交給10.1.32.11或10.1.32.22的DNS服務器(注意:前提是目標服務器要允許本機對其發起DNS的遞歸查詢請求,默認是允許的)

        配置完成后檢查配置文件語法:

            named-checkconfig

        重載配置文件:rndc reload

第八章    DNS安全相關的配置

    1、acl : 

        訪問控制列表,可以把一個或多個地址歸并為一個命名的集合,隨后,通過此名稱即可對此集合內的所有主機實現統一調用;

        定義方式:

            acl ACL_NAME {

                IP ;

                NET_ADDR/MASK ;

            };

        如:

            acl mynet {

                10.1.32.0/24;

                127.0.0.0/8;

            };

        注意:

            定義acl的語句,要放在bind主配置文件/etc/named.conf文件最前面,不能放在某個具體配置段中間

            acl只能先定義,后使用

        bind有4個內置的acl:

            none  表示沒有一個主機

            any   表示所有任意的主機

            local  表示本機上的所有IP地址

            loaclnet  表示本機IP所在的網絡的網絡內的所有主機

    2、可以調用acl的訪問控制指令

        <1>allow-query { };  

            表示允許查詢的主機,也就是只允許哪些主機對本機的DNS發起查詢請求,括號內填入acl名稱,如果不指定該指令,則默認允許所有的主機進行查詢

            此指令可以加在options中,表示對全局生效,也可以加在某個zone的定義中,表示僅對該區域生效

        <2>allow-transfer {};

            表示允許向哪些主機做區域傳送,默認為向所有主機;為了加強安全性,應該配置為僅允許向自己服務器的從服務器做區域傳送

            此指令可以加在options中,表示對全局生效,也可以加在某個zone的定義中,表示僅對該區域生效

            如:

                vim /etc/named.conf

                加入:

                acl slaves {

                    10.1.32.22;

                    127.0.0.1;

                };

            定義一個acl叫slaves,其內部的主機為10.1.32.22

            然后在options中加入:

                allow-transfer { slaves; };

                表示所有的區域數據,僅允許對10.1.32.22這個主機進行區域傳送

            如果將allow-transfer定義在某個具體的zone中,則可以實現該區域的數據僅向指定的主機傳送

        <3>allow-recursion {};

            表示允許哪些主機向當前DNS服務器發起遞歸查詢請求,也就是要求本DNS如果沒有解析的內容,本DNS就要一級一級的向根域,頂級域迭代查詢的

            如:實現本DNS服務器允許本地的主機對其發起遞歸查詢請求

                配置acl,定義本地網絡:

                vim /etc/named.conf

                加入:

                acl mynet {

                    10.1.32.0/24;

                    127.0.0.0/8;

                };

                在options配置段中加入:

                allow-recursion { mynet ; };

            注意:配置文件中默認有一項 recursion  yes;表示允許所有的遞歸請求,如果要實現只對本地的請求進行遞歸,則需要將該項注釋掉

        <4>allow-update {};

            表示允許動態更新區域數據庫文件中的內容(也就是區域的具體各個資源記錄的內容);一般情況下,除非使用了DDNS,否則需要定義為allow-update { none; };

第九章    智能DNS(view)

    1、bind view  bind視圖,也就是智能解析

        bind視圖的意義是:假設一個主機www.nwc.com這臺服務器上有兩個IP,一個是內網IP,一個是外網IP,或者一個是聯通服務器的IP,一個是電信服務器的IP;那么,我們可以在DNS服務器上定義,當來自內網用戶的訪問,都解析到內網的IP上,通過外網用戶的訪問,都解析到外網的IP上?;蛘邅碜月撏ǖ挠脩粼L問,都解析到聯通的IP上,來自電信的用戶,都解析到電信的IP上,這樣就可以實現來自對同一個域名的請求,根據需要,可以解析到不同的IP上

        定義視圖:

            view VIEW_NAME {

                ZONE1;

                ZONE2;

            };

    2、示例

        假設nwc.com.域內有一個主機為www.nwc.com,其有兩個IP地址,一個面向外網,172.16.32.1,一個面向內網,10.1.32.1

        實現將來自10.1.32.0/24這個網絡的主機訪問www.nwc.com時,解析到10.1.32.1上

        實現將來自172.16.32.0/24這個完了的主機訪問www.nwc.com時,解析到172.1.32.1上

        DNS服務器為ns1.nwc.com,IP為10.1.32.11

        <1>在DNS服務器上定義區域(要將區域定義在view中)

            vim /etc/named.rfc1912.zones

            加入:

            view inside {

                match-client {

                    10.1.32.0/24;

                };

                    //表示匹配請求的來源的IP地址,可以是acl定義的地址

                zone "nwc.com" IN {

                    type master;

                    file "nwc.com.inside.zone"

                };

            };

            view outside {

                match-client {

                    172.16.32.0/24;

                };

                    //表示匹配的來源的IP地址,可以是acl定義的地址

                zone "nwc.com" IN {

                    type master;

                    file "nwc.com.outside.zone"

                };

            };

        <2>配置區域數據文件,將不同的請求解析到不同的IP上

            vim /var/named/nwc.com.inside.zone

            $TTL 3600

            $ORIGIN  nwc.com.

            @    IN    SOA    ns1.nwc.com.   dnsadmin.nwc.com. (

                2016091801

                1H

                10M

                1D

                1D

                )

                IN    NS    ns1

            ns1   IN   A    10.1.32.11

            www   IN   A    10.1.32.1

            vim /var/named/nwc.com.outside.zone

            $TTL 3600

            $ORIGIN  nwc.com.

            @    IN    SOA    ns1.nwc.com.   dnsadmin.nwc.com. (

                2016091801

                1H

                10M

                1D

                1D

                )

                IN    NS    ns1

            ns1   IN   A    172.16.32.11

            www   IN   A    172.16.32.1

        view的實現過程實際就是將區域定義在view內部,然后view匹配不同的請求來源地址,然后指向不同的區域數據文件,各個區域數據文件中解析的內容不一樣來實現

原創文章,作者:M20-1倪文超,如若轉載,請注明出處:http://www.www58058.com/49376

(1)
M20-1倪文超M20-1倪文超
上一篇 2016-10-08
下一篇 2016-10-08

相關推薦

  • CA,DNS,LAMP實現wordpress

    拓撲圖見編譯實現LAMP,bind,CA.jpg test3配置:     yum -y install bind     修改named.conf配置文件:     //      listen-on por…

    2017-04-23
  • 【26期】Linux第九周學習小總結

    本周帶來的是慢慢的技術分享,有關于計劃任務的分享,涉及的知識點主要是at和cron,crontab的詳解,計劃任務可以將任何腳本、程序或文檔安排在某個最方便的時間運行,有利于我們的自動化運維,當某項任務多次重復,或者某個指定的時間點多次執行時,就可以使用計劃任務方便我們的工作。

    2017-09-09
  • FHS文件結構

    我們在前面學習的過程中有了解到,linux的發現版有很多種類型,那么如果每個版本都有著自己的想法去配置文件應該放置的目錄,那么將造成管理上的困擾,于是為了解決這個問題,就有了FHS標準。 1.1 FHS 結構 1.1.1 軟件的概念 之前,我們提到過,一個完整的計算機系統應該有兩部分組成,即:計算機系統=軟件+硬件。沒有軟件的硬件,計算機只不過是一堆只會發熱…

    Linux干貨 2016-10-27
  • rsyslog將日志記錄于MySQL中,并用loganalyzer進行分析日志

    1、首先來安裝lamp環境的支持,與其相關的軟件包      # yum -y install rsyslog-mysql mariadb-server php php-mysql php-gd httpd       說明:rsyslog-mysql在數據庫中生成一個庫文件,但這個文件需…

    Linux干貨 2016-10-23
  • 文件系統磁盤管理上

    磁盤:主要作用用于存儲數據 早期一塊硬盤共有256個盤面,每個盤面有1024個磁道,每個磁道有63個扇區,每個扇區的大小是512byte 硬盤的命名: 早期IDE硬盤標記為hd scsi、usb、sas標記為sd 引用設備的方式 設備文件名 標卷 UUID 硬盤分區: 第0個磁道的第0個扇區存放的是磁盤的信息 MBR:Master Boot Record 主…

    Linux干貨 2016-08-30
  • 認識DNS

    DNS全稱是Domain Name System的簡稱,即域名系統。因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議運行在UDP/TCP協議之上,使用端口號53。 認識DNS 安裝 創建一臺DN…

    Linux干貨 2016-12-07
欧美性久久久久