DNS服務器全面解析--轉


引用地址:http://pangge.blog.51cto.com/6013757/1273087

基礎認知篇

DNS服務的概述

DNS是Domain Name System 的縮寫,即域名系統。DNS服務主要功能是將域名轉換為相應的IP地址,提供DNS服務的系統就是DNS服務器。形如它能夠把www.baidu.com這樣的域名轉換為61.135.169.125這樣的IP地址;沒有DNS,瀏覽baidu.com這個網站時,就必須用61.135.169.125這么難記的數字來訪問。

DNS服務器可以分為3種,即主域名服務器(Master DNS)、輔助域名服務器(Slave DNS)、緩存服務器。

uMaster DNS:本身提供DNS 服務,並且本身含有區域數據文件。

uSlave DNS:和Master一起提供DNS服務,當Master服務器上的配置信息修改的時候,會同步更新到Slave服務器上

u緩存服務器:沒有自己的區域數據文件,只是幫助客戶端向外部DNS請求查詢,然后將查詢的結果保存到它的緩存中。

在linux系統下DNS服務的功能是通過bind軟件實現的,幾乎每個linux發行版都自帶了這個DNS服務軟件。下面將具體講述DNS服務的安裝、配置和使用。

 

服務器搭建篇

 第一部分:主DNS服務的搭建實現(包含知識點闡述)

環境介紹:CentOS6.4-x86_64

    bind版本:bind 9.8.2-0.17.rc1.el6

 

一.安裝bind軟件:

CentOS系統下安裝bind時,一般都需要同時安裝bind-utils、bind-chroot、ypbind、bind-libs和caching-nameserver幾個支持bind的軟件包。

注:bind-chroot:安裝上這個包之后讓named進程有限的活動在/var/named/chroot/中防止黑客攻擊導致服務器的崩潰。這里就不安裝了,因為安裝之后除了路徑改變之后其他均不變。所以為了更好的熟悉過程就暫時不裝了。

上面的幾個軟件包都可以從系統光盤中查找,可以通過指向yum源進行安裝:

[root@localhost ~]#yum install bind

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
查看安裝軟件生成的配置文件
[root@localhost ~] # rpm -qc bind
/etc/logrotate .d /named
/etc/named .conf                       #主配置文件
/etc/named .iscdlv.key
/etc/named .rfc1912.zones              #事先定義好的區域文件
/etc/named .root.key                   #實現事務簽名的密鑰文件
/etc/rndc .conf
/etc/rndc .key
/etc/sysconfig/named
/var/named/named .ca
/var/named/named .empty
/var/named/named .localhost
/var/named/named .loopback

 

二.配置DNS服務

准備工作

dig(域信息搜索器)命令是個用於詢問 DNS 域名服務器的靈活的工具。他執行 DNS 搜索,顯示從受請求的域名服務器返回的答復。多數 DNS 管理員利用 dig 作為DNS 問題的故障診斷,因為他靈活性好、易用、輸出清楚。雖然通常情況下 dig 使用命令行參數,但他也能夠按批處理模式從文檔讀取搜索請求。不同於早期版本,dig 的 BIND9 實現允許從命令行發出多個查詢。除非被告知請求特定域名服務器,dig 將嘗試 /etc/resolv.conf 中列舉的任何服務器。當未指定任何命令行參數或選項時,dig 將對“.”(根)執行 NS 查詢。

dig命令格式:

dig –t 資源記錄類型名稱@server-ip

       dig –x IP @server-ip   反向解析
       dig –t axfr zone    驗證完全區域傳送
      dig –t ixfr zone    驗證增量區域傳輸(通常需要指定序列號)

 

配置工作

主配置文件:named.conf,主要作用是定義區域,定義各區域的全局配置,定義視圖,定義日志,注意每個完整語句都要使用分號結尾,否則視為語法錯誤。

bind安裝完畢之后,主程序目錄默認為/var/named。

 

1).named.conf文件詳解

1
2
3
4
5
6
7
8
[root@localhost ~] # vim /etc/named.conf
//  named.conf
//
//  Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
//  server as a caching only nameserver (as a localhost DNS resolver only).
//
//  See  /usr/share/doc/bind * /sample/  for  example named configuration files.
    在named.conf配置文件中主要使用” // ”進行注釋信息,還可以使用/*、*/將多行注釋

 

1
2
3
4
5
6
7
8
9
options {
         listen-on port 53 { 127.0.0.1; };   #由於這里監聽的地址是本機所以啟動之后只會本機當服務器端本機當客戶端進行通信;所以要改成外部地址或注釋不要。
         listen-on-v6 port 53 { ::1; };      #這里是IPV6的監聽地址也可注釋
         directory        "/var/named" ;       #定義工作目錄的,就是區域文件的存放路徑,一般指定相對路徑都是相對於這個文件路徑的。
         dump- file        "/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     { localhost; };    #DNS定義完成之后允許誰來訪問,這里定義的為只允許本地查詢,所以可以注釋不要。
  #這是定義全局選項的,定義之后對所有區域都生效哦。
1
2
3
4
5
6
logging {
         channel default_debug {
                 file  "data/named.run" ;
                 severity dynamic;
         };
  #定義日志選項的
1
2
3
4
5
zone  "."  IN {
         type  hint;
         file  "named.ca" ;
};
  #定義區域文件的

 

1
2
3
include  "/etc/named.rfc1912.zones" ;
include  "/etc/named.root.key" ;
  #包含其他文件,意思就是可以將這些文件讀取進來

 

2).定義本地區域文件解析

首先更改/etc/named.rfc1912.zones主區域配置文件,在文件尾部新增下面一段內容:

1
2
3
4
5
zone  "magedu.com"  IN {
         type  master;
         file  "magedu.com.zone" ;               #定義的是相對路徑
         allow-update { none; };
};

   上面這段設置是用zone關鍵字來定義的一個正向區域,對應的域名為magedu.com。在這里type類型有三種,他們分別為master、slave、hint,含義如下:

    master:表示定義的主域名服務器

    slave:表示定義的是輔助域名服務器

    hint:表示是互聯網中的根域名服務器

   file用來指定存放DNS記錄的文件(一般都是區域名稱.zone),allow-update定義是否允許客戶主機或服務器自行更新DNS記錄,上面指定的這個正向區域不允許更新DNS記錄。

 

 

 

1
2
3
4
5
zone  "18.16.172.in-addr.arpa"  IN {
         type  master;
         file  "172.16.18.zone" ;
         };
  #這段設置是定義一個IP為172.16.18.*的反向區域

 

 

3).定義區域數據文件:

[root@localhost ~]# cd /var/named/                 #切換到區域文件存放目錄

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@localhost named] # vim magedu.com.zone        #編輯正向區域文件
$TTL  86400             #一天的時間秒鍾計算,看你的需求你需要多少寫多少
@        IN       SOA     dns.magedu.com.    admin.magedu.com. (
                                2013081401
                                2H
                                10M
                                7D
                                6H )
          IN       NS      dns    #若不寫全會自動同步名稱,若不寫全不能以”.”結尾
          IN       MX  10  mail
dns      IN       A       172.16.18.20
mail     IN       A       172.16.18.2
www      IN       A       172.16.18.6
www      IN       A       172.16.18.7   #若一個主機名兩個地址可以實現“負載均衡“
ftp       IN       CNAME   www

下面我們分析一下我們已經設定好的magedu.com正向區域數據文件的格式和含義:

可以看出,區域數據文件的內容很簡單。

第一行是一個TTL設定,定義區域數據文件里面的各項記錄的宏,缺少此行不影響使用,但是會出現警告信息。

第二行是一個SOA記錄的設定,“@“代表相應的域名,也就是在/etc/named.rfc1912.zones,如在這里表示magedu.com,IN表示后面的數據使用的是Internet標准。SOA表示目前區域授權開始。每一個區域數據文件只能有一個SOA,不能重復,並且必須是所負責的zone中第一個”記錄“。在SOA后面分別指定這個區域的授權主機名稱和管理者的郵箱。

注:授權主機名和管理員信箱后面都要有一個”.”。由於”@”在區域數據文件中有其他含義,因此管理員郵箱地址中用”.”代替“@“符號。

接下來包含在括弧內的5組數字是作為服務器同步信息而設置的,含義如下:

第一段表示配置文件的修改版本,格式是年月日加上修改的次數,每次修改這個配置文件時都應該修改這個數值,因為當DNS進行信息同步時,會比較這個數值的值。如果這個數值比自身的數值大,就進行更新,否則忽略更新。(這個設置很重要,如果修改區域數據后沒有更新該值,那么所做的更改就不會同步到其他DNS服務器)

第二段表示用來設定DNS服務器進行同步的間隔時間又稱刷新時間。只通知給本區域解析庫文件中定義NS記錄的所有主機;

第三段表示同步更新失敗之后,在進行重試的間隔時間。

第四段表示同步更新失敗之后,多長時間清除對應的記錄,又稱過期時間

第五段表示否定的TTL值

接下來是對域名解析的具體設置,第1列表示不同的主機域名,但是省略了后面的域信息(若為空白表示與上面域名相同)。例如:”www”其實是www.magedu.com等。“IN“后面的指令含義說明如下:

NS:用來定義這個主機是個域名服務器,是個區域名稱

MX:定義郵件服務器,這里需要定義優先級的哦!這里定義的交換級別為10

A:定義了一個A記錄,即域名到IP的記錄

CNAME:定義了域名的別名

 

[root@localhostnamed]# cp magedu.com.zone 172.16.18.zone   #定義反向區域文件

 

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost named] # vim 172.16.18.zone                   #編輯反向區域文件
$TTL  86400
@        IN       SOA     dns.magedu.com.    admin.magedu.com. (
                                2013081401
                                2H
                                10M
                                7D
                                6H )
          IN       NS      dns.magedu.com.   #這里必須寫全,不然會默認成dns.18.16.172
20       IN       PTR     dns.magedu.com.
2        IN       PTR     mail.magedu.com.
6        IN       PTR     www.magedu.com.
7        IN       PTR     www.magedu.com.

 

分析:可以看出,反向區域文件基本結構和正向區域數據文件基本完全相同,只不過這里多出了一個PTR選項。PTR用來定義一個反向記錄,也就是通過IP可以查到對應的域名信息。最后四行的第一列表示是主機的IP地址,只不過省略了網絡地址部分,系統會自動補全,如20對應的是172.16.18.20.

至此,DNS文件配置部分已經基本配置完成,從過程可以看出DNS配置文件對格式的要求非常嚴格。因此,在以后的配置中要格外的小心。

 

 

4).定義區域文件的權限關系

 

1
2
3
4
5
6
7
8
9
10
11
[root@localhost named] # ls -l
total 36
-rw-r--r-- 1 root  root   470 Jul 28 13:56 172.16.18.zone
drwxrwx--- 2 named named 4096 Jul 28 10:51 data
drwxrwx--- 2 named named 4096 Jul 28 13:52 dynamic
-rw-r--r-- 1 root  root   504 Jul 28 13:56 magedu.com.zone
-rw-r----- 1 root  named 1892 Feb 18  2008 named.ca
-rw-r----- 1 root  named  152 Dec 15  2009 named.empty
-rw-r----- 1 root  named  152 Jun 21  2007 named.localhost
-rw-r----- 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx--- 2 named named 4096 Feb 22 11:10 slaves

 

在這里我們通過編輯創建的magedu.com.zone文件,然后將該文件的權限屬組更改成系統默認設定權限,這個授權很重要,要不然DNS無法正常工作。

 

1
2
3
4
[root@localhost named] # chmod 640 magedu.com.zone
[root@localhost named] # chmod 640 172.16.18.zone
[root@localhost named] # chown :named magedu.com.zone
[root@localhost named] # chown :named 172.16.18.zone

 

這里的named屬組屬主都是創建DNS時系統默認創建的。

 

 

5).檢查區域文件語法錯誤與否:

 

 

1
2
3
4
5
6
7
8
[root@localhost named] # named-checkconf         #檢查主配置文件語法,無信息輸出說明配置成功
[root@localhost named] # named-checkzone "magedu.com" /var/named/magedu.com.zone            #檢查zone語法錯誤與否
zone magedu.com /IN : loaded serial 2013081401
OK
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
[root@localhost named] # named-checkzone "18.16.172.in-addr.arpa" /var/named/172.16.18.zone
zone 18.16.172. in -addr.arpa /IN : loaded serial 2013081401
OK

 

 

 

三.測試DNS配置

在對DNS文件的所有配置完成后,需要重啟服務,以使配置生效。由於我們這里還未啟動過服務所以執行如下命令啟動DNS服務:

 

1
2
3
[root@localhost etc] # service named start             #啟動服務
Generating  /etc/rndc .key:                                  [  OK  ]    #也許讀取速度會很慢,稍等!
Starting named:                                            [  OK  ]

 

建議:若之前啟動過服務,配置完成之后想重新啟動新數據,建議不要使用restart重啟,因為這樣可能導致網絡服務斷掉,所以要使用reload重新載入信息。

 

1
2
[root@localhost named] # service named reload
Reloading named:                                           [  OK  ]

下面我們使用dig命令對DNS正向區域解析情況進行測試

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@localhost named] # dig -t A www.magedu.com @172.16.18.20      #解析A記錄
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t A www.magedu.com @172.16.18.20
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 44158
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.magedu.com.            IN  A
;; ANSWER SECTION:
www.magedu.com.     86400   IN  A   172.16.18.6
www.magedu.com.     86400   IN  A   172.16.18.7
;; AUTHORITY SECTION:
magedu.com.     86400   IN  NS  dns.magedu.com.
;; ADDITIONAL SECTION:
dns.magedu.com.     86400   IN  A   172.16.18.20
;; Query  time : 1 msec
;; SERVER: 172.16.18.20 #53(172.16.18.20)
;; WHEN: Sun Jul 28 14:31:54 2013
;; MSG SIZE  rcvd: 98

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost named] # dig -t NS magedu.com @172.16.18.20    #解析NS記錄
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t NS magedu.com @172.16.18.20
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 41920
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;magedu.com.            IN  NS
;; ANSWER SECTION:
magedu.com.     86400   IN  NS  dns.magedu.com.
;; ADDITIONAL SECTION:
dns.magedu.com.     86400   IN  A   172.16.18.20
;; Query  time : 1 msec
;; SERVER: 172.16.18.20 #53(172.16.18.20)
;; WHEN: Sun Jul 28 14:39:00 2013
;; MSG SIZE  rcvd: 62

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
root@localhost named] # dig -t SOA magedu.com @172.16.18.20   #解析SOA記錄
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t SOA magedu.com @172.16.18.20
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 60898
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;magedu.com.            IN  SOA
;; ANSWER SECTION:
magedu.com.     86400   IN  SOA dns.magedu.com. admin.magedu.com. 2013081401 7200 600 604800 21600                #這里全部以秒為單位進行顯示
;; AUTHORITY SECTION:
magedu.com.     86400   IN  NS  dns.magedu.com.
;; ADDITIONAL SECTION:
dns.magedu.com.     86400   IN  A   172.16.18.20
;; Query  time : 1 msec
;; SERVER: 172.16.18.20 #53(172.16.18.20)
;; WHEN: Sun Jul 28 14:44:34 2013
;; MSG SIZE  rcvd: 104

 

下面我們使用dig命令對DNS反向區域解析情況進行測試

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost named] # dig -x 172.16.18.20    #反向區域解析
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -x 172.16.18.20
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 13525
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;20.18.16.172. in -addr.arpa. IN  PTR
;; ANSWER SECTION:
20.18.16.172. in -addr.arpa. 86400 IN PTR dns.magedu.com.
;; AUTHORITY SECTION:
18.16.172. in -addr.arpa. 86400   IN  NS  dns.magedu.com.
;; ADDITIONAL SECTION:
dns.magedu.com.     86400   IN  A   172.16.18.20
;; Query  time : 1 msec
;; SERVER: 172.16.18.20 #53(172.16.18.20)
;; WHEN: Sun Jul 28 15:56:49 2013
;; MSG SIZE  rcvd: 101

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@localhost named] # dig -t axfr 18.16.172.in-addr.arpa    #反向完全區域解析
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t axfr 18.16.172. in -addr.arpa
;; global options: +cmd
18.16.172. in -addr.arpa. 86400   IN  SOA dns.magedu.com. admin.magedu.com. 2013081401 7200 600 604800 21600
18.16.172. in -addr.arpa. 86400   IN  NS  dns.magedu.com.
2.18.16.172. in -addr.arpa. 86400 IN  PTR mail.magedu.com.
20.18.16.172. in -addr.arpa. 86400 IN PTR dns.magedu.com.
6.18.16.172. in -addr.arpa. 86400 IN  PTR www.magedu.com.
7.18.16.172. in -addr.arpa. 86400 IN  PTR www.magedu.com.
18.16.172. in -addr.arpa. 86400   IN  SOA dns.magedu.com. admin.magedu.com. 2013081401 7200 600 604800 21600
;; Query  time : 5 msec
;; SERVER: 172.16.18.20 #53(172.16.18.20)
;; WHEN: Sun Jul 28 16:02:04 2013
;; XFR size: 7 records (messages 1, bytes 220)

從上面的輸出信息可以看出,DNS都可以正確解析,說明我們的配置沒有問題,DNS服務器已經正常工作了。

小拓展:如何不用指向本機就能做本地解析??

#直接將DNS指向本機即可

 

1
2
3
4
[root@localhost named]# vim /etc/resolv.conf
# Generated by NetworkManager
nameserver  172.16 . 18.20
     #直接將DNS指向本機即可

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost named] # dig -t axfr magedu.com     #正向完全區域解析
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t axfr magedu.com
;; global options: +cmd
magedu.com.     86400   IN  SOA dns.magedu.com. admin.magedu.com. 2013081401 7200 600 604800 21600
magedu.com.     86400   IN  NS  dns.magedu.com.
magedu.com.     86400   IN  MX  10 mail.magedu.com.
dns.magedu.com.     86400   IN  A   172.16.18.20
ftp .magedu.com.     86400   IN  CNAME   www.magedu.com.
mail.magedu.com.    86400   IN  A   172.16.18.2
www.magedu.com.     86400   IN  A   172.16.18.6
www.magedu.com.     86400   IN  A   172.16.18.7
magedu.com.     86400   IN  SOA dns.magedu.com. admin.magedu.com. 2013081401 7200 600 604800 21600
;; Query  time : 1 msec
;; SERVER: 172.16.18.20 #53(172.16.18.20)
;; WHEN: Sun Jul 28 15:00:08 2013
;; XFR size: 9 records (messages 1, bytes 231)

 

 

第二部分:創建從DNS服務器(主從同步實現)

 說明:如果有多台DNS服務器,必須為每個DNS服務器建立NS記錄,否則主DNS將無法向其發送通知.

     從服務器IP地址:172.16.18.1

 

 

u正向區域從服務器創建過程:

1、安裝Bind軟件(同上,不再演示)

2、設置配置文件

1
2
3
4
5
[root@stu18 ~] #vim /etc/named.conf
             注釋掉options段中如下選項
     //listen-onport  53 { 127.0.0.1; };
     //listen-on-v6port  53 { ::1; };
     //allow-query      { localhost; };

 3、編輯區域配置文件

 

 

1
2
3
4
5
6
[root@stu18 ~] # vim /etc/named.rfc1912.zones         #添加如下:
zone  "magedu.com"  IN {
         type  slave;
         file  "slaves/magedu.com.zone" ;
         masters {172.16.18.20;};
};

 

 4、檢查配置文件語法錯誤與否

1
[root@stu18 ~] # named-checkconf

 5、切換之主服務器,給此服務器添加一個NS記錄

 

1
2
3
4
5
6
[root@localhost ~] # vim /var/named/magedu.com.zone
                 2013081402    #添加完成后記得將配置文件版本號改動一下哦!!
          IN       NS      ns2                #添加NS記錄
          IN       MX  10  mail
mail     IN       A       172.16.18.2
ns2      IN       A       172.16.18.1        #添加A記錄

 

 6、檢查主服務器上解析文件語法錯誤與否:

 

1
2
3
[root@localhost ~]# named-checkzone  "magedu.com"  / var /named/magedu.com.zone
zone magedu.com/IN: loaded serial  2013081401
OK

 

 7、將主服務器上的數據同步一下

 

1
2
[root@localhost named] # service named reload
Reloading named:                                           [  OK  ]

 

 8、檢測NS記錄是否同步完成

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost named] # dig -t NS magedu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t NS magedu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 64614
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2
;; QUESTION SECTION:
;magedu.com.            IN  NS
;; ANSWER SECTION:
magedu.com.     86400   IN  NS  dns.magedu.com.
magedu.com.     86400   IN  NS  ns2.magedu.com.
;; ADDITIONAL SECTION:
dns.magedu.com.     86400   IN  A   172.16.18.20
ns2.magedu.com.     86400   IN  A   172.16.18.1
;; Query  time : 2 msec
;; SERVER: 172.16.18.20 #53(172.16.18.20)
;; WHEN: Sun Jul 28 17:09:09 2013
;; MSG SIZE  rcvd: 96

 

 9、切換至從服務器,啟動服務

 

1
2
3
[root@stu18 ~]# service named start
Generating /etc/rndc.key:                                  [  OK  ]
Starting named:                                            [  OK  ]

 

 10、查看數據文件是否已同步

 

1
2
3
[root@stu18 ~] # cd /var/named/slaves/
[root@stu18 slaves] # ls
magedu.com.zone              #自動同步自動創建指定名稱

 

 11、查看數據解析情況

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@stu18 slaves] # dig -t A www.magedu.com         #解析A記錄
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t A www.magedu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 6485
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.magedu.com.            IN  A
;; ANSWER SECTION:
www.magedu.com.     86400   IN  A   172.16.18.6
www.magedu.com.     86400   IN  A   172.16.18.7
;; AUTHORITY SECTION:
magedu.com.     86400   IN  NS  ns2.magedu.com.
magedu.com.     86400   IN  NS  dns.magedu.com.
;; ADDITIONAL SECTION:
dns.magedu.com.     86400   IN  A   172.16.18.20
ns2.magedu.com.     86400   IN  A   172.16.18.1
;; Query  time : 1 msec
;; SERVER: 172.16.18.1 #53(172.16.18.1)
;; WHEN: Sun Aug 11 17:46:16 2013
;; MSG SIZE  rcvd: 132

 

 

u反向區域從服務器創建

說明:創建過程與正向基本相同。

1)編輯區域配置文件

 

1
2
3
4
5
6
[root@stu18 ~] # vim /etc/named.rfc1912.zones         添加如下:
zone  "18.16.172.in-addr.arpa"  IN {
          type  slave;
          file  "slaves/172.16.18.zone" ;
          masters {172.16.18.20;};
};

 

    保存配置過程,之后不要立即重啟哦!!

    下面的過程就不重復進行了,相信你的能力和我一樣完全可以勝任這一切!!

 

    總結:當主從DNS服務器聯通之后,改動主服務器上的數據后,重新載入配置文件會將數據立即同步到從服務器上(這里筆者也不再演示了)。謹記:改動解析文件后一定將配置文件版本號更改一下!!

 

拓展:關於DNS安全的防護

當我們創建完成之后任何一個外界服務器都可以到我們的主服務器上進行區域傳送這樣會導致我們的網絡結構丟失,因此我們不能讓外部服務器同步,只允許從服務器同步;我們該怎么做到呢??

使用allow-transfer {IP;}   只允許誰(IP)傳送。任何人不允許傳送使用{none;}

例如:定義只允許172.16.18.1進行傳送

 

1
2
3
4
5
6
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone  "magedu.com"  IN {
         type master;
         file  "magedu.com.zone" ;  
         allow-transfer { 172.16 . 100.17 ;};     #相當於定義一個白名單
};

 

 

第三部分:DNS子域授權(優化部分)

DNS本來的數據結構就是一個層級結構,猶如一個倒立的樹狀結構,由一點出發,一層層的向下分成了多個分支,而這些分支就是其上級域的子域,其上級域就是相對的父域,子域是從父域中划出來的一個域,子域中的DNS服務器負責這個子域中的地址解析,從而減輕了父域中DNS服務器的壓力,這不僅提高了解析服務的效率,同樣也提高了解析服務的穩定性,此部分我們就是學習如何給一個域划分出一個子域,並讓這個子域中的DNS服務器能夠進行子域中的域名解析服務,這個過程也叫做子域授權。

 

正向子域授權實現方式

        主父服務器:172.16.18.20

        從服務器:172.16.18.1

        子域服務器:172.16.251.144

 

首先設置子域的地址名稱

 

1
2
3
4
[root@localhost] # vim /var/named/magedu.com.zone  #添加如下
dep1     IN       NS      dns.dep1 
dns.dep1 IN       A       172.16.251.144
#注:記得更改版本號!!

 

然后將數據再同步一下

 

1
2
[root@localhost named] # rndc reload
server reload successful

 

 

最后建立子域服務器:

1、安裝bind並啟動服務

1
2
安裝過程詳見其上...
[root@station144 ~]# service named start

2、編輯主配置文件

1
2
3
4
5
[root@stu18 ~] # vim /etc/named.conf
注釋掉options段中如下選項:
//listen-on  port 53 { 127.0.0.1; };
//listen-on-v6  port 53 { ::1; };
//allow-query      { localhost; };

3、更改區域文件

1
2
3
4
5
[root@station144 named] # vim /etc/named.rfc1912.zones
zone  "dep1.magedu.com"  IN {
         type  master;
         file  "dep1.magedu.com.zone"
};

4、定義區域數據文件

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@station144 named] # vim dep1.magedu.com.zone
$TTL   1200
@         IN   SOA   dns.dep1.magedu.com.  admin.dep1.magedu.com. (
                         2013081401
                           1H
                           10M
                           3D
                           2H )
                IN       NS         dns
                IN       MX   10    mail
dns            IN       A          172.16.251.144
mail           IN       A          172.16.251.145
www            IN       A          172.16.251.145

5、更改區域數據文件的權限屬組

1
2
[root@station144 named] # chown:named dep1.magedu.com.zone
[root@station144 named] # chmod 640dep1.magedu.com.zone

6、檢查語法錯誤與否

 

1
2
3
4
[root@station144 named] # named-checkconf
[root@station144 named] # named-checkzone  "dep1.magedu.com" dep1.magedu.com.zone
zone dep1.magedu.com /IN : loaded serial 2013081401
OK

7、重新啟動服務,同步數據

 

1
[root@station144 named] # rndc reload

8、測試解析(本機解析)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@station144 named] # dig -t A   www.dep1.magedu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t A www.dep1.magedu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 42286
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.dep1.magedu.com.       IN  A
;; ANSWER SECTION:
www.dep1.magedu.com.    1200    IN  A   172.16.251.145
;; AUTHORITY SECTION:
1、  dep1.magedu.com.    1200    IN  NS  dns.dep1.magedu.com.
;; ADDITIONAL SECTION:
dns.dep1.magedu.com.    1200    IN  A   172.16.251.144
;; Query  time : 1 msec
;; SERVER: 172.16.251.144 #53(172.16.251.144)
;; WHEN: Tue Aug 13 00:00:15 2013
;; MSG SIZE  rcvd: 87

9、切換至父服務器測試解析

1
2
[root@localhost named] # dig -t NS www.dep1.magedu.com
結果顯示:可以正常解析   父域可以直接查找子域文件進行解析

 10、子域解析父服務器

1
2
[root@station144~]# dig -t A www.magedu.com
結果顯示:無法正常進行解析     不能向上直接解析,只能通過根來解析

    11、利用轉發實現子域解析父域

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@station144 named] # vim /etc/named.rfc1912.zones  #添加下列文本
zone  "magedu.com"  IN {
type  forward;
forward only;
forwarders {172.16.18.20;};
};
保存
[root@station144 named] # rndc reconfig   重新配置信息
結果:
[root@station144 named] # dig -t A www.magedu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t A www.magedu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 62754
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.magedu.com.            IN  A
;; ANSWER SECTION:
www.magedu.com.     85622   IN  A   172.16.18.6
www.magedu.com.     85622   IN  A   172.16.18.7
;; AUTHORITY SECTION:
magedu.com.     85622   IN  NS  dns.magedu.com.
magedu.com.     85622   IN  NS  ns2.magedu.com.
;; ADDITIONAL SECTION:
dns.magedu.com.     85622   IN  A   172.16.18.20
ns2.magedu.com.     85622   IN  A   172.16.18.1
;; Query  time : 1 msec
;; SERVER: 172.16.251.144 #53(172.16.251.144)
;; WHEN: Tue Aug 13 01:31:17 2013
;; MSG SIZE  rcvd: 132

      12、利用子域解析網絡其他主機

 

1
2
3
4
5
[root@station144 named] # vim /etc/named.conf    在options(全局變量)中定義訪問網關地址即可。
         recursion  yes ;
         forward only;
         forwarders { 172.16.0.1; };        保存
[root@station144 named] # rndc reconfig   重新配置信息

 

注:這里如果解析www.magedu.com會通過172.16.18.20進行解析,說明在/etc/named.rfc1912.zones中定義的內容優先級別高。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@station144 named] # dig -t A www.google.com.hk      #解析谷歌進行測試
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t A www.google.com.hk
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 49163
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 4
;; QUESTION SECTION:
;www.google.com.hk.     IN  A
;; ANSWER SECTION:
www.google.com.hk.  300 IN  CNAME   www-wide.l.google.com.
www-wide.l.google.com.  300 IN  A   74.125.128.199
;; AUTHORITY SECTION:
google.com.     172800  IN  NS  ns2.google.com.
google.com.     172800  IN  NS  NS1.google.com.
google.com.     172800  IN  NS  ns3.google.com.
google.com.     172800  IN  NS  ns4.google.com.
;; ADDITIONAL SECTION:
ns2.google.com.     172800  IN  A   216.239.34.10
NS1.google.com.     345600  IN  A   216.239.32.10
ns3.google.com.     172800  IN  A   216.239.36.10
ns4.google.com.     172800  IN  A   216.239.38.10
;; Query  time : 1196 msec
;; SERVER: 172.16.251.144 #53(172.16.251.144)
;; WHEN: Tue Aug 13 01:44:40 2013
;; MSG SIZE  rcvd: 222

 

  反向子域授權方式

    反向區域子域授權方式和正向過程基本類似這里也不過多闡述,如有疑問請留言,筆者將以最大的努力幫看客們排憂解難。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM