周德榮,夏 齡,舒 濤,田關(guān)偉 (四川民族學(xué)院網(wǎng)絡(luò)信息中心,四川 康定626001)
域名系統(tǒng) (Domain Name System,DNS)是一項(xiàng)基礎(chǔ)性網(wǎng)絡(luò)服務(wù),完成主機(jī)名與互聯(lián)網(wǎng)網(wǎng)絡(luò)地址之間的映射。幾乎所有的網(wǎng)間互聯(lián)軟件都在使用DNS,如電子郵件、遠(yuǎn)程終端程序、文件傳輸程序及Web瀏覽器等。BIND(Berkeley Internet Name Domain)是互聯(lián)網(wǎng)軟件協(xié)會(huì)開(kāi)發(fā)的開(kāi)放源碼域名服務(wù)軟件,是DNS協(xié)議規(guī)范最好的實(shí)現(xiàn)軟件,互聯(lián)網(wǎng)上有超過(guò)90%的域名服務(wù)器使用它提供域名解析服務(wù)[1]。BIND軟件有BIND4、BIND8、BIND9、BIND10等4個(gè)版本,BIND4、BIND8已停止更新,BIND9是主流版本,BIND9的最新版為V9.8.0,BIND10為BIND的下一代版本,目前正處于開(kāi)發(fā)測(cè)試階段。BIND作為DNS協(xié)議規(guī)范實(shí)現(xiàn)的典范,功能豐富,性能強(qiáng)大,安全性強(qiáng)。但BIND系統(tǒng)也存在不足:BIND的域名配置、域名記錄數(shù)據(jù)等都采用文本文件存儲(chǔ)[2],對(duì)域名的維護(hù)就是對(duì)文本文件的管理,域名的運(yùn)行與維護(hù)處于手工操作,可維護(hù)性差,易出錯(cuò),效率低,管理和維護(hù)難度大,運(yùn)維成本高,且對(duì)管理者在BIND方面的專業(yè)技能有一定要求;域名系統(tǒng)本身沒(méi)有域名記錄即時(shí)生效的管理制機(jī)和功能,域名變更每次都要人為手工進(jìn)行處理;缺乏數(shù)據(jù)安全保障機(jī)制,沒(méi)有域名數(shù)據(jù)的備份與恢復(fù)功能;沒(méi)有域名實(shí)名注冊(cè)、認(rèn)證功能,無(wú)法實(shí)現(xiàn)域名的實(shí)名注冊(cè)與備案;BIND 9中的視圖機(jī)制功能可用性差[3]等。針對(duì)BIND的不足,筆者以BIND 9.4.2為研究對(duì)象,采用.NET開(kāi)發(fā)技術(shù),使用B/S架構(gòu)設(shè)計(jì)了域名管理系統(tǒng)。
在高校校園網(wǎng)實(shí)際應(yīng)用環(huán)境中管理域名數(shù)量多、域名新增、修改、刪除等操作頻繁,但BIND軟件管理功能薄弱,BIND本身是開(kāi)源軟件,運(yùn)行于Linux環(huán)境下,提供廣泛二次開(kāi)發(fā)的接口,使用設(shè)計(jì)基于BIND域名管理系統(tǒng)成為可能,設(shè)計(jì)時(shí)綜合考慮實(shí)現(xiàn)以下目標(biāo):①域名軟件BIND的高可用性管理功能。BIND軟件中域名數(shù)據(jù)一般采用文本文件進(jìn)行存儲(chǔ),要方便地進(jìn)行域名數(shù)據(jù)的管理與維護(hù),解決域名數(shù)據(jù)存儲(chǔ)方式是核心?;陉P(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ)是主流,Linux平臺(tái)主流數(shù)據(jù)庫(kù)平臺(tái)有sqlite、MySQL和ostgreSQL等,綜合考慮性能、安全、易用性等因素,選擇MySQL作為域名系統(tǒng)數(shù)據(jù)的存儲(chǔ)平臺(tái)[4]。②完善域名記錄的實(shí)時(shí)生效機(jī)制。域名記錄等相關(guān)信息存儲(chǔ)于數(shù)據(jù)庫(kù)中,通過(guò)BIND核心數(shù)據(jù)驅(qū)動(dòng)直接讀取數(shù)據(jù)使其生效。③增加域名數(shù)據(jù)的本地、異地備份與恢復(fù)機(jī)制。對(duì)存儲(chǔ)在MySQL中的域名記錄,域名配置等數(shù)據(jù)進(jìn)行備份、恢復(fù)處理。④域名管理系統(tǒng)應(yīng)具有使用簡(jiǎn)便、功能實(shí)用、效率高等特點(diǎn)。
系統(tǒng)由基于Linux的域名服務(wù)系統(tǒng)和基于Windows的域名管理系統(tǒng)2部分構(gòu)成。基于Linux操作系統(tǒng)的域名服務(wù)系統(tǒng),其操作系統(tǒng)采用RedHat RHEL 5,域名服務(wù)軟件使用BIND 9.4.2,域名數(shù)據(jù)存儲(chǔ)采用 MySQL 5.0.22?;赪indows的域名管理系統(tǒng),操作系統(tǒng)采用 Windows Server 2003,以 MS SQL Server 2005作為后臺(tái)數(shù)據(jù)庫(kù)服務(wù)器,采用ASP.NET為主要開(kāi)發(fā)工具,以IIS為系統(tǒng)的WWW運(yùn)行環(huán)境,實(shí)現(xiàn)B/S結(jié)構(gòu)的域名管理系統(tǒng)。前者向用戶提供域名服務(wù),后者在前者基礎(chǔ)上實(shí)現(xiàn)域名管理。系統(tǒng)建立后運(yùn)行結(jié)構(gòu)如圖1所示。
圖1 軟件運(yùn)行結(jié)構(gòu)示意圖
基于系統(tǒng)設(shè)計(jì)思想和目標(biāo),BIND域名管理系統(tǒng)的功能示意圖見(jiàn)圖2。
1)域名系統(tǒng)的初始化 包括根記錄的導(dǎo)入、常規(guī)信息導(dǎo)入、表結(jié)構(gòu)的初始化生成、MySQL中表的區(qū)文件表的生成等。
圖2 系統(tǒng)功能示意圖
2)機(jī)構(gòu)管理 包括機(jī)構(gòu)信息的添加、刪除、修改等功能。
3)部門(mén)管理 包括部門(mén)信息的添加、刪除、修改等功能。
4)用戶管理 包括用戶管理的添加、刪除、修改、密碼更改等功能。用戶按角色分為超級(jí)管理員、域名管理員、普通用戶,瀏覽者4類。超級(jí)管理員整個(gè)系統(tǒng)只有1個(gè),系統(tǒng)默認(rèn)設(shè)置為Admin,1個(gè)域名管理員只管理1個(gè)二級(jí)域名。普通用戶完成域名的申請(qǐng),域名管理員進(jìn)行審核。瀏覽者只有查詢當(dāng)前域名使用情況。
5)權(quán)限管理 對(duì)每個(gè)實(shí)現(xiàn)管理功能文件進(jìn)行權(quán)限編碼,為每個(gè)用戶實(shí)現(xiàn)要使用的功能定義為權(quán)限的集合。使用管理功能時(shí)采用權(quán)限判斷,有則成功,否則跳轉(zhuǎn)到指定頁(yè)面。
6)日志記管理 實(shí)現(xiàn)系統(tǒng)登陸日志和操作日志的管理。
1)管理域名設(shè)置 系統(tǒng)可以承擔(dān)多個(gè)域名管理,實(shí)現(xiàn)要管理域名的增加、刪除、修改、停止,明確指出管理的域名是否支持多視圖機(jī)制。
2)域名服務(wù)器管理 對(duì)管理域名對(duì)應(yīng)DNS服務(wù)器IP、MySQL服務(wù)器地址、服務(wù)端口、數(shù)據(jù)庫(kù)名字等進(jìn)行設(shè)置。系統(tǒng)支持管理多臺(tái)域名服務(wù)器。
3)域名區(qū)文件管理 設(shè)置DNS配置中區(qū)文件對(duì)應(yīng)表名,如果當(dāng)前域名支持多視圖機(jī)制,對(duì)域名區(qū)文件對(duì)應(yīng)MySQL中的表名進(jìn)行配置,如果不支持多視圖機(jī)制則設(shè)置時(shí)所有區(qū)文件指向1個(gè)表名即可。
4)視圖管理 對(duì)系統(tǒng)支持的視圖種類、名稱、IP地址圍范進(jìn)行管理。
1)域名申請(qǐng) 用戶在現(xiàn)有域名基礎(chǔ)上申請(qǐng)一個(gè)子域名及NS記錄,然后自己建立對(duì)應(yīng)的DNS服務(wù)器。可以申請(qǐng)暫停子域名。
2)域名審核 對(duì)申請(qǐng)域名合法性進(jìn)行審核,合法則審核通過(guò),否則不通過(guò)。
3)域名開(kāi)通 根據(jù)審核結(jié)果,更新到Linux系統(tǒng)的MySQL的DNS數(shù)據(jù)庫(kù),域名生效。
4)域名管理 添加域名記錄、刪除域名記錄、修改域名記錄、暫停域名服務(wù)等
5)泛域名申請(qǐng) 用戶在現(xiàn)有域名下申請(qǐng)一個(gè)自己的泛域名,如對(duì)scun.edu.cn這個(gè)域,網(wǎng)絡(luò)信息中心可以申請(qǐng)*.nic.scun.edu.cn指向210.41.112.101的泛域名記錄。申請(qǐng)泛域名由管理員審核批準(zhǔn)后生效。
6)泛域名管理 泛域名記錄的管理只能是A記錄管理。管理泛域名的添加、刪除、修改、暫停、審核等。
1)數(shù)據(jù)庫(kù)文件備份 完成MySQL和MS SQL Server整個(gè)系統(tǒng)數(shù)據(jù)庫(kù)的備份,打包成一個(gè)文件。
2)數(shù)據(jù)庫(kù)文件恢復(fù) 從備份的數(shù)據(jù)庫(kù)文件恢復(fù)系統(tǒng)數(shù)據(jù)。
3)配置文件備份 完成Linux平臺(tái)BIND配置文件的備份。
4)配置文件恢復(fù) 從備份完成Linux平臺(tái)BIND配置文件的恢復(fù)。
根據(jù)系統(tǒng)功能需求,利用關(guān)系數(shù)據(jù)庫(kù)理論,設(shè)計(jì)域名管理系統(tǒng)的模型和數(shù)據(jù)庫(kù)對(duì)象,域名管理平臺(tái)MS SQL Server 2005中設(shè)計(jì)以下數(shù)據(jù)表:bd_branch機(jī)構(gòu)信息表、bd_department部門(mén)信息表、bd_dnsserver域名服務(wù)器信息表、bd_domain管理域名信息表、bd_domaindatarrs域名記錄信息表、bd_loginlog登陸日志信息表、bd_operatelog操作日志信息表、bd_menuitem菜單項(xiàng)信息表、bd_menuclass菜單類別信息表、bd_viewconfig視圖配置信息表、bd_zonefileconfig區(qū)文件配置信息表、bd_sysusers用戶信息表。域名服務(wù)平臺(tái)MySQL中設(shè)計(jì)以下數(shù)據(jù)表:bd_zonefile正向區(qū)文件信息表、bd_ptrzonefile反向區(qū)文件信息表。
系統(tǒng)中涉及3個(gè)核心表:bd_domaindatarrs域名記錄信息表、bd_zonefile正向區(qū)文件信息表和bd_ptrzonefile反向區(qū)文件信息表。域名記錄信息表描述了域名ID、視圖ID、域名區(qū)文件ID、添加信息用戶ID、資源記錄類型、資源記錄的數(shù)據(jù)、記錄狀態(tài)等信息,正向、反向區(qū)文件信息表記錄了域名名字、生存時(shí)間、資源記錄類型、資源記錄的數(shù)據(jù)等信息。bd_domaindatarrs表中的信息根據(jù)業(yè)務(wù)要求更新到正、反向區(qū)文件信息表以供BIND服務(wù)使用。
該系統(tǒng)實(shí)現(xiàn)域名管理的關(guān)鍵是解決DNS中資源記錄數(shù)據(jù)的更新、新增區(qū)對(duì)應(yīng)DNS配置文件更新及BIND服務(wù)自動(dòng)啟動(dòng)問(wèn)題。資源記錄數(shù)據(jù)的變更,在域名管理平臺(tái)中將修改的內(nèi)容更新到域名服務(wù)平臺(tái)下的MySQL數(shù)據(jù)庫(kù),BIND數(shù)據(jù)驅(qū)動(dòng)[5]直接查詢數(shù)據(jù)庫(kù)并將結(jié)果返回給用戶。對(duì)新增管理區(qū)問(wèn)題,利用域名管理平臺(tái)將新增管理區(qū)等相關(guān)信息傳送并存儲(chǔ)到域名服務(wù)平臺(tái)下的MySQL數(shù)據(jù)庫(kù),在Linux平臺(tái)下寫(xiě)C語(yǔ)言數(shù)據(jù)更新程序定時(shí)檢查MySQL對(duì)應(yīng)數(shù)據(jù)庫(kù)中的相關(guān)表的標(biāo)志字段,根據(jù)實(shí)際情況修改BIND配置文件,生成區(qū)文件表,自動(dòng)重新啟動(dòng)BIND以加載新的區(qū)文件。核心數(shù)據(jù)流如圖3所示。
針開(kāi)源域名服務(wù)軟件BIND在管理功能方面中不足,設(shè)計(jì)采用.NET技術(shù),使用B/S架構(gòu)設(shè)計(jì)基于BIND域名管理系統(tǒng),系統(tǒng)由域名管理平臺(tái)和域名服務(wù)平臺(tái)組成。該系統(tǒng)具有易用、經(jīng)濟(jì)、高效、可靠等特性,為企業(yè)、學(xué)校、電信營(yíng)運(yùn)商等提供了互聯(lián)網(wǎng)域名系統(tǒng)管理解決方案,具有一定參考價(jià)值。
圖3 核心數(shù)據(jù)流
[1]沈輝 .計(jì)算機(jī)網(wǎng)絡(luò)技術(shù) [M].北京:人民郵電出版社,2006.
[2]Paul Albitz,Cricket Liu.DNS與BIND[M].第4版 .雷迎春,龔奕利 譯 .北京:中國(guó)電力出版社,2002.
[3]邱建波 .高校校園網(wǎng)雙出口環(huán)境下對(duì)DNS的智能改進(jìn) [J].微計(jì)算機(jī)應(yīng)用,2008,29(8):26-29.
[4]Michael Kofler.MySQL 5權(quán)威指南 [M].第3版 .楊曉云,王建橋 等譯 .北京:人民郵電出版社,2006.
[5]周德榮,夏齡,郭慶義 .基于MySQL的BIND域名數(shù)據(jù)存儲(chǔ)技術(shù)研究與實(shí)現(xiàn) [J].西南民族大學(xué)學(xué)報(bào) (自然科學(xué)版),2011(2):312-316.