天天看點

Linux學習之路之DNS的配置檔案和正解區域檔案、反解區域檔案

DNS正解區域檔案

在DNS中,我們知道有域和區域的概念,域的英文名稱是domain,它是一種邏輯概念;而區域英文全稱zone,它是一種實體概念。且zone分為正解區域和反解區域

正解區域:提供正向解析的服務,即FQDN-->IP的過程

反解區域:提供反向解析的服務,即IP-->FQDN的過程

不管好似正解區域還是反解區域,都通過了一個配置檔案,這個檔案中的每一個條目就是一個資源記錄(Resource Record,RR)。

資源記錄的類型主要有這些,且這些資源記錄的格式為:

SOA:起始授權記錄(Start Of  Authority ),定義資料檔案是為哪個區域建立的

            格式:

            ZONE_NAME  TTL      IN     SOA         (主DNS)FQDN        ADMINISTRATOR_MAILBOX (

                                                             serial number

                                                              refresh

                                                              retry

                                                              expire

                                                              nagitive TTL )

說明:TTL是某個解析記錄儲存在DNS伺服器上面的有效時長,可以省略。如果每個資源記錄的TTL一樣,可以在該檔案中的最前面這樣聲明即可:TTL  600

切記SOA記錄必須是檔案中的第一個資源記錄條目,可以出現在正解和反解區域檔案中

這裡的郵件位址不能使用@符号,@符号在這裡表示為域名。是以郵件位址一般這樣寫:

admin.xsl.com.

例如:寫一個SOA的資源記錄條目

            xsl.com.     600   IN   SOA      ns.xsl.com.     admin.xsl.com.   (

                                                2014082001

                                                1H

                                                5M

                                                1W

                                                1D        )

注意:這裡的機關可以是分鐘(M),小時(H),天(D),周(W),預設機關是秒

NS:Name Server,NS記錄表示的是某個域内的DNS伺服器,是以它的格式是這樣的:

            ZONE_NAME    TTL     IN      NS      NS_FQDN

            NS_FQDN          TTL     IN       A        IP

由于NS記錄是指定DNS伺服器的,是以這裡需要指定某個域内的DNS伺服器的是誰?這個伺服器的ip位址是什麼。是以需要兩條記錄。

這裡的A表示的是A記錄,格式就是上面的。

例如:在這裡寫一個NS記錄的例子:

              xsl.com.            TTL        IN      NS     ns1.xsl.com.    #這裡的域名可以使用@表示

              xsl.com.            TTL        IN      NS     ns2.xsl.com.

              ns1.xsl.com.     TTL        IN       A        1.1.1.1            #其實這裡的主機名也可以省略,即寫ns1

              ns2.xsl.com.     TTL        IN       A         2.2.2.2

A:Address,A記錄是定義某個主機(FQDN)到ipv4的過程,格式在上面已經說過,這裡不再寫了。

       不過要說明的時,A記錄隻能出現在正解區域檔案中。

AAAA:這個也是A記錄,不過定義的是FQDN到ipv6的過程

MX:Mail  eXchanger,這是郵件資源記錄。由于郵件伺服器可能有多個,是以我們使用優先級pri來判斷優先選擇使用哪個郵件伺服器。優先級pri範圍是0-99,數字越小越優先

郵件資源記錄條目一般定義在正解區域檔案中

郵件資源記錄的格式和NS資源記錄的格式大緻相同:

            ZONE_NAME    TTL         IN      MX    PRI   FQDN

            FQDN                 TTL        IN        A                IP

例如:在這裡寫個MX資源記錄的例子:

            xsl.com.                600        IN       MX     10    mail.xsl.com.

            mail.xsl.com.        600        IN        A                3.3.3.3

CNAME:Canonical NAME,一般之出現在正解區域檔案中

              格式是:

                FQDN(new)        TTL      IN      CNAME    FQDN(old)

例如:mail.xsl.com.這個主機的别名為ml.xsl.com.

                ml.xsl.com    600   IN   CNAME     mail.xsl.com(這個是真名)

PTR:domain  name  pointer   ,這是一個反向解析的資源記錄,隻能出現在反解區域檔案中。

格式是:IP.in-addr.arpa    TTL     IN    PTR     FQDN

例如:192.168.20.10的域名為www.xsl.com.,可以這麼寫:

             10.20.168.192.in-addr.arpa     600   IN   PTR  www.xsl.com.

例如:以192.168.20.10的主機名是www.xsl.com.為了建立DNS反解區域檔案

 .20.168.192.in-addr.arpa      600    IN    SOA    ns1.xsl.com.   admin.xsl.com.  (

                                                                     2014082101

                                                                     1H

                                                                     10M

                                                                     1D

                                                                     1D  )

10.20.168.192.in-addr.arpa    600    IN      PTR     www.xsl.com.

剛剛說個區域分為正解和反解區域。這隻不過是從查詢角度來說的,如果從傳輸資料的角度來劃分,那麼區域類型可以這麼劃分:

            主區域:Master,定義主伺服器的區域

            從區域:Slave,定義從伺服器的區域

            提示區域:hint,定義根域DNS伺服器的區域

            轉發區域:forword,定義轉發到某個DNS伺服器的區域

其中這些區域包含正解區域或者反解區域。懂了嗎?

 在這裡手動示範建立一個DNS伺服器

1、環境需求:作者使用的是RHEL5.8的系統

2、軟體需求:由于目前使用DNS的軟體大多使用的bind這個軟體,是以,在這裡我們也使用bind這個軟

    件來搭建一個DNS伺服器。目前bind軟體最新的是bind97,而系統預設就安裝了bind這個軟體,是以

    我們再此先解除安裝系統預設安裝的軟體。在安裝其他的軟體。

    解除安裝之前的軟體:rpm -e  bind-libs

                    rpm -e  bind-utils

    安裝新版的bind軟體:yum  install bind97-libs

                        yum install bind97

                        yum install bind97-utils

3、安裝完成了上述3個軟體後,系統預設會生成DNS的配置檔案(/etc/named/named.conf)

    在這裡,我們不使用預設的配置檔案,直接手動生成。

    重命名DNS配置檔案:mv /etc/named.conf   /etc/named.conf.old

    手動生成DNS配置檔案:vim /etc/named.conf

options {

        directory       "/var/named" ;   #定義是以區域的資料檔案

        allow-recursion {  192.168.108.0/24; }  #定義可以進行遞歸查詢的網段主機

        ##option這裡可以定義多個工作屬性,且全局生效

};

zone "." IN {

        type hint ;    #指定根伺服器的類型,其他DNS伺服器隻要解析不了的,都會将請求發給根

        file "named.ca" ;  #指定根伺服器的資料檔案,這裡的資料檔案都是使用相對路徑

zone "localhost" IN {

        type master ;

        file "named.localhost" ;

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

        file "named.loopback" ;

zone "xsl.com" IN {

        file "xsl.com.zone" ;

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

        file "108.168.192.in-addr.arpa.zone" ;

};          

說明:這裡的每一個zone表示的就是一個區域,其中以.in-addr.arpa結尾的表示是反向區域。其中type指定的是區域類型,file表示的是這個區域的資料檔案,該資料檔案以相對路徑來表示。

4、修改DNS的配置檔案屬主和屬組

    chown  root:named  /etc/named.conf  

5、手動生成每個區域的資料檔案

    在這裡我不在手動生成本地區域的正解資料檔案和反解資料檔案。這裡隻手動生成xsl.com這個區域的正解資料檔案。

vim /var/named/xsl.com.zone

$TTL 600

@       IN      SOA     ns1.xsl.com.    admin.xsl.com. (

                2014082301

                1H

                5M

                1D

                1D )

        IN      NS      ns1.xsl.com.

ns1.xsl.com.    IN      A       192.168.108.251

www             IN      A       10.100.10.1

www             IN      A       10.100.10.2

www             IN      A       192.168.108.15

ftp             IN      A       192.168.1.1

ftp             IN      A       192.168.108.252

mail            IN      CNAME   ftp

6、修改xsl.com.zone這個檔案的屬主和屬組

chown root:named /var/named/xsl.com.zone

不過,在建立完成了DNS伺服器之後,要確定SElinux處于關閉狀态

使用getenforce可以檢視SElinux處在的狀态

setenforce 0:關閉SElinux

setenforce 1:開啟SElinux

不過在指令行修改的,可以立即生效,但是不會永久生效。要想永久生效,可以修改SELinux的配置檔案/etc/selinux/config

修改完成之後,在使用service named  restart重新開機該服務即可

為了驗證在建立配置檔案和資料檔案的準确性,我們可以使用這些指令來檢查配置檔案和資料檔案的文法是否正确:

named-checkconf:如果沒有什麼其實表示DNS的配置檔案的文法是正确的

named-checkzone "區域"    該區域的資料檔案  :檢查某個區域的資料檔案的文法是否正确。

這兩個指令是檢查文法是否正确的,文法正确不代表這些檔案一定是正确的。邏輯錯誤是檢查不出來的。

接下介紹一些關于DNS的指令

dig  -t  {A|NS|MX} @server_ip

            {A|NS|MX}:可以來檢視相關資源記錄的資訊

            @server_ip:表示由指定的DNS伺服器來負責解析

 dig +trace [-t] [-A|-MX|-NS]  主機名 [@server_ip]:跟蹤整個解析過程

dig  +recurse 主機名 :允許該主機使用遞歸查詢

        +norecurse    :不允許某主機使用遞歸查詢

nslook  主機名:也可以用來解析主機名,在windows下也可以使用

nslook互動式指令:

nslook回車    

        server  ip          #使用指定DNS伺服器來負責解析

        主機名                #要解析的主機名

host   主機名:也可以用來解析某個主機名