天天看點

Linux配置 DNS and BIND服務配置詳解--緩存伺服器配置 正反向解析配置

一、DNS簡介

一、DNS簡介    

    DNS是計算機域名系統 (Domain Name System 或Domain Name Service) 的縮寫,它是由域名解析器和域名伺服器組成的。域名伺服器是指儲存有該網絡中所有主機的域名和對應IP位址,并具有将域名轉換為IP位址功能的伺服器。其中域名必須對應一個IP位址,一個域名可以有多個IP位址,而IP位址不一定有域名。域名系統采用類似目錄樹的等級結構。域名伺服器為客戶機/伺服器模式中的伺服器方,它主要有兩種形式:主伺服器和轉發伺服器。将域名映射為IP位址的過程就稱為“域名解析”。

1. DNS解析分正向解析和反向解析

正向解析:

        正向解析是指域名到ip位址的解析過程。

反向解析

         反向解析是指Ip位址到域名的解析過程。

2. DNS查詢:分遞歸查詢和疊代查詢

        遞歸查詢: 即用戶端向本地DNS伺服器請求查詢域名,本地DNS伺服器收到查詢任務後如自身無法回答則向其他伺服器查詢,直到查到結果後傳回結果給用戶端。期間DNS伺服器可能要查詢很多其他DNS伺服器。

        疊代查詢:即用戶端向本地伺服器請求查詢域名,本地DNS伺服器無法回答,則給用戶端傳回另一個能查詢域名的伺服器位址,用戶端再向另一伺服器查詢,期間可能用戶端需查詢多個DNS伺服器,最終查到結果。

3. 主從DNS伺服器:

         主DNS伺服器(Master DNS): 資料庫的修改更新;

         輔助DNS伺服器 (SlaveDNS):請求主DNS伺服器的資料同步更新;

         緩存DNS伺服器:它主要用來緩存查詢的位址資訊,而不用承擔任何其他的工作。它沒有區域檔案,也不從其他DNS伺服器傳輸資料。它能響應客戶機的查詢,但是沒有授權。

4. 資源記錄類型

        1>.SOA記錄:SOA名叫起始授權機構記錄,用于說明負責解析的DNS伺服器中哪一個是主伺服器。

        2>.NS(NAME SERVER):名稱伺服器記錄,用于說明這個區域由哪些DNS伺服器負責解析,NS和A記錄是成對出現   如:

<code> </code><code>NAME                  TTL         IN        RPT             VALUE   </code>

<code>51yunxuexi.club.       400         IN        NS           ns.51yunxuexi.club.</code>

<code>ns.51yunxuexi.club.    400         IN        A               1.1.1.1</code>

        3&gt;.A記錄(address):位址A記錄把FQND(域名)解析到IPv4位址,把主機名解析到IPv4位址,正向解析

        4&gt;.AAAA記錄(address):AAAA資源記錄把FQDN解析到IPv6位址,把主機名解析到IPv6位址

        5&gt;.PTR指針記錄(pointer):和A記錄相反,用于實作IP位址映射到FQDN,反向解析

        6&gt;.MX記錄: 全稱是郵件交換記錄(郵件交換器),在使用郵件伺服器的時候,MX記錄是無可或缺的,比如A使用者向B使用者發送一封郵件,那麼他需要向DNS查詢B的MX記錄,DNS在定位到了B的MX記錄後回報給A使用者,然後A使用者把郵件投遞到B使用者的MX記錄伺服器裡!優先級,0-99,數字越小,優先級越高

        7&gt;.CNAME記錄:也可說是别名記錄,規範名字(CNAME)資源記錄建立特定FQDN的别名。使用者可以使用CNAME記錄來隐藏使用者網絡的實作細節,使連接配接的客戶機無法知道。比如一個網站a.com 在釋出的時候,他可以建立一個别名記錄,把B.com釋出出去,這樣不容易被外在使用者所察覺!達到隐藏自己的目的!

        8&gt;.SRV記錄:它是DNS伺服器的資料庫中支援的一種資源記錄的類型,它記錄了哪台計算機提供了哪個服務這麼一個簡單的資訊。SRV 記錄:一般是為Microsoft的活動目錄設定時的應用。

5. 區域

        區域是用于存儲DNS域名的資料庫。DSN伺服器是以區域為機關來管理域名空間的。DNS資料庫表稱為區域檔案(Zone File)。資料庫中包含着DNS域的RR【資源記錄】,資料庫表中,RR是用文本形式表示的。

        一台DNS伺服器可以管理一個或多個區域,而一個區域也可以由多台DNS伺服器來管理。

在DNS伺服器中必須先建立區域,然後才可以根據需要在區域中建立子域以及在區域中添加RR。

可以建立正向查找區域和反向查找區域兩種區域。

1&gt;.區域類型有主要區域(主區域)、輔助區域(從區域)和存根區域、準發區域、提示區域等。

        主要區域:它是新區域的主副本,負責在新建立區域的伺服器上管理和維護本區域的RR。

        輔助區域:它是主區域的副本【備份】,主要區域中的DNS伺服器将把區域資訊傳遞給輔助區域中的DNS伺服器。使用輔助區域的目的是提供備援、減少包含主要區域資料庫檔案的DNS伺服器的負載。輔助區域的資料無法修改,其所有資料都是從主要區域複制而來。

        存根區域:它隻包含用于辨別該區域的授權DNS伺服器所需的RR。含有存根區域的DNS伺服器對該區域沒有管理權。存根區域隻能建立隻含有NS、SOA和A記錄的區域的副本。其所屬的主要區域通常是一個受委派區域。

2&gt;.區與域的關系:

        區包含了域中除了代理給别處的子域外所含有的所有域名和資料。如果域的子域沒有被代理出去,則該區包含該子域名和子域中的資料。

6. 區域傳輸(區域傳送) 

        将一個區域檔案複制到多個伺服器上的過程叫做區域傳輸。它是通過從主伺服器上将區域檔案的資訊複制到輔助伺服器上來實作的。

主伺服器是區域複制的來源伺服器,它既可以是主要區域,也可以是輔助區域。

*如果主伺服器是主要區域,區域傳輸則直接從主要區域取得區域檔案。

*如果主伺服器是輔助區域,區域傳輸僅傳輸區域檔案的一個隻讀副本。

兩種區域檔案複制方式:

        AXFR:全部區域檔案複制,複制整個區域檔案。

        IXFR:增量區域檔案複制,僅僅複制區域裡變化的記錄。

二、 bind軟體包的安裝以及配置檔案簡介

1、bind軟體包的安裝

        在使用DNS伺服器時首先要確定bind軟體包是否已經安裝,可以使用rpm –qa | grep bind 檢視。可以使用rpm指令安裝,也可以使用yum源安裝及所依賴軟體包。首先要安裝以下三個軟體包。

bind-9.8.2-0.17.rc1.el6.x86_64       bind的安裝包

bind-utils-9.8.2-0.17.rc1.el6.x86_64

bind-libs-9.8.2-0.17.rc1.el6.x86_64 

bind-chroot軟體包:切換named根目錄,加強DNS伺服器的安全

caching-nameserver.i386軟體包    可以快速建構DNS緩存名稱伺服器

2、DNS監聽的協定及端口

    53/UDP      預設查詢過程中使用的是UDP協定,因不需要三次握手,速度快         

    53/TCP      主從服務資料傳輸時為確定資料的準确、性完整性和安全行,使用的是TCP   

    953/TCP     rndc遠端域名服務控制器則使用953端口監聽

3、bind配置檔案簡介

/etc/named.conf bind服務程序的主配置檔案,主要定義bind程序的工作屬性和區域的定義

       /etc/rnd.key                  遠端名稱控制器,rndc的密鑰檔案

       /etc/rndc.conf                rndc的配置檔案

       /etc/var/named/               區域資料檔案,可自定義名稱

       /etc/rc.d/init.d/named  { start|stop|restart|status|reload }服務程序的啟動停止重新開機等

       /usr/sbin/named           bind的主程式檔案

       /usr/sbin/named-checkconf     named-checkconf指令檢查配置檔案是否有文法錯誤

       /usr/sbin/named-checkzone     named-checkzone指令檢查區域檔案是否有文法錯誤

       /usr/sbin/rndc                rndc指令是遠端控制工具

       /usr/sbin/rndc-confgen        rndc-confgen 指令是rndc配置檔案生成器(/etc/rndc.conf)

       /var/named/named.ca           Internet的13個根伺服器名字和位址,DNS接到用戶端主機的查詢請求時,如果在Cache中找不到相應的資料,就會通過根伺服器進行逐級查詢。

           Dig–t NS . 可以查詢跟節點的NS伺服器(可以通路網際網路的情況下)

/var/named/named.localhost      本地localhost主機的正向解析

/var/named/named.loopback       本地localhost主機的反向解析

           /etc/resolv.conf                DNS伺服器位址

三、/etc/named.cong主配置檔案

      區域的定義,每個選項後面必須要加分号,定義全局選項  

<code>options {</code>

<code>        </code><code>//</code> <code>listen-onport 53 { 127.0.0.1; };              </code><code>#預設監聽本地53端口 </code>

<code>        </code> 

<code>        </code><code>listen-on port 53 { any; };                      </code><code>#監聽所有位址的53端口</code>

<code>       </code><code>listen-on-v6 port 53 { ::1; };</code>

<code>       </code><code>directory      </code><code>"/var/named"</code><code>;                     </code><code>#自定義區域資料檔案存放目錄</code>

<code>       </code><code>allow-query     { localhost; };                  </code><code>#預設隻允許本地查詢</code>

<code>       </code><code>recursion </code><code>yes</code><code>;                                   </code><code>#是否允許遞歸</code>

<code>};</code>

<code> </code> 

<code>logging {                                               </code><code>#日志</code>

<code>        </code><code>channeldefault_debug {</code>

<code>               </code><code>file</code> <code>"data/named.run"</code><code>;                   </code><code>#日志檔案存放目錄</code>

<code>               </code><code>severity dynamic;</code>

<code>        </code><code>};</code>

區域zone的定義:

zong “ZONE NAME” IN{

       type   { master(主) | slave(從) | hint(根區域) | forward(轉發) }區域類型   

}

如果定義的資料類型為主區域則還需定義 file “區域資料檔案路徑”;

如果定義的資料類型為主區域則還需定義 file “區域資料檔案”;

                                                                                     master (主伺服器位址;)

                                                                           如      master (master_ip; ) 前後有空格

<code>zone “.” IN {                                          </code><code>#定義根區域</code>

<code>              </code><code>type</code> <code>hint;                                 </code><code>#定義根區域類型</code>

<code>              </code><code>file</code> <code>“named.ca”;                         </code><code>#定義根區域資料檔案</code>

1、配置緩存伺服器

<code>打開并編輯</code><code>/etc/name</code><code>.conf檔案,也可以在named.rfc1912.zones檔案中添加zone區域</code>

<code>              </code><code>zone </code><code>"localhost"</code> <code>IN {                  </code><code>#定義本地localhost正向解析zone區域</code>

<code>                </code><code>type</code> <code>master;                         </code><code>#定義主區域類型</code>

<code>                </code><code>file</code><code>"named.localhost"</code><code>;               </code><code>#定義區域資料檔案</code>

<code>zone </code><code>"0.0.127.in-addr.arpa"</code> <code>IN {                     </code><code>#定義本地localhost反向解析zone區域</code>

<code>                </code><code>file</code><code>"named.loopback"</code><code>;                </code><code>#定義區域資料檔案</code>

<code>檢查named配置檔案文法是否正确</code>

<code>       </code><code>[root@localhost etc]</code><code># named-checkconf</code>

<code>       </code><code>[root@localhost etc]</code><code>#</code>

<code>使用named-checkconf指令,無報錯則說明配置檔案文法正确</code>

<code>檢查zone區域配置是否正确</code>

<code>[root@localhost etc]</code><code># named-checkzone "0.0.127.in-addr.arpa"/var/named/named.loopback</code>

<code>zone 0.0.127.</code><code>in</code><code>-addr.arpa</code><code>/IN</code><code>: loaded serial0</code>

<code>OK </code>

<code>[root@localhost etc]</code><code># named-checkzone"localhost" /var/named/named.localhost</code>

<code>zone localhost</code><code>/IN</code><code>: loaded serial 0</code>

<code>OK</code>

<code>[root@localhost etc]</code><code>#</code>

<code>使用named-cone指令檢查區域是否有文法錯誤,傳回OK則說明無文法錯誤</code>

<code>重新開機DNS伺服器</code>

<code>[root@localhost etc]</code><code># service named restart</code>

<code>停止 named:.                                              [确定]</code>

<code>啟動 named:                                               [确定]</code>

 可以使用tail /var/log/messages檢視服務是否啟動正常        

<code>[root@localhost log]</code><code># tail /var/log/messages</code>

<code>Aug 29 22:43:10 localhost named[21072]: automatic</code>

<code>empty zone: 9.E.F.IP6.ARPA</code>

<code>empty zone: A.E.F.IP6.ARPA</code>

<code>empty zone: B.E.F.IP6.ARPA</code>

<code>empty zone: 8.B.D.0.1.0.0.2.IP6.ARPA</code>

<code>Aug 29 22:43:10 localhost named[21072]: </code><code>command</code>

<code>channel listening on 127.0.0.1</code><code>#953</code>

<code>channel listening on ::1</code><code>#953</code>

<code>Aug 29 22:43:10 localhost named[21072]: zone</code>

<code>0.0.127.</code><code>in</code><code>-addr.arpa</code><code>/IN</code><code>: loaded serial 0</code>

<code>localhost</code><code>/IN</code><code>: loaded serial 0</code>

<code>Aug 29 22:43:10 localhost named[21072]:</code>

<code>managed-keys-zone .</code><code>/IN</code><code>: loaded serial 7</code>

<code>Aug 29 22:43:10 localhost named[21072]: running</code>

<code>[root@localhost log]</code><code>#</code>

 使用dig –t NS. 指令測試本地緩存解析

                                   NS主DNS伺服器master:192.168.1.192

                                   NSSOA為ns1.51yunxuexi.club.

                                   www伺服器:192.168.1.106  192.168.1.103

                                   mail伺服器: 192.168.1.104

                                   有一台ftp在www主機上,ftp是www的别名CNAME

SOA:起始授權記錄格式

<code>ZONE NAME           TTL          IN         SOA    FQDN(主DNS名稱)  ADMIN MAIL(</code>

<code>                                                                                                                                                              </code><code>Serialnumber</code>

<code>                                                                                                                                                              </code><code>Refresh</code>

<code>                                                                                                                                                              </code><code>Retry</code>

<code>                                                                                                                                                              </code><code>Expire</code>

<code>                                                                                                                                                              </code><code>Nattl )</code>

<code>$TTL 600</code>

<code>    </code><code>@   IN     SOA    [FQDN]51yunxuexi.club.  admin.com.[管理者郵箱] (</code>

<code>                                </code><code>2015083001;serial    </code><code>#版本号(最長為10位數字)</code>

<code>                                </code><code>refresh              </code><code>#定義檢查周期時間</code>

<code>                                </code><code>1H;retry             </code><code>#定義重試時間</code>

<code>                                </code><code>1W;expire            </code><code>#定義過期時間</code>

<code>                                </code><code>3H );minimum         </code><code>#定義否定答案時長</code>

<code>時間機關:M(分鐘)、H(小時)、D(天)、W(周)、預設機關是秒</code>

ZONE NAME(區域名稱) 指/etc/named.conf中的zone “51yunxuexi.club”,可以使用@來代替51yunxuexi.club,@可以自動讀取zone name。

A)、打開并編輯/etc/named.conf,添加正向解析和反向解析的zone。

B)、在/var/named/目錄下建立51yunxuexi.club.zone

       打開并編輯51yunxuexi.club.zone建立正向解析

       [root@localhost named]# vim /var/named/51yunxuexi.club.zone

<a href="http://s3.51cto.com/wyfs02/M01/72/7C/wKiom1XkYXSAPGqOAALI6DoE4xI688.jpg" target="_blank"></a>

<code>修改</code><code>/var/named</code> <code>/51yunxuexi</code><code>.club.zone的檔案權限和屬組</code>

<code>[root@localhost named]</code><code># chmod 640 51yunxuexi.club.zone</code>

<code>[root@localhost named]</code><code># chown root:named51yunxuexi.club.zone </code>

<code>[root@localhost named]</code><code>#</code>

<code>使用named-checkconf和named-checkzone指令檢查主配置檔案和資料區域檔案是否有文法錯誤。</code>

<code> </code><code>[root@localhost named]</code><code># named-checkconf</code>

<code>[root@localhost named]</code><code># named-checkzone"51yunxuexi.club" /var/named/51yunxuexi.club.zone</code>

<code>zone 51yunxuexi.club</code><code>/IN</code><code>: loaded serial 2015080301</code>

C)、打開并編輯/var/named/192.168.1.zone建立反向解析

<code>使用named-checkconf 和named-zone指令檢查配置檔案是否有文法錯誤</code>

<code>[root@localhost ~]</code><code>#</code>

<code>[root@localhost ~]</code><code># named-checkconf</code>

<code>[root@localhost ~]</code><code># named-checkzone"1.168.192.in-addr.arpa" /var/named/192.168.1.zone</code>

<code>zone 1.168.192.</code><code>in</code><code>-addr.arpa</code><code>/IN</code><code>: loaded serial2015080301</code>

我在這裡使用nslookup指令測試正反向解析是否能正常解析

本文轉自 zhangguangyi 51CTO部落格,原文連結:http://blog.51cto.com/bosszhang/1688094