周德榮,夏 齡,舒 濤,田關偉 (四川民族學院網絡信息中心,四川 康定626001)
域名系統 (Domain Name System,DNS)是一項基礎性網絡服務,完成主機名與互聯網網絡地址之間的映射。幾乎所有的網間互聯軟件都在使用DNS,如電子郵件、遠程終端程序、文件傳輸程序及Web瀏覽器等。BIND(Berkeley Internet Name Domain)是互聯網軟件協會開發的開放源碼域名服務軟件,是DNS協議規范最好的實現軟件,互聯網上有超過90%的域名服務器使用它提供域名解析服務[1]。BIND軟件有BIND4、BIND8、BIND9、BIND10等4個版本,BIND4、BIND8已停止更新,BIND9是主流版本,BIND9的最新版為V9.8.0,BIND10為BIND的下一代版本,目前正處于開發測試階段。BIND作為DNS協議規范實現的典范,功能豐富,性能強大,安全性強。但BIND系統也存在不足:BIND的域名配置、域名記錄數據等都采用文本文件存儲[2],對域名的維護就是對文本文件的管理,域名的運行與維護處于手工操作,可維護性差,易出錯,效率低,管理和維護難度大,運維成本高,且對管理者在BIND方面的專業技能有一定要求;域名系統本身沒有域名記錄即時生效的管理制機和功能,域名變更每次都要人為手工進行處理;缺乏數據安全保障機制,沒有域名數據的備份與恢復功能;沒有域名實名注冊、認證功能,無法實現域名的實名注冊與備案;BIND 9中的視圖機制功能可用性差[3]等。針對BIND的不足,筆者以BIND 9.4.2為研究對象,采用.NET開發技術,使用B/S架構設計了域名管理系統。
在高校校園網實際應用環境中管理域名數量多、域名新增、修改、刪除等操作頻繁,但BIND軟件管理功能薄弱,BIND本身是開源軟件,運行于Linux環境下,提供廣泛二次開發的接口,使用設計基于BIND域名管理系統成為可能,設計時綜合考慮實現以下目標:①域名軟件BIND的高可用性管理功能。BIND軟件中域名數據一般采用文本文件進行存儲,要方便地進行域名數據的管理與維護,解決域名數據存儲方式是核心。基于關系數據庫的數據存儲是主流,Linux平臺主流數據庫平臺有sqlite、MySQL和ostgreSQL等,綜合考慮性能、安全、易用性等因素,選擇MySQL作為域名系統數據的存儲平臺[4]。②完善域名記錄的實時生效機制。域名記錄等相關信息存儲于數據庫中,通過BIND核心數據驅動直接讀取數據使其生效。③增加域名數據的本地、異地備份與恢復機制。對存儲在MySQL中的域名記錄,域名配置等數據進行備份、恢復處理。④域名管理系統應具有使用簡便、功能實用、效率高等特點。
系統由基于Linux的域名服務系統和基于Windows的域名管理系統2部分構成。基于Linux操作系統的域名服務系統,其操作系統采用RedHat RHEL 5,域名服務軟件使用BIND 9.4.2,域名數據存儲采用 MySQL 5.0.22。基于Windows的域名管理系統,操作系統采用 Windows Server 2003,以 MS SQL Server 2005作為后臺數據庫服務器,采用ASP.NET為主要開發工具,以IIS為系統的WWW運行環境,實現B/S結構的域名管理系統。前者向用戶提供域名服務,后者在前者基礎上實現域名管理。系統建立后運行結構如圖1所示。

圖1 軟件運行結構示意圖
基于系統設計思想和目標,BIND域名管理系統的功能示意圖見圖2。
1)域名系統的初始化 包括根記錄的導入、常規信息導入、表結構的初始化生成、MySQL中表的區文件表的生成等。

圖2 系統功能示意圖
2)機構管理 包括機構信息的添加、刪除、修改等功能。
3)部門管理 包括部門信息的添加、刪除、修改等功能。
4)用戶管理 包括用戶管理的添加、刪除、修改、密碼更改等功能。用戶按角色分為超級管理員、域名管理員、普通用戶,瀏覽者4類。超級管理員整個系統只有1個,系統默認設置為Admin,1個域名管理員只管理1個二級域名。普通用戶完成域名的申請,域名管理員進行審核。瀏覽者只有查詢當前域名使用情況。
5)權限管理 對每個實現管理功能文件進行權限編碼,為每個用戶實現要使用的功能定義為權限的集合。使用管理功能時采用權限判斷,有則成功,否則跳轉到指定頁面。
6)日志記管理 實現系統登陸日志和操作日志的管理。
1)管理域名設置 系統可以承擔多個域名管理,實現要管理域名的增加、刪除、修改、停止,明確指出管理的域名是否支持多視圖機制。
2)域名服務器管理 對管理域名對應DNS服務器IP、MySQL服務器地址、服務端口、數據庫名字等進行設置。系統支持管理多臺域名服務器。
3)域名區文件管理 設置DNS配置中區文件對應表名,如果當前域名支持多視圖機制,對域名區文件對應MySQL中的表名進行配置,如果不支持多視圖機制則設置時所有區文件指向1個表名即可。
4)視圖管理 對系統支持的視圖種類、名稱、IP地址圍范進行管理。
1)域名申請 用戶在現有域名基礎上申請一個子域名及NS記錄,然后自己建立對應的DNS服務器。可以申請暫停子域名。
2)域名審核 對申請域名合法性進行審核,合法則審核通過,否則不通過。
3)域名開通 根據審核結果,更新到Linux系統的MySQL的DNS數據庫,域名生效。
4)域名管理 添加域名記錄、刪除域名記錄、修改域名記錄、暫停域名服務等
5)泛域名申請 用戶在現有域名下申請一個自己的泛域名,如對scun.edu.cn這個域,網絡信息中心可以申請*.nic.scun.edu.cn指向210.41.112.101的泛域名記錄。申請泛域名由管理員審核批準后生效。
6)泛域名管理 泛域名記錄的管理只能是A記錄管理。管理泛域名的添加、刪除、修改、暫停、審核等。
1)數據庫文件備份 完成MySQL和MS SQL Server整個系統數據庫的備份,打包成一個文件。
2)數據庫文件恢復 從備份的數據庫文件恢復系統數據。
3)配置文件備份 完成Linux平臺BIND配置文件的備份。
4)配置文件恢復 從備份完成Linux平臺BIND配置文件的恢復。
根據系統功能需求,利用關系數據庫理論,設計域名管理系統的模型和數據庫對象,域名管理平臺MS SQL Server 2005中設計以下數據表:bd_branch機構信息表、bd_department部門信息表、bd_dnsserver域名服務器信息表、bd_domain管理域名信息表、bd_domaindatarrs域名記錄信息表、bd_loginlog登陸日志信息表、bd_operatelog操作日志信息表、bd_menuitem菜單項信息表、bd_menuclass菜單類別信息表、bd_viewconfig視圖配置信息表、bd_zonefileconfig區文件配置信息表、bd_sysusers用戶信息表。域名服務平臺MySQL中設計以下數據表:bd_zonefile正向區文件信息表、bd_ptrzonefile反向區文件信息表。
系統中涉及3個核心表:bd_domaindatarrs域名記錄信息表、bd_zonefile正向區文件信息表和bd_ptrzonefile反向區文件信息表。域名記錄信息表描述了域名ID、視圖ID、域名區文件ID、添加信息用戶ID、資源記錄類型、資源記錄的數據、記錄狀態等信息,正向、反向區文件信息表記錄了域名名字、生存時間、資源記錄類型、資源記錄的數據等信息。bd_domaindatarrs表中的信息根據業務要求更新到正、反向區文件信息表以供BIND服務使用。
該系統實現域名管理的關鍵是解決DNS中資源記錄數據的更新、新增區對應DNS配置文件更新及BIND服務自動啟動問題。資源記錄數據的變更,在域名管理平臺中將修改的內容更新到域名服務平臺下的MySQL數據庫,BIND數據驅動[5]直接查詢數據庫并將結果返回給用戶。對新增管理區問題,利用域名管理平臺將新增管理區等相關信息傳送并存儲到域名服務平臺下的MySQL數據庫,在Linux平臺下寫C語言數據更新程序定時檢查MySQL對應數據庫中的相關表的標志字段,根據實際情況修改BIND配置文件,生成區文件表,自動重新啟動BIND以加載新的區文件。核心數據流如圖3所示。
針開源域名服務軟件BIND在管理功能方面中不足,設計采用.NET技術,使用B/S架構設計基于BIND域名管理系統,系統由域名管理平臺和域名服務平臺組成。該系統具有易用、經濟、高效、可靠等特性,為企業、學校、電信營運商等提供了互聯網域名系統管理解決方案,具有一定參考價值。

圖3 核心數據流
[1]沈輝 .計算機網絡技術 [M].北京:人民郵電出版社,2006.
[2]Paul Albitz,Cricket Liu.DNS與BIND[M].第4版 .雷迎春,龔奕利 譯 .北京:中國電力出版社,2002.
[3]邱建波 .高校校園網雙出口環境下對DNS的智能改進 [J].微計算機應用,2008,29(8):26-29.
[4]Michael Kofler.MySQL 5權威指南 [M].第3版 .楊曉云,王建橋 等譯 .北京:人民郵電出版社,2006.
[5]周德榮,夏齡,郭慶義 .基于MySQL的BIND域名數據存儲技術研究與實現 [J].西南民族大學學報 (自然科學版),2011(2):312-316.