利用BIND9版本的View特性來設置域名的多匹配查詢

利用BIND9版本的View特性來設置域名的多匹配查詢

----------------------------------------------------------------------------------
(1) 配置BIND 9 DNS Views 的原理和需求
----------------------------------------------------------------------------------
DNS服務器最基本的任務就是響應域名的查詢,返回該域名的地址資料. 在DNS服務器中將一個
域名分成內部與外部做不同的View解析, 可以提升安全性,以及分類應付不同區域的查詢請求.
例如您的單位需要分成內部網和外部網,希望將同一個域名解析為不同的IP地址, 以提高安全
防護的目的, 或者應付不同業務的應用; 又比如您需要將業務按地域來劃分,打算在各個地區
分別設置各自的主機來處理訪問請求(或者單機雙線也適用),以圖解决中国南北網(电信/网通)
互不相通所導致的速度差异之问题,希望將電信用戶解釋到由電信網絡所提供的IP地址上, 而
網通用戶則解釋到由網通網絡所提供的IP地址上;

要實現將來自不同地域(用IP段來標識)的請求, 自動引導到不同區域的主機,可以采用域名的
多解釋方法來簡單實現. 在BIND9中有個新的view指令可以完成達到這個目的, 方法就是設置
多個view段落來響應同一個域名的查詢請求. 只需要在每個view段落的match-clients項目中,
設置所需匹配的客戶端IP段落, 并且在每個段落中都設置該域名的區域資料,但不同的view則
指向不同的區域文件, 然后在各自的區域文件中分別設置相應的區域內容,這樣就可以達到按
請求者的IP段落,來分別響應并提供不同的查詢結果了.

針對訪問者不同的IP段,來解釋主機域名的相應的IP地址, 也可以輕易實現負載均衡或者化解
地區局限. 舉個例子來說, 目前國內的網絡因為種種原因,同外部網絡的連線經常出現不穩定
的狀況,造成從大陸內部無法訪問外部,而外部也無法訪問內部,尤其是導致電郵收發異常緩慢
甚至丟失反彈,非常令人頭疼. 而且很多時候造成這種不穩定的因素, 還常常是源自于國家級
主干網絡的非技術性故障,這就很難從主機供應商方面尋求解決問題的方案. 如果要徹底解決
這個問題的話, 那么一個可能的方案就是按地域來劃分業務. 例如,分別在不同地區設置一臺
主機(假設在北京設置一臺主機,在廣州設置一臺主機,在香港設置另一臺主機),然后就可設法
將大陸內部北方的客戶引導到北京(網通)的主機, 將南方的客戶引導到廣州(電信)的主機,而
將海外的客戶則引導到香港的主機.

請注意: view指令是BIND 9的新功能, BIND 8以前的版本無此功能;
----------------------------------------------------------------------------------


----------------------------------------------------------------------------------
(2) 配置BIND 9 DNS Views 的實驗范例
----------------------------------------------------------------------------------
【實驗環境】

操作系统:        Debian 4.1;
BIND版本:        BIND 9.3.4;
DNS服务器:        192.168.0.8;
内部IP段:        192.168.0.0/24;
外部IP段:        除192.168.0.0/24之外的所有IP;
解釋域名:        mytest.com;

希望内部IP和本機IP(192.168.0.8)所解析到www.mytest.com的IP地址为1.1.1.1;
希望外部IP段(192.168.0.7和192.168.0.17)则解析到2.2.2.2;
希望其他IP段(我的測試IP是192.168.0.2)則解釋到3.3.3.3;


【BIND9的配置文件】

vi /etc/bind/named.conf;        #
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
include "/etc/bind/named.conf.options";

view "internal" {
        match-clients      { localhost; 192.168.0.8; };
        match-destinations { any; };
        recursion yes;
        allow-query     { localhost; 192.168.0.0/24; };
        allow-transfer  { 192.168.0.7; };
        include "/etc/bind/named.internal.zones";
        include "/etc/bind/named.conf.local";
};

view "external" {
        match-clients      { 192.168.0.7; 192.168.0.17; };
        match-destinations { any; };
        recursion yes;
        allow-query     { any; };
        allow-transfer  { 192.168.0.7; };
        include "/etc/bind/named.external.zones";
        include "/etc/bind/named.conf.local";
};

view "others" {
        match-clients      { any; };
        match-destinations { any; };
        recursion yes;
        allow-query     { any; };
        allow-transfer  { 192.168.0.7; };
        include "/etc/bind/named.others.zones";
        include "/etc/bind/named.conf.local";
};
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
請注意: 各個View指令的應用是按先后順序執行的,即是按首先符合的條件返回結果,例如本地
請求首先符合第一View指令, 則返回結果,不再檢查其他的View; 來自192.168.0.7的請求符合
第二個View指令, 則返回結果, 不再檢查后面的View; 所以,如果要在該View的match-clients
中設置任何條件(即any)的話, 就必須將這個View擺在最后面, 而絕不能放在其他View的前面.

vi /etc/bind/named.internal.zones;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
zone "." {
        type hint;
        file "/etc/bind/db.root";
};

zone "localhost" {
        type master;
        file "/etc/bind/db.local";
};

zone "127.in-addr.arpa" {
        type master;
        file "/etc/bind/db.127";
};

zone "0.in-addr.arpa" {
        type master;
        file "/etc/bind/db.0";
};

zone "255.in-addr.arpa" {
        type master;
        file "/etc/bind/db.255";
};

zone "mytest.com" IN {
        type master;
        file "/etc/bind/mytest.com.internal";
};
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

vi /etc/bind/named.external.zones;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
zone "." {
        type hint;
        file "/etc/bind/db.root";
};

zone "localhost" {
        type master;
        file "/etc/bind/db.local";
};

zone "127.in-addr.arpa" {
        type master;
        file "/etc/bind/db.127";
};

zone "0.in-addr.arpa" {
        type master;
        file "/etc/bind/db.0";
};

zone "255.in-addr.arpa" {
        type master;
        file "/etc/bind/db.255";
};

zone "mytest.com" IN {
        type master;
        file "/etc/bind/mytest.com.external";
};
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

vi /etc/bind/named.others.zones;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
zone "." {
        type hint;
        file "/etc/bind/db.root";
};

zone "localhost" {
        type master;
        file "/etc/bind/db.local";
};

zone "127.in-addr.arpa" {
        type master;
        file "/etc/bind/db.127";
};

zone "0.in-addr.arpa" {
        type master;
        file "/etc/bind/db.0";
};

zone "255.in-addr.arpa" {
        type master;
        file "/etc/bind/db.255";
};

zone "mytest.com" IN {
        type master;
        file "/etc/bind/mytest.com.others";
};
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


vi /etc/bind/mytest.com.internal;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
$TTL 4320       ; 1 hour 12 minutes
@       IN      SOA     ns.mytest.com.  root.ns.mytest.com.      (
                                2007101701      ;
                                3600            ;
                                1800            ;
                                36000           ;
                                3600 )          ;
        IN      NS      ns.mytest.com.
ns      IN      A       192.168.0.8
www     IN      A       1.1.1.1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

vi /etc/bind/mytest.com.external;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
$TTL 4320       ; 1 hour 12 minutes
@       IN      SOA     ns.mytest.com.  root.ns.mytest.com.      (
                                2007101701      ;
                                3600            ;
                                1800            ;
                                36000           ;
                                3600 )          ;
        IN      NS      ns.mytest.com.
ns      IN      A       192.168.0.8
www     IN      A       2.2.2.2
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

vi /etc/bind/mytest.com.others;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
$TTL 4320       ; 1 hour 12 minutes
@       IN      SOA     ns.mytest.com.  root.ns.mytest.com.      (
                                2007101701      ;
                                3600            ;
                                1800            ;
                                36000           ;
                                3600 )          ;
        IN      NS      ns.mytest.com.
ns      IN      A       192.168.0.8
www     IN      A       3.3.3.3
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


【測試與結果】

設置好後重啟BIND服務: /etc/init.d/bind9 restart;

如果一切設置正常的話,現在DNS服務器應該能分別針對不同IP地址的請求,來返回不同的主機
解釋了, 這里測試從192.168.0.2,192.168.0.7和192.168.0.8(本機)查詢結果是:

從192.168.0.2查詢(dig @191.168.0.2 www.mytest.com;)則返回3.3.3.3;
從192.168.0.7查詢(dig @191.168.0.7 www.mytest.com;)則返回2.2.2.2;
從192.168.0.8查詢(dig @191.168.0.8 www.mytest.com;)則返回1.1.1.1;

      
----------------------------------------------------------------------------------
(3) 配置BIND 9 DNS Views 的實作案例
----------------------------------------------------------------------------------
【實作環境】

操作系统:        Debian 4.1;
BIND版本:        BIND 9.3.4;
DNS服务器:        192.168.0.1;
内部IP段:        192.168.0.0/24;
外部IP段:        采用ADSL撥號上網,本次測試時的動態IP是210.209.111.254;
解釋域名:        子域名(hung.mooo.com**鳈C(www.hung.mooo.com);

假設我的域名現在需要針對來自四個不同區域的DNS查詢,分別返回不同的主機IP地址,我計劃
把DNS的配置文件分為如下四個View段落:

本機內網        internal                對應主機IP: 1.1.1.1
中國網通        chinanetcom                對應主機IP: 2.2.2.2
中國電信        chinatelecom                對應主機IP: 3.3.3.3
其他網絡        others                        對應主機IP: 4.4.4.4

因為我沒有可用的注冊域名,所以首先要在免費的DNS注冊機構申請一個子域名. 很快就找到了
一個可以提供免費DNS注冊的機構: freedns.afraid.org, 這個網站所提供的注冊服務比較多,
包括了免費的NS記錄(其他大部分免費注冊機構都不提供NS記錄的注冊).

因為我的測試主機是用撥號上網的, IP是動態地址, 所以下面的注冊資料只是臨時測試使用的.
在本次測試中,我先注冊了一個A記錄(ns-hung.mooo.com),并將這個A記錄指向我的撥號上網的
主機IP(210.209.111.254);  然后再注冊一個用來委派子域的NS記錄, 我將這個測試用的子域
命名為hung.mooo.com,顧名思義,注冊子域名的NS記錄,當然需要指定一個NS(名稱服務器)地址,
而且NS地址不能用動態IP地址,所以就用前面剛剛注冊的A記錄作為本子域的NS服務器地址.

注冊資料是立即生效的(效率不錯),看看注冊結果:

dig ns-hung.mooo.com @ns1.afraid.org;        #這是A記錄;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; <<>> DiG 9.3.4 <<>> ns-hung.mooo.com @ns1.afraid.org
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23072
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;ns-hung.mooo.com.              IN      A

;; ANSWER SECTION:
ns-hung.mooo.com.       3600    IN      A       210.209.111.254

;; AUTHORITY SECTION:
mooo.com.               86400   IN      NS      ns1.afraid.org.
mooo.com.               86400   IN      NS      ns2.afraid.org.
mooo.com.               86400   IN      NS      ns3.afraid.org.
mooo.com.               86400   IN      NS      ns4.afraid.org.

;; ADDITIONAL SECTION:
ns1.afraid.org.         1800    IN      A       67.19.72.206
ns2.afraid.org.         1800    IN      A       66.252.1.255
ns3.afraid.org.         1800    IN      A       72.20.25.134
ns4.afraid.org.         1800    IN      A       67.18.179.15

;; Query time: 205 msec
;; SERVER: 67.19.72.206#53(67.19.72.206)
;; WHEN: Sun Oct 21 17:45:50 2007
;; MSG SIZE  rcvd: 196
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

dig hung.mooo.com NS @ns1.afraid.org;        #這是NS記錄;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; <<>> DiG 9.3.2 <<>> hung.mooo.com NS @ns1.afraid.org
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45228
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;hung.mooo.com.                 IN      NS

;; AUTHORITY SECTION:
hung.mooo.com.          3600    IN      NS      ns-hung.mooo.com.

;; ADDITIONAL SECTION:
ns-hung.mooo.com.       3600    IN      A       210.209.111.254

;; Query time: 119 msec
;; SERVER: 67.19.72.206#53(67.19.72.206)
;; WHEN: Sun Oct 21 22:36:25 2007
;; MSG SIZE  rcvd: 69
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


【尋找測試IP】

注冊好子域的NS記錄之後,這個子域就被委派到我的撥號上網主機(即ns-hung.mooo.com),我用
免費的Vmware Server開設了一臺Linux機器,安裝的是Debian4.1版本,并且使用了預設的BIND9
來設置DNS服務器.

但是, 在主機上開始設置新子域(hung.mooo.com)之前, 還需要預先準備一些必不可少的資料,
也就是需要先尋找一些可用的IP段落, 用于在DNS的View中設置查詢的匹配條件. 而且當配置
完成之后還需要進行分布式的實驗測試, 但是因為環境條件所限制,我不可能操縱每個地區的
主機來真實地查詢測試一遍, 因此還必須利用DNS服務器的分布式特點來完成測試任務.

眾所周知, DNS服務器能夠完成遞歸查詢任務, 也就是替代客戶完成查詢結果. 事實上, 目前
絕大部分的ISP機構所提供的公用DNS服務器都是緩存服務器,也就是說它們自己本身沒有設置
域名的區域資料, 只是在客戶提出某個域名的查詢要求的時候,才會即時開始逐級查詢該域名
的注冊資料. 當最終獲得真正擁有這個域名的名稱服務器(NS)的主機地址之后(通常一個域名
都是指定了兩臺名稱服務器,有時稱它們為Master和Slave),再向這個名稱服務器的DNS服務器
發出該域名的查詢請求,然后才將所獲得的記錄緩存起來以供客戶下次查詢.

當使用命令行工具dig和nslookup來查詢某個域名的時候,都可以手工指定某個DNS服務器作為
請求查詢的對象(具體使用方法請參考后面的測試范例), 也就是說由指定的DNS服務器去執行
遞歸或替代查詢,這就等效于從該DNS服務器直接發出的查詢請求. 因此,我們只要針對IP段落
來尋找該段落中公用的DNS服務器,然后再指定用此服務器來進行查詢,那么就可以得出分布式
的測試結果了.

如前所述,這臺DNS服務器需要分為四個View段落, 每個段落分別處理不同的IP段落范圍的查詢
要求. 為了方便后面進行測試, 這里先選擇幾個公用的DNS服務器,然后再通過在線工具查找出
這幾個DNS服務器的IP所屬的段落. 我在網絡上隨機搜尋, 分別挑選了幾個DNS服務器, ping出
它們的IP地址, 然后再分別用在線的IP查詢工具找出它們所屬的網段區域和網絡公司. 這些IP
及其所查找到的地理位置資料如下:

#這是屬于網通網絡的DNS服務器,將會用于DNS的View中的chinanetcom匹配條件:
ns.163.net              202.108.255.201 202.108.0.0/16   網通            北京
ns1.ehttp.com.cn        218.57.8.171    218.56.0.0/14    網通       山東
fjxm.cncnet.net         218.104.128.70  218.104.128.0/20 網通       福建

#這是屬于電信網絡的DNS服務器,將會用于DNS的View中的chinatelecom匹配條件:
dns2.cs.hn.cn           202.103.96.112  202.103.96.0/23  電信       長沙
ns.chinanet.cn.net      202.97.7.6      202.97.0.0/19    電信       四川
dns3.xj163.cn           61.128.99.133   61.128.96.0/19   電信       新疆

#海外網絡的DNS服務器,因為DNS的View中的others匹配any條件,所以這些DNS只供測試時使用:
ns3.netvigator.com      218.102.23.228  218.102.0.0/15   NETVIGATOR 香港

為了更準確定位, 還可以使用了一些網上所提供的在線IP定位工具, 來查找上述IP的地區分布
信息. 但是, 考慮到在線工具的數據庫未必完全準確, 這里所提供的IP地址資料僅能供臨時的
測試用途, 讀者如果需要在實際應用中使用, 建議參考更權威更可靠的資料來源. 如下是我用
來在線查找和定位IP地址的工具:

http://www.arin.net/whois/
http://wq.apnic.net/apnic-bin/whois.pl
http://www.linkwan.com/gb/broadmeter/VisitorInfo/QureyIP.asp

根據上述查找出來的結果, 現在可以定出DNS的各個View段落中所對應的IP范圍了. 另外還要
請留意的是, 這里只為測試目的而列舉部分IP段落,當然在現實環境中實際應用的IP段落遠遠
不止這幾個段落. 為了方便整理和學習,我把這里的測試段落定義列表如下:

本機內網(internal)        { localhost; 192.168.0.0/24; };
中國網通(chinanetcom)        { 202.108.0.0/16; 218.56.0.0/14; 218.104.128.0/20; };
中國電信(chinatelecom)        { 202.103.96.0/23; 202.97.0.0/19; 61.128.96.0/19; };
其他網絡(others)        { any; };

      
【設定BIND配置文件】

定義好IP段落參數後,就可以開始設置BIND的配置文件了,為了簡化配置文檔,我將原文檔中的
默認的根域設置, 獨立設置一個文件, 命名為named.conf.root, 然后在每個view里面調用它
這樣就無需象以前的例子中那樣,要在每一個View段落中都放置一長串根域的定義了, 因此我
只需要在named.conf.root文件中定義一次根域就可以了. 基于同樣道理,也可以把關于BIND
的所有的options段落也放置在公共部分, 例如相關的allow-query和allow-transfer的設置,
請參考之前的范例, 這里不再贅述.

請注意: 如果在BIND中啟用了View的話, 那么全部區域(包括根域)都必須放置在View里面,而
不能在公共部分設置區域(否則BIND雖然會正常啟動,但日志中會出現相關警告信息).

如下是我的named.conf配置文檔的View段落的內容, 請參考:

vi /etc/bind/named.conf;        #這是BIND的配置文件(省略了部分內容);
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
...

view "internal" {
  match-clients      { localhost; 192.168.0.0/24; };
  include "/etc/bind/named.conf.root";
  zone "hung.mooo.com" IN {
    type master;
    file "/etc/bind/db.hung.mooo.com.internal";
  };
};

view "chinanetcom" {
  match-clients      { 202.108.0.0/16; 218.56.0.0/14; 218.104.128.0/20; };
  include "/etc/bind/named.conf.root";
  zone "hung.mooo.com" IN {
    type master;
    file "/etc/bind/db.hung.mooo.com.chinanetcom";
  };
};

view "chinatelecom" {
  match-clients      { 202.103.96.0/23; 202.97.0.0/19; 61.128.96.0/19; };
  include "/etc/bind/named.conf.root";
  zone "hung.mooo.com" IN {
    type master;
    file "/etc/bind/db.hung.mooo.com.chinatelecom";
  };
};

view "others" {
  match-clients      { any; };
  include "/etc/bind/named.conf.root";
  zone "hung.mooo.com" IN {
    type master;
    file "/etc/bind/db.hung.mooo.com.others";
  };
};
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

設置好DNS的配置文件后,接著就要建立子域的區域文件了. 從配置文件中可以看出, 這個子域
需要分別建立四個區域文件, 以提供四種匹配情況下的查詢結果. 這里因為測試目的, 只在該
子域下面添加了一項A記錄,域名為www.hung.mooo.com. 如前所述,我需要分別設置這四個區域
文件的內容, 以應用于各自的View段落的查詢要求. 為了方便觀察和測試, 我將要它們的對應
關系列表如下:

db.hung.mooo.com.internal        從 本機內網(internal)          查詢將返回IP:        1.1.1.1
db.hung.mooo.com.chinanetcom        從 中國網通(chinanetcom)  查詢將返回IP:        2.2.2.2       
db.hung.mooo.com.chinatelecom        從 中國電信(chinatelecom) 查詢將返回IP:        3.3.3.3
db.hung.mooo.com.others                從 其他網絡(others)          查詢將返回IP:        4.4.4.4

各個區域文件的詳細內容請分別參考如下:

vi /etc/bind/db.hung.mooo.com.internal;        #這是用于內網的區域文檔;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
$TTL 4320       ; 1 hour 12 minutes
@       IN      SOA     ns-hung.mooo.com. root.ns-hung.mooo.com.    (
                                2007102001      ;
                                3600            ;
                                1800            ;
                                36000           ;
                                600 )          ;
        IN      NS      ns-hung.mooo.com.
www.hung.mooo.com. IN   A  1.1.1.1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

vi /etc/bind/db.hung.mooo.com.chinanetcom;        #這是用于網通的區域文檔;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
$TTL 4320       ; 1 hour 12 minutes
@       IN      SOA     ns-hung.mooo.com. root.ns-hung.mooo.com.    (
                                2007102001      ;
                                3600            ;
                                1800            ;
                                36000           ;
                                600 )          ;
        IN      NS      ns-hung.mooo.com.
www.hung.mooo.com. IN  A  2.2.2.2
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

vi /etc/bind/db.hung.mooo.com.chinatelecom;        #這是用于電信的區域文檔;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
$TTL 4320       ; 1 hour 12 minutes
@       IN      SOA     ns-hung.mooo.com. root.ns-hung.mooo.com.    (
                                2007102001      ;
                                3600            ;
                                1800            ;
                                36000           ;
                                600 )          ;
        IN      NS      ns-hung.mooo.com.
www.hung.mooo.com. IN  A  3.3.3.3
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

vi /etc/bind/db.hung.mooo.com.others;                #這是用于海外的區域文檔;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
$TTL 4320       ; 1 hour 12 minutes
@       IN      SOA     ns-hung.mooo.com. root.ns-hung.mooo.com.    (
                                2007102001      ;
                                3600            ;
                                1800            ;
                                36000           ;
                                600 )          ;
        IN      NS      ns-hung.mooo.com.
www.hung.mooo.com. IN  A  4.4.4.4
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


【測試與結果】

全部配置文檔都設置好之後, 請重新啟動BIND9: /etc/init.d/bind9 restart;

然后用dig命令測試結果,這里的dig命令要帶上 @dns-server參數,用于指定從某臺DNS服務器
查詢, 也就是是分別用前面所查找到的DNS服務器來做測試. 下面列出的是我進行測試的部分
結果, 為了簡化版面, 有些測試結果省略了返回信息中的部分內容. 測試結果請參考如下:

dig www.hung.mooo.com @ns-hung.mooo.com;   #這是從本地查詢的結果(省略部分內容);
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
...
;; QUESTION SECTION:
;www.hung.mooo.com.             IN      A

;; ANSWER SECTION:
www.hung.mooo.com.      4320    IN      A       1.1.1.1

;; AUTHORITY SECTION:
hung.mooo.com.          4320    IN      NS      ns-hung.mooo.com.
...
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

dig www.hung.mooo.com @202.108.255.201;        #這是從網通來查詢的結果(省略部分內容);
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
...
;; ANSWER SECTION:
www.hung.mooo.com.      4203    IN      A       2.2.2.2

;; AUTHORITY SECTION:
hung.mooo.com.          4203    IN      NS      ns-hung.mooo.com.
...
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

dig www.hung.mooo.com @202.97.7.6;        #這是從電信網絡來查詢的結果(省略部分內容);
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
...
;; ANSWER SECTION:
www.hung.mooo.com.      4090    IN      A       3.3.3.3

;; AUTHORITY SECTION:
hung.mooo.com.          4090    IN      NS      ns-hung.mooo.com.
...
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

dig www.hung.mooo.com @ns3.netvigator.com;        #這是從香港的netvigator的查詢結果;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
...
;; ANSWER SECTION:
www.hung.mooo.com.      481     IN      A       4.4.4.4

;; AUTHORITY SECTION:
hung.mooo.com.          546     IN      NS      ns-hung.mooo.com.
...
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

請注意,由于有些DNS服務器可能會設置轉發查詢器(FORWARDERS),而轉發服務器的地址并未在
匹配地址中的話,查詢結果就會同預期不相同. 另外,因為我的測試子域名是在海外注冊的,而
國內部分網絡供應商的DNS不允許境外查詢. 若遇到這種情況的話,那么通過它們的DNS服務器
根本連我的主機A記錄(ns-hung.mooo.com)和子域的NS記錄(hung.mooo.com)都找不到,更不用
說查找該子域名下的域名記錄(www.hung.mooo.com)了.

      
建议转为简体的容易看一些。