DNS的簡介和BIND實現

DNS簡介

    DNS其實大家都不陌生,因爲這個是我們訪問互聯網必不可少的一個東西,全稱:Domain Name System。在當今計算機網絡中是通過IP地址來進行主機之間互聯的,但是我們知道IP地址有32位,以後還會普及IPv6,128位。對於人類來記憶實在太痛苦了。DNS的作用就是爲了解決域名到IP之間的轉換。這樣大家就恍然大悟了吧,我們每天都在享受着DNS帶來的便捷。

    DNS是一個分佈式、分層次的主機名管理架構,通過配置DNS服務器地址,主機不需要知道對應的IP地址就能通過主機名的形式訪問互聯網。那麼你要想了,全球這麼多IP地址,都在一臺DNS服務器上,萬一宕機了咋辦?每天這麼多訪問量,配置得多高啊!前輩們早就想好解決方法了。DNS利用類似倒狀樹的目錄結構將主機名的管理分配在不同層級的DNS服務器當中,經過分層管理,每一級DNS服務器負責部分域名信息,這就減輕了DNS服務器的負載。具體結構參考下圖:

wKiom1nGUs3QUpCUAABMoT0Y6Ak169.png-wh_50

DNS解析過程

    第一種:遞歸查詢。遞歸查詢一般是客戶機和服務器之間的查詢,即只發送一起請求,其他的工作交給上層服務器去解決,然後一層一層的反饋結果到客戶端;

    第二種:迭代查詢。一般是DNS服務器與DNS服務器之間的方式,最初的服務器負責發起請求,一層層的找到目標服務器,在返回給客戶端,這個過程叫迭代。

一次完整的查詢請求經過的流程:

Client --> hosts文件 -->DNS service

       Local DNS cache --> DNS server(recursion遞歸)-->server cache -->iteration(迭代) -->根--> 頂級域名DNS-->二級域名DNS…

DNS服務器的類型   

    主DNS服務器:維護所負責解析的域內解析庫服務器。解析庫由管理維護;

    從DNS服務器:從主DNS服務器或其他的從DNS服務器那裏“複製”(區域傳遞)一份解析庫;

    緩存DNS服務器:提高DNS的訪問速度,實現快速解析,在安裝完成DNS軟件後就已經實現了簡單的緩存服務器,通常在/etc/named.conf當中的forward only設定;

    轉發器:通過區域傳送,將所需要的域名解析傳送給其他DNS服務器進行解析            

                    區域傳輸:

                            完全傳輸:傳送整個解析庫

                            增量傳輸:傳遞解析庫變化的那部分內容

DNS監聽的端口

    DNS是一個網絡服務,端口號是53.通常DNS在查詢的時候是以udp這個快速的數據傳輸協議來查詢的, 但是一旦沒有辦法查詢到完整的信息時就會再次以TCP協議來進行重新查詢,因此DNS服務在啓動的時候會同時開啓tcp的53號端口和udp的53號端口。

安裝DNS服務

    1、DNS服務程序包:bind,程序名:named

        使用yum list all bind* 查看相關安裝包:

                            bind:服務器;

                            bind-libs:於bind相關的庫文件;

                            bind-utils:客戶端相關命令文件;

                            bind-chroot:bind主目錄禁錮程序,就是將bind程序禁錮在家目錄中,centos6之後的系統已經默認在/var/named目錄下了;

                            補充:如果你的程序是centos之前,那麼還有一個軟件包caching-nameserver:作用是爲bind提供簡單的配置文件模版,centos5之後的系統這個軟件功能都被包含在bind主程序軟件包當中。
        *根據需求使用yum安裝bind軟件

    2、DNS服務器配置文件

                第一步:修改主配置文件:/etc/named.conf                      <==主配置文件一般用來定義全局配置和根zone

~]#cat /etc/named.conf 
options {                          <==在options包含的是全局配置
                listen-on port 53 { any; };       <==監聽的端口,即哪些主機可以進行訪問解析;
                directory       "/var/named";     <==對應數據庫文件的目錄位置;       
                dump-fi    le       "/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     { any; };       <==運行哪些主機請求查詢,這裏修改爲any運行所有;
                recursion yes;                <==將自己視爲客戶端的一種查詢方式;
                dnssec-enable no;              <==測試環境建議先關閉;
                dnssec-validation no;
};

             第二步:配置/etc/named.rfc1912.zones              <==主配置文件之一,一般用來存放zone,就是定義解析的域

zone "ZONE_NAME" IN {                      <==ZONE_NAME表示要解析的域名,正解時就是域名本身,如:jd.com;反解的時候:ip網段反寫.in-addr.arpa;
        type {master|slave|hint|forward};  <==定義zone的類型:master主DNS服務器,slave從服務器,hint根服務器,forward轉發域
        file "ZONE_NAME.zone";             <==標明解析域名的數據庫文件名
};

             第三步:解析庫文件:/var/named/ZONE_NAME.ZONE          <==與zone中file相對應,文件名必須一致   

                            區域解析庫:由衆多資源記錄RR組成:

                            資源記錄類型:

                                1、SOA:Start Of Authority,起始授權記錄;一個區域解析庫有且僅能有一個SOA記錄,必須位於解析庫的第一條記錄                  

                                 格式:name       [TTL]      IN        rr_type          value

                                                1、TTL表示該記錄被其他dns服務器查詢到後保留到對方服務器上的緩存當中保持多少秒,可全局繼承;

                                                2、name:當前區域的名字

                                                3、value: 有多部分組成:

$TTL 1D
@    IN  SOA  dns1   admin.xiaomage.com. (          <==@可用於引用當前區域的名字,dns1當前區域的主DNS服務器,admin.xiaomage.com.
                                                            當前區域管理員的郵箱地址;但地址中不能使用@符號,一般用.替換;
                                  31     ;序列號 
                                 1D     ;刷新時間
                                 1H     ;重試時間
                                 1W     ;過期時間
                                 3H )    ;否定答案的TTL值
dns1    IN  A                       *.*.*.*             <==主機名對應主機的IP地址

                                2、A :internet Address,作用,FQDN --> IP

                                3、AAAA: FQDN --> IPv6 

                                4、PTR: 反向解析:有特定格式,把IP地址反過來寫,1.2.3.4  要寫出4.3.2.1;而且有特定後綴:in-addr.arpa.,所以完整寫法爲:4.3.2.1.in-addr.arpa.

                                        例如:4.3.2.1.in-addr.arpa. IN PTR www.jd.com.       <==注意每個後面必須要加“.”作爲結束符,不然系統會自動補上當前域名

                                5、NS: Name Server,專用於標明當前區域的DNS服務器,對NS記錄而言,任何一個ns記錄後面的服務器名字,都應該在後續有一個A記錄

                                        例如:jd.com    IN     NS    ns1.jd.com

                                6、CNAME:Canonical Name,別名記錄

                                7、MX:Mail eXchanger,郵件交換器,對MX記錄而言,任何一個MX記錄後面的服務器名字,都應該在後續有一個A記錄

測試命令

    1、dig 只用於測試dns系統,不會查詢hosts文件進行解析

        語法:dig [-t type] name [@SERVER]

        例如:dig -t a www.hxsd.com @1.1.1.1

                    +trace:跟蹤解析過程

                    +recurse:進行遞歸解析

    2、host [-t type] name [SERVER]

          例如:host –t NS hxsd.com 172.16.0.1

    3、nslookup命令:nslookup[-option] [name | -] [server]

        交互式模式:

            nslookup>

            server IP: 指明使用哪個DNS server進行查詢

            set q=RR_TYPE: 指明查詢的資源記錄類型

            NAME: 要查詢的名稱

        非交互式模式:·

            nslookup www.hxsd.com 172.18.0.1 

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