基于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 ) 之間的轉(zhuǎn)化, 幾乎所有的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ā)展, 很多寬帶接入的用戶希望能夠?qū)ν馓峁¦WW 、電子郵件、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 , 后者內(nèi)
容如下:
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ā), 直接調(diào)用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)系郵件
是否支持泛域名解析轉(zhuǎn)發(fā)url
圖3是客戶端界面, 采用VB 開發(fā)
。
4 系統(tǒng)實現(xiàn)
名字服務器使用B IND , 版本是9. 2. 1。
更新代理程序發(fā)送域名更新消息給名字服務器, 涉及到解析DNS 消息, 一般有三種實現(xiàn)方法:①Shell 腳本:簡單易用, 開發(fā)速度快, 可以調(diào)用nslookup 工具來解析DNS 消息, 調(diào)用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