----------------------------------------------------------------------------------
(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; };
[
本帖最后由 chengkinhung 于 2007-11-1 11:43 编辑 ]