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