Linux服務之DNS詳解

一、介紹

DNS(Domain Name System)域名系統,是一種用於TCP/IP應用程序的分佈式數據庫,他提供主機名字和IP地址之間的轉換及有關電子郵件的選路信息。DNS最常用的版本是BIND(Berkeley Internet Name Domain)——伯克利Internet域名服務器。

1、服務器類型

   緩存DNS服務器:不需要註冊,內部客戶端使用,數據由客戶端請求後將結果緩存到服務器上

   主DNS服務器(master):保存本域的NS記錄、主機A記錄、MX記錄、子域服務器記錄等數據庫更新由管理員手動完成

   輔助DNS服務器(slave):也叫從服務器,數據庫跟新從主服務器或其他輔助DNS服務器那裏同步獲取

   子域服務器:需要在父域服務器授權

2、域名分級結構

頂級域:“.”也稱之爲根域,全球總共有13臺根服務器,裝完bind後在/var/named/named.ca 中保存的就是全球的13臺根DNS信息

一級域:

   國家域:.cn, .hk, .iq, .us, .jp, .uk

   組織域:.com, .net, .edu, .org, .gov, .mil, .cc, .mobi

   反向域:arpa    FQDN <--IP

3、解析過程

(1)客戶端client發起查詢請求www.shohu.com,客戶機首先查詢自己的緩存了有沒有,然後在查看自己的hosts文件,如果沒有,把請求提交給local DNS

(2)local DNS接受到請求後,首先檢查本地緩存中,有沒有客戶請求的地址,如果有就直接將緩存中的結果相應給客戶,否則就開始迭代查詢,去找根服務器root DNS

(3)根服務器root DNS接收到local DNS的請求並查找自己的區域文件記錄,發現沒有www.sohu.com的記錄,但是我這裏有.com的記錄,我把.com以下的解析都授權給.com了, 然後將.com的地址迴應給local DNS

(4)local DNS收到根root DNS的返回結果後,就知道了.com的地址,並且這不是client所需要的結果,所以local DNS再去找.com

(5).com接收到local DNS的請求後查詢自己的區域文件記錄。發現他這裏也沒有www.sohu.com的記錄,但是有sohu.com的記錄,並且已經將解析權限授權給了sohu.com,然後將sohu.com的地址迴應給local DNS

(6)local DNS收到.com的迴應,發現依然不是最終clent需求的的結果,於是乎local DNS再去找sohu.com

(7)sohu.com接收到local DNS的請求後,查詢自己的區域文件記錄,自己這裏就有local DNS所要的答案,於是就將結果迴應給localDNS

(8)local DNS收到sohu.com的結果後,發現這就是clent請求的地址,於是local DNS現將結果緩存一份然後就將最終結果通知clent

(9)client收到最終結果後就可以順利的訪問到www.sohu.com了

二、測試命令彙總

bind的測試工具就包含在bind-utils軟件包中,

1、dig

   基本語法:dig -t 資源記錄類型 名稱 @server(使用那臺DNS服務器去查詢,也可以不跟)

dig -t A    #主機A記錄
       NS   #NS服務器記錄
       MX   #郵件記錄
       x    #反向解析
       axfr #查詢所有記錄,也叫區域傳輸
實例:
使用DNS服務器172.16.0.1查詢NS記錄root-server.net
# dig -t NS root-server.net @172.16.0.1
使用DNS服務器172.16.0.1查詢全球13臺根DNS的NS記錄
# dig -t NS . @172.16.0.1
使用DNS服務器172.16.0.1查詢www.sohu.com
# dig -t A www.sohu.com @172.16.0.1


2、host

基本語法與dig命令基本相同:host -t 資源記錄類型 名稱

例如:

# host -t A www.baidu.com

3、rndc

這個命令功能可以查看DNS服務的運行狀態,可以重新加載配置文件和清空緩存

rndc status             #查看服務器狀態
rndc reload             #重新裝載配置文件及區域解析庫文件
rndc reconfig           #僅重讀配置文件      
rndc flash              #清空緩存
rndc trace              #提升調試級別,級別越高信息越詳細
rndc trace LEVEL
    rndc trace 3        #指定調試級別爲3
rndc notrace            #關閉調試
rndc querylog           #打開查詢日誌功能

4、named-checkconf

檢查配置文件有沒有錯誤,直接輸入named-checkconf命令就可以測試,沒返回任何信息就是沒有錯誤。

5、named-checkzone

檢查區域庫文件有沒有錯誤

基本語法:named-checkzone "區域名" 區域庫文件路徑

例如:

[root@localhost named]# named-checkzone "lyd.com" /var/named/lyd.com.zone
zone lyd.com/IN: loaded serial 20130826
OK

如果返回OK表示沒有錯誤

三、實現過程

1、安裝

   安裝很簡單,如果配置好yum源的話直接yum安裝,如果沒有yum源可以把光盤做成yum源,或者直接掛載光盤安裝就可以了。可以一起將bind-utils工具包裝上

  # yum install bind bind-utils

2、主配置文件介紹

主配置文件:/etc/name.conf,每個語句都要使用分號結尾;
    定義各區域的全局配置;options{};
    定義視圖;view {};
    定義日誌:logging {};
    定義區域:zong "." IN {};    #這裏定義的是根提示
    引用其他配置文件:include "";
程序文件:/usr/sbin/named  
區域配置文件:/etc/named.rfc1912.zones
配置文件中的控制命令
allow-transfer {};      #允許區域傳送的主機地址
allow-query {};         #允許查詢的主機地址
allow-recursion {};     #允許遞歸的客戶端列表,一般只給本地客戶端做遞歸
allow-update {};        #允許更新的主機

3、配置最簡單的DNS緩存服務器

(1)修改主配置文件

# vi /etc/named.conf
options {
//      listen-on port 53 { 127.0.0.1; };  #註釋掉或者改成本機的IP
//      listen-on-v6 port 53 { ::1; };   
//      allow-query     { localhost; };    #允許查詢的客戶端IP範圍改成all或者直接註釋,
        }

(2)然後啓動服務就可以了

[root@localhost ~]# service named start
Generating /etc/rndc.key:                                  [  OK  ]
Starting named:                                            [  OK  ]

注意:Centos6啓動可能要等一會才能啓動,Centos5上沒有這問題。

(3)啓動成功後就是一臺DNS緩存服務器了

4、區域配置

(1)編輯區域配置文件/etc/named.rfc1912.zones添加一個正向區域

# vi /etc/named.rfc1912.zones

zone "lyd.com" IN {
        type master;                #定義區域類型
        file "lyd.com.zone"         #指定區域庫文件
};

檢查配置文件有沒有錯誤

# named-ceckconf

(2)添加區域庫文件

# vi /var/named/lyd.com.zone

$TTL 3600
@       IN      SOA     ns.lyd.com.     admin.lyd.com. (
                        2013082601     #序列號 
                        2H             #刷新時間
                        10M            #重試時間
                        7D             #過期時間
                        6H)            #否定回答的ttl
        IN      NS      ns             #主及NS記錄
        IN      MX  10  mail           #郵件記錄
ns      IN      A       172.16.3.3     #主機A記錄
mail    IN      A       172.16.3.2
www     IN      A       172.16.3.5
www     IN      A       172.16.3.6
ftp     IN      CNAME   www            #別名記錄

修改區域配置文件權限

# chown :named lyd.com.zone

檢查區域配置文件有沒有語法錯誤

# named-checkzone "lyd.com" /var/named/lyd.com.zone

重新加載配置文件

# rndc reload

驗證結果

5、反向區域

(1)添加區域配置文件

# vi /etc/named.rfc.1912.zones

zone "3.16.172.in-addr.arpa" IN {
        type master;
        file "172.16.3.zone";
};

檢查配置文件

# named-checkconf

(2)添加區域庫配置文件

$TTL 3600
@       IN      SOA     ns.lyd.com.     admin.lyd.com. (
                        20130826
                        2H
                        10M
                        7D
                        6H)
        IN      NS      ns.lyd.com.
3       IN      PTR     ns.lyd.com.
2       IN      PTR     mail.lyd.com.
5       IN      PTR     www.lyd.com.
6       IN      PTR     www.lyd.com.

修改區域庫文件權限

# chown :named 172.16.3.zone

檢查區域庫文件有沒有錯誤

# named-checkzone "3.16.172.in-addr" /var/named/172.16.3.zone

重新加載配置文件和庫文件

# rndc reload

驗證

四、主從複製

先介紹一下環境吧,前邊的DNS 作爲主DNS服務器IP:172.16.3.3

再配置一臺服務器安裝DNS做輔助DNS服務器IP:172.16.3.4

1、配置主DNS配置文件

zone "lyd.com" IN {
        type master;
        file "lyd.com.zone";
        allow-transfer { 172.16.3.4; };    #允許區域傳輸的地址
};
zone "3.16.172.in-addr.arpa" IN {
        type master;
        file "172.16.3.zone";
        allow-transfer { 172.16.3.4; };
};

# named-checkconf

2、配置主DNS的區域庫文件添加從DNS的NS記錄和主機A記錄

$TTL 3600
@       IN      SOA     ns.lyd.com.     admin.lyd.com. (
                        2013082601     #修改完區域文件後增大序列號
                        2H
                        10M
                        7D
                        6H)
        IN      NS      ns
        IN      NS      ns2            #從DNS的NS記錄
        IN      MX  10  mail
ns      IN      A       172.16.3.3
ns2     IN      A       172.16.3.4     #從DNS的A記錄
mail    IN      A       172.16.3.2
www     IN      A       172.16.3.5
www     IN      A       172.16.3.6
ftp     IN      CNAME   www

# named-checkzone "lyd.com" /var/named/lyd.com.zone

反向區域要添加從DNS的NS和PTR記錄,修改序列號

3、配置從服務器添加區域配置文件

zone "lyd.com" IN {
        type slave;                    #區域類型爲slave從
        file "slaves/lyd.com.zone";
        masters { 172.16.3.3; };       #指定主DNS
        allow-transfer { none; };      #不允許任何主機區域傳送
};
zone "3.16.172.in-addr.arpa" IN {      #反向區域
        type slave;
        file "slaves/172.16.3.zone";
        masters { 172.16.3.3; };
        allow-transfer { none; };
};

檢查配置文件有沒有錯誤

named-checkconf

啓動服務

service named start

4、在從DNS驗證

區域文件已經傳送過來了。

注意:區域文件傳送不成功防火牆端口開放或者關閉防火牆,SELinux是否關閉

五、轉發

1、轉發所有針對非本機負責解析的區域的請求

options {
    forward only;    #only僅佔發,first轉發返回沒結果時自己去查詢
    forwarders { 172.16.0.1; };
};

2、僅轉發特定區域的請求

zone "sohu.com" IN {
    type forward;
    forward only;
    forwarders { 172.16.0.1; };
};

轉發前提:接收轉發請求的服務器必須能夠爲請求者做遞歸查詢

3、註釋以下行

//      dnssec-enable yes;
//      dnssec-validation yes;
//      dnssec-lookaside auto;
//      managed-keys-directory "/var/named/dynamic";
//      include "/etc/named.root.key";

這幾行都在主配置文件中但不是連續的,都找出來註釋掉

4、測試指定使用172.16.3.3做解析

六、子域

域內:劃分出小域即爲子域

授權:委派,將請求委派給子域來管理

   在父域區域記錄中添加子域的NS記錄

1、在父域給子域授權

$TTL 3600
@       IN      SOA     ns.lyd.com.     admin.lyd.com. (
                        2013082601
                        2H
                        10M
                        7D
                        6H)
        IN      NS      ns
        IN      NS      ns2
        IN      NS      dep            #子域的NS記錄
        IN      MX  10  mail
dep     IN      A       172.16.3.7     #子域的A記錄
ns      IN      A       172.16.3.3
ns2     IN      A       172.16.3.4
mail    IN      A       172.16.3.2
www     IN      A       172.16.3.5
www     IN      A       172.16.3.6
ftp     IN      CNAME   www

2、在子域服務器上建立子域區域,和區域庫文件

父域是可以直接解析子域的,子域默認是不能解析父域的,但可以進行轉發進行訪問父域

未完待續

七、view試圖


八、壓力測試

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