DNS的簡介和BIND實現

DNS簡介數據庫

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

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

wKiom1nGUs3QUpCUAABMoT0Y6Ak169.png-wh_50

DNS解析過程bash

    第一種:遞歸查詢。遞歸查詢通常是客戶機和服務器之間的查詢,即只發送一塊兒請求,其餘的工做交給上層服務器去解決,而後一層一層的反饋結果到客戶端;
服務器

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

一次完整的查詢請求通過的流程:架構

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

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

DNS服務器的類型   ide

    主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服務

    一、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軟件

    二、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組成:

                            資源記錄類型:

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

                                 格式:name       [TTL]      IN        rr_type          value

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

                                                二、name:當前區域的名字

                                                三、value: 有多部分組成:

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

                                二、A :internet Address,做用,FQDN --> IP

                                三、AAAA: FQDN --> IPv6 

                                四、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.       <==注意每一個後面必需要加「.」做爲結束符,否則系統會自動補上當前域名

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

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

                                六、CNAME:Canonical Name,別名記錄

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

測試命令

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

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

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

                    +trace:跟蹤解析過程

                    +recurse:進行遞歸解析

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

          例如:host –t NS hxsd.com 172.16.0.1

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

        交互式模式:

            nslookup>

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

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

            NAME: 要查詢的名稱

        非交互式模式:·

            nslookup www.hxsd.com 172.18.0.1 

相關文章
相關標籤/搜索