基于BIND的動態(tài)DNS服務系統(tǒng)的設計
工程技術武漢船舶職業(yè)技術學院學報 2008年第1期基于BIN D 的動態(tài)D NS 服務系統(tǒng)的設計吳 穎(武漢職業(yè)技術學院計算機系, )摘 要 動態(tài)域名實現(xiàn)固定域名到動態(tài)IP , , 對動態(tài)域名服務的

工程技術武漢船舶職業(yè)技術學院學報 2008年第1期
基于BIN D 的動態(tài)D NS 服務系統(tǒng)的設計
吳 穎
(武漢職業(yè)技術學院計算機系, )
摘 要 動態(tài)域名實現(xiàn)固定域名到動態(tài)IP , , 對動態(tài)域名服務的需求日益迫切。文章介紹了動態(tài)DNS , DNS 服務系統(tǒng)的設計方案, 詳細討論了其系統(tǒng)結構、關鍵詞 動態(tài)中圖分類號 文獻標志碼 A 文章編號 1671-8100(2008) 01-0021-05
DNS 是Internet 基石之一,DNS 負責在IP 地址(例如202. 205. 11. 11) 與域名(例如www. edu. cn ) 之間的轉化, 幾乎所有的Internet 的應用
客戶端軟件。本文對如何設計和構建動態(tài)域名服務系統(tǒng)進行了探討, 分析了相應的工作原理, 并給出了系統(tǒng)結構圖, 為此系統(tǒng)的進一步研究提供參考。
都使用DNS , 包括WWW 、電子郵件、F TP 、遠程終端等。DNS 的核心是名字服務器(name serv 2ers ) , 它維護了一個以層次化的域名為索引的分
1 DNS 相關協(xié)議分析
1. 1 DNS 消息格式[1,4]
DNS 操作是通過發(fā)送DNS 消息來實現(xiàn)的, DNS 消息一般通過UDP 協(xié)議傳送, 但也可以通
布式數(shù)據(jù)庫。
Internet 上的域名解析一般是靜態(tài)的, 即一
個域名所對應的IP 地址是靜態(tài)的, 長期不變的。也就是說, 如果要在Internet 上發(fā)布網(wǎng)站等各種信息服務, 一般需要有一個固定的IP 地址。
隨著互聯(lián)網(wǎng)寬帶接入的迅速普及發(fā)展, 很多寬帶接入的用戶希望能夠對外提供WWW 、電子郵件、F TP 等服務, 但是ISP 分配給一般用戶的是動態(tài)的IP 地址, 無法使網(wǎng)站的地址固定下來, 動態(tài)域名服務的出現(xiàn)解決了這個難題。
動態(tài)域名的功能, 就是實現(xiàn)固定域名到動態(tài)IP 地址之間的解析。用戶每次上網(wǎng)得到新的IP
過TCP 協(xié)議傳送。表1是標準DNS 消息格式, 在[RFC10354. 1]中定義。
表1 標準DNS 消息格式
Header Question Answer Aut hority Additional
首部字段
查詢名字服務器的問題
回答問題的資源記錄指向權威的資源記錄包括附加信息的資源記錄
首部字段(Header ) 說明剩余段信息, 以及消息類型是查詢、響應還是更新等, 圖1是首部字段的格式, 細節(jié)見[RFC1035]。
問題段(Question ) 中描述發(fā)給名字服務器的問題, 格式:查詢類型Q T YPE 查詢類QCL ASS 查詢域名QNAM E 。
地址之后, 安裝在用戶電腦里的動態(tài)域名客戶端軟件就會把這個IP 地址發(fā)送到動態(tài)域名解析服務器, 更新域名解析數(shù)據(jù)庫。Internet 上的其他人要訪問這個域名的時候, 動態(tài)域名解析服務器會返回正確的IP 地址給他。
動態(tài)域名服務系統(tǒng)的核心是支持[RFC2136][1]動態(tài)域名更新協(xié)議的域名服務器,
后面三個段都包括一個可能為空的連續(xù)資源記錄列表, 格式:域名 類型 類 T TL 資源數(shù)據(jù)長度 資源數(shù)據(jù)?;卮鸲?answer ) 包括回答
并提供一套服務管理程序, 此外, 一般還需要一個
收稿日期:2007-10-26作者簡介:吳 穎, 女, 講師, 主要從事計算機應用方面的教學和科研工作。
21
? 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
,

武漢船舶職業(yè)技術學院學報 2008年第1期
安全的可靠方法, TSIG 是“事務簽名”的簡寫, 它使用共享密鑰和單向散列函數(shù)來鑒別DNS 消息, 特別是響應和更新。
如果配置了TSIG , 名字服務器將在一個DNS 消息的附加數(shù)據(jù)部分添加一個TSIG 記錄,
對DNS 消息簽名, , 圖1 DNS 消息頭部格式
問題的資源記錄; 權威段(; 。1. 2 動態(tài)更新消息格式[2]
[DNS 的安
。
1. 4 DNS 名字服務器[4]
現(xiàn)在Internet 上流行的DNS 服務器有B IND ,Win2000DNS ,tinyDNS 等, 這些DNS 服
動態(tài)更新的DNS 消息格式在[RFC2036]中定義, 在標準DNS 格式上加入一些必須的擴展(例如, 更新比查詢操作需要更多預定義錯誤碼) , 字段定義也發(fā)生變化, 如表2所示。
表2 動態(tài)更新DNS 消息格式
Header Zone Prerequisite Update Additional
務器的最新版本都支持動態(tài)DNS 更新。其中, B IND 是Berkeley Internet Name Domain Service
的簡寫,Internet 上超過60的DNS 服務器使用B IND , 它是使用最廣泛的DNS 服務器, 現(xiàn)在由ISC 維護[5]。
B IND8版本大幅度改進了功能, 支持RFC2136中說明的動態(tài)域名更新機制、TSIG 等
首部字段指定要更新的區(qū)域前置條件
要添加或刪除的資源記錄RRs (資源記錄) 或RRset s (有著相同域名、類或類型的一組RR ) 附加數(shù)據(jù)段
高級功能, 附帶了一組常用工具以及完整的開發(fā)庫。B IND 支持各種主流操作系統(tǒng), 本文主要使用B IND9. 2. 1。
首部字段與表2的標準DNS 消息首部相比,
僅僅保留一個標志位Q R , 同時, 最后4項分別替換成ZOCOUN T 、PRCOUN T 、U PCOUN T 和ADCOUN T 。
前置條件字段Prerequisite 說明更新操作必須滿足的條件, 有Rrset Exist s (Value Independ 2ent ) 、RRset Exist s (Value dependent ) 、RRset Dose Not Exist 、Name Is In U se 、Name Is Not In U se 共5種條件類型。
Up date 字段是最主要的擴展, 它定義下面四種操作:
1) 添加一條資源記錄RR ; 2) 刪除一個RRSet ; 3) 刪除所有RRSet s ;
4) 從RRSet 中刪除一條資源記錄RR 。Zone 字段和Additional 字段的定義沒有變化。
1. 3 動態(tài)更新DNS 安全性22
[3]
2 系統(tǒng)體系結構與工作原理
圖2為系統(tǒng)結構圖, 系統(tǒng)的操作流程可以這樣描述:
①動態(tài)DNS 客戶撥號ISP (ADSL 、ISDN 等) ,ISP 給它動態(tài)分配一個合法的IP 地址;
②動態(tài)DNS 客戶通過運行在本機上的DDNS 客戶端程序, 向動態(tài)DNS 服務器的服務管
理程序報告自己IP 地址的變化;
③服務管理程序按照rfc2136指定格式給DNS 服務器發(fā)請求更新該用戶對應域名記錄的DNS 消息,DNS 服務器更新域名記錄, 將用戶的
域名指向新的IP 地址。
④Internet 上的用戶要通過域名訪問這個DDNS 客戶機上的WWW 、Ftp 等服務, 由動態(tài)DNS 服務器負責解析。
⑤現(xiàn)在Internet 上的用戶就得到了這個DDNS 客戶機的最新IP 地址, 可以用它來訪問其
在[FC2845]說明的TSIG 技術是保護DNS
? 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
,
基于BIND 的動態(tài)DNS 服務系統(tǒng)的設計 吳 穎
WWW 、Ftp 等服務

。
圖2 DDNS 服務系統(tǒng)結構
動態(tài)域名服務系統(tǒng)由服務端程序和客戶端
程序兩大部分組成, 服務端程序包括三個模塊:
①更新代理:負責發(fā)送動態(tài)更新DNS 消息到DNS 服務器, 請求更新域名資源記錄。
②監(jiān)控程序:作為service 運行, 負責和客戶端的通訊, 監(jiān)聽客戶端發(fā)來的更新請求, 驗證后傳遞給更新代理。
③系統(tǒng)管理:提供管理員Web 接口的管理界面, 完成域管理、用戶管理、日志維護、用戶配置管理等功能。
客戶端程序安裝在用戶電腦上, 當用戶每次上網(wǎng)得到新的IP 地址之后, 把這個IP 地址以及自己的登陸信息發(fā)送給服務端的監(jiān)控程序。
3 關鍵技術問題
3. 1 域名更新安全
和myddns -key. 157 11551. private , 后者內
容如下:
Private -key -format :v1. 2
Algorit hm :157(HMAC ) //HMAC -MD5算法
Key :9Dw2So YAD ==IND , , -up date 或up date -poli 2, 在B IND 配置文件中配置DNS 動態(tài)更新的片斷如下:
key myddns -key {algorit hm hmac -md5;
secret “9Dw2So YAD TIjxkgprABR2A ==”;
}; //t he TSIG key zone “mcwolf. com ”{type master ;
file “db. mcwolf. com ”;
update -policy {grantmyddns -key subdo 2main mcwolf. com ;};
//allow -up date {10.10. 3. 111;}; //local 2ho st ; etc.
};
測試TSIG 可以使用BIND 附帶的nsup 2date :
#nsup date –d –k myddns -key. 157 11551. p rivate
>update del b. mcwolf. com.
>update add b 100A b. mcwolf. com. >
最后一行為空表示確認更新命令。3. 2 客戶端-服務端通訊協(xié)議
動態(tài)域名更新的安全性主要采用TSIG 技
術, TSIG 使用的單向散列函數(shù)是MD5的變種HMAC -MD5, 和其它散列函數(shù)不同的是它使用密鑰。
在BIND 中提供了一個生成密鑰的工具dns 2sec -keygen
#dnssec -keygen -a hmac -md5-b 128-n HOST myddns
結果生成:myddns-key. 157 11551. key 客戶端和服務端的交互可以分三個步驟①客戶端發(fā)請求給服務端, 要求獲取一個加密密鑰, 服務端給出一個隨機生成的密鑰;
②客戶端用這個密鑰用MD5算法加密自己的密碼, 發(fā)域名更新的請求給服務端, 服務端提供相關服務, 請求有2種類型:
1) 聯(lián)機請求, 客戶端要求更新域名記錄指向現(xiàn)在的地址, 可以用客戶端檢測的IP 地址或者服務端自動檢測的IP 地址
23
? 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
,
武漢船舶職業(yè)技術學院學報 2008年第1期
2) 脫機請求, 客戶端斷開前要求將域名記錄
個資源記錄視為對象, 并提供設置和查詢每個對象屬性的方法, 大大簡化了開發(fā)。
我們選擇的方案是采用Perl 來開發(fā), 直接調用nsupdate 命令來實現(xiàn)域名的動態(tài)更新, 所有的DNS 消息都由nsupdate 來處理, 省略了負責的DNS 消息解析, 試驗證明, 。
, Apache 服務器上實MySQL , 最主要的表就是用戶信息表, 其主要字段見表3。
表3 用戶數(shù)據(jù)表結構
字段名
UserID Username Password Domain Registertime Last Updated CurIP email IsWild ForwardUrl
設置為空, 補充手段有兩種, 可以指向托管的服務
器, 另外如果是非正常脫機, 可以在規(guī)定的TIM EOU T
③服務端返回服務執(zhí)行的結果。具體實現(xiàn)通訊協(xié)議時, 有2種技術方案:
1) 從客戶端到服務器的直接TCP 連接客戶端發(fā)起請求, 建立一個直接的TCP 連接后, 服務端發(fā)給客戶端一個隨機Key , 下列格式發(fā)出請求
:) :2cls :IP
更新的是usrname. domain.
返回結果:0無效用戶登陸1更新成功(on 2line/offline ) 。
2) 在http 協(xié)議的基礎上傳輸信息, 這是客戶端比較容易支持的一種方式。
服務端發(fā)到客戶端的信息通過H TML meta 標簽傳遞
客戶端再使用Get 請求發(fā)送信息到服務端, 例如:up date. cgi ? user =“mc ”&password=5K84dVl G f3fjVklfjkf s55r65t bfr &domain=mc. domain &ip=10. 10. 3. 111&reqcls=0
返回結果:0無效用戶登陸1更新成功(on 2line/offline ) , 同樣是通過Meta 標簽傳遞給客戶端。
說明
用戶編號, 主鍵用戶名
密碼, 使用MD5加密用戶域名, 一般同用戶名注冊時間最后更新時間當前IP 地址用戶聯(lián)系郵件
是否支持泛域名解析轉發(fā)url
圖3是客戶端界面, 采用VB 開發(fā)

。
4 系統(tǒng)實現(xiàn)
名字服務器使用B IND , 版本是9. 2. 1。
更新代理程序發(fā)送域名更新消息給名字服務器, 涉及到解析DNS 消息, 一般有三種實現(xiàn)方法:①Shell 腳本:簡單易用, 開發(fā)速度快, 可以調用nslookup 工具來解析DNS 消息, 調用nsup 2date 工具來更新域名, 一般作為原型使用。
②C 編程:使用B IND 提供了解析器庫A PI 和名字服務器A PI 來支持DNS 編程, 功能最多, 性能最好, 但編程最復雜, 開發(fā)周期長。
③Perl , 一種折中的選擇是使用Perl , Mi 2chael Fuhr 編寫了一個Perl 模塊Net ::DNS , Net ::DNS將解析器、DNS 消息、DNS 消息的各24
? 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
圖3 客戶端界面
5 結束語
隨著寬帶接入的普及, 用戶更愿意利用現(xiàn)有的電腦資源, 在單位或家里管理或發(fā)布自己的電腦數(shù)據(jù)。特別是中國電信在大力推廣的“超級一線通”ADSL , 讓寬帶應用發(fā)展的速度更加迅猛, 據(jù)悉目前全國已經(jīng)超過百萬用戶。動態(tài)域名服務解決了客戶每次建立網(wǎng)絡連接時IP 地址變化的難題, 越來越受到人們的重視。
,
基于BIND 的動態(tài)DNS 服務系統(tǒng)的設計 吳 穎
本文給出了一個完整的基于B IND 的動態(tài)域名服務系統(tǒng)的設計, 首先分析了相關的Internet
協(xié)議, 然后描述系統(tǒng)的工作原理和體系結構, 接著詳細討論安全的域名更新以及客戶端服務端通訊協(xié)議設計這兩個關鍵技術問題, 最后介紹了系統(tǒng)實現(xiàn)的情況。
域名服務作為Internet 的基石, 伴隨著In 2ternet 應用的深入而深入, 動態(tài)域名服務就是域名服務的一種新的應用, 展望其發(fā)展, 得進一步深入研究的地方, 例如結合, 應用, ; 再者, 動態(tài)IP 管理, 所需要, 動態(tài)域名服務是IP 地址管理的一個重要部分, 要實現(xiàn)完整的IP 管理解決方案, 動態(tài)域名服務需要和IP 地址管理的其它部分緊密配合。
參 考 文 獻
1 P. Mockapetris et al. Domain Names -Implementation and
Specification[S].RFC1035,1987
2 P. Vixie et Name System
(U ) [et al. Key Aut hentication for DNS
(, Liu ,DNS &BIND , Fourt h Edition , O ’
reilly ,2001
5 William Wong. win2000DNS 服務指南[M ].清華大學出版
社,2002
Design of a Dynamic D NS Service System B ased on BIN D
WU Ying
(Depart ment of Comp uter ,Wuhan Instit ute of Technology , Wuhan 430074,China ) Abstract :Dynamic domain name service implement s t he parsing between fixed domain name and dynamic IP address , it is urgent to realize t he dynamic domain name service wit h t he pop ularization of ADSL and ot her broadband access technology. In t his paper , it first intro 2duces t he principle of dynamic domain name service , t hen , proposes a solution of Dynamic domain name service based on BIND , and gives a detailed description of it s system st ruct ure , key problems and solutions.
K ey w ords :dynamic DNS ;DNS ;BIND ; RFC2136
(責任編輯:譚銀元)
(上接第17頁)
de 2noising algorit hm is applied in noise processing. By Monte Carlo comp uter simulation , noise buried in EL F signal is dealt wit h wavelet de 2noising and t raditional digital filter. It s quality of bit error rate is analyzed. Simulatio n result s show t hat wavelet de 2noising can get better gain in SNR t han t raditional digital filter.
K ey w ords :extreme low f requency ; wavelet de 2noising ; digital filter ; bit error rate
(責任編輯:譚銀元)
25
? 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net