蔣國明,黃文勝,柳曉佳
(浙江理工大學(xué) 信息化辦公室,浙江 杭州310018)
域名系統(tǒng)(Domain Name System,DNS)是互聯(lián)網(wǎng)的一項基本服務(wù)。它以分布式數(shù)據(jù)庫的方式完成域名和IP地址相互映射關(guān)系的定義,使得用戶能更方便地訪問互聯(lián)網(wǎng),DNS使用TCP和UDP 53端口提供域名解析服務(wù)。DNS系統(tǒng)中,常見的資源記錄類型主要有:
(1)主機記錄(A 記錄):在 RFC 1035 中定義,A 記錄是用于域名解析的重要記錄,它將某個特定的主機名映射到對應(yīng)主機的IPv4地址上。
(2)別名記錄(CNAME 記錄):在 RFC 1035中定義,CNAME記錄用于將某個別名指向某個A記錄上,如此就無需再為某個新的域名再創(chuàng)建一條新的A記錄。
(3)IPv6 主機記錄(AAAA 記錄):在 RFC 3596 中定義,與A記錄類似,用于將某個特定的主機名映射到對應(yīng)主機的IPv6地址上。
DNS系統(tǒng)可由各種DNS軟件實現(xiàn),例如BIND(Berkeley Internet Name Domain)就是一款使用比較廣泛的DNS開源軟件。DNS有兩種查詢方式:遞歸查詢和迭代查詢。DNS客戶端設(shè)置的DNS服務(wù)器一般采用遞歸查詢方式,它負責(zé)全權(quán)處理客戶端的DNS查詢請求,直到返回最終的解析結(jié)果。DNS服務(wù)器之間一般采用迭代查詢方式。
校園網(wǎng)建設(shè)中,很多高校DNS一般會采用兩種部署模式:
(1)權(quán)威DNS和遞歸DNS統(tǒng)一部署在同一臺DNS服務(wù)器上,該服務(wù)器既提供校內(nèi)本地域名的權(quán)威解析,又提供互聯(lián)網(wǎng)域名的遞歸解析報文轉(zhuǎn)發(fā)工作。
(2)權(quán)威DNS和遞歸DNS分別部署在兩臺DNS服務(wù)器上,一臺服務(wù)器提供校內(nèi)本地域名的權(quán)威解析,另一臺服務(wù)器提供互聯(lián)網(wǎng)域名的遞歸解析報文轉(zhuǎn)發(fā)工作。
這兩種DNS的架構(gòu)存在以下缺陷:
(1)DNS服務(wù)器存在單點故障和服務(wù)不穩(wěn)定問題。
(2)DNS服務(wù)器存在域名解析服務(wù)瓶頸。
(3)學(xué)校一般有多互聯(lián)網(wǎng)線路出口,DNS的架構(gòu)不合理將導(dǎo)致域名解析結(jié)果不是最優(yōu),用戶訪問網(wǎng)頁速度慢,出口網(wǎng)絡(luò)流量負載不均衡。
(4)當(dāng)校園的某個網(wǎng)絡(luò)出口出現(xiàn)故障時,某些用戶的域名解析服務(wù)可能會失敗。
(5)DNS一般部署在實體服務(wù)器上,不方便后期的系統(tǒng)配置遷移和快速部署。
針對上述現(xiàn)狀及問題,我校以私有云集群部署開源智能DNS,并配套建設(shè)互聯(lián)網(wǎng)Squid反向代理系統(tǒng),提供并實踐了一套相對完整的解決方案:
(1)校外用戶訪問學(xué)校網(wǎng)站。建設(shè)開源Freebsd Bind9多視圖(View)的DNS,并結(jié)合互聯(lián)網(wǎng)反向代理系統(tǒng),提供智能DNS解析和多站點的網(wǎng)站發(fā)布,通過DNS和反向代理的聯(lián)動,優(yōu)化了內(nèi)網(wǎng)用戶及學(xué)校網(wǎng)站的互聯(lián)網(wǎng)訪問速度。
(2)校內(nèi)用戶訪問互聯(lián)網(wǎng)網(wǎng)站。采用主備DNS,避免單點故障;采用多臺DNS集群轉(zhuǎn)發(fā)減輕域名解析的壓力,當(dāng)校內(nèi)某運營商線路出現(xiàn)故障時,可將DNS轉(zhuǎn)發(fā)請求切換到其他備用線路;通過智能DNS解析,引導(dǎo)校內(nèi)不同源IP網(wǎng)段用戶訪問互聯(lián)網(wǎng)網(wǎng)站時從電信、聯(lián)通、移動、教科網(wǎng)等鏈路合理分流,出口網(wǎng)絡(luò)流量實現(xiàn)負載均衡。同時一旦檢測到某運營商線路的DNS解析異常,可將該線路的域名解析切換到其他運營商的DNS服務(wù)器上。
(3)將權(quán)威和遞歸DNS在Vmware Esxi私有云上集群部署,提供系統(tǒng)冗余,提升服務(wù)能力,同時便于系統(tǒng)遷移、快速部署和后臺管理等。
該系統(tǒng)網(wǎng)絡(luò)部署拓撲如圖1所示。
圖1 基于私有云集群部署開源智能DNS網(wǎng)絡(luò)拓撲圖
在架構(gòu)上,用戶終端通過DHCP的方式統(tǒng)一自動設(shè)置兩個遞歸DNS服務(wù)器(一主一備),同時DNS服務(wù)器采用私有云集群部署來提高域名解析的服務(wù)能力,把DNS查詢請求由單臺服務(wù)器轉(zhuǎn)發(fā)給多臺DNS轉(zhuǎn)發(fā)器。
圖2是主DNS的系統(tǒng)架構(gòu)圖,DNS1是主DNS的發(fā)布IP,DNS5為主域權(quán)威服務(wù)器,本域的A記錄配置在該服務(wù)器上,其余為外域遞歸解析轉(zhuǎn)發(fā)服務(wù)器,均采用開源Freebsd Bind9多視圖的智能DNS解析機制做系統(tǒng)配置。
下面結(jié)合圖2簡要闡述該系統(tǒng)的工作過程:
圖2 基于私有云集群部署開源智能DNS架構(gòu)圖
(1)當(dāng)學(xué)校用戶訪問網(wǎng)站時,用戶把域名解析請求發(fā)送到DNS1,DNS1根據(jù)訪問者的源IP地址和事先設(shè)定的視圖轉(zhuǎn)發(fā)策略,把解析請求自動發(fā)送到對應(yīng)的DNS轉(zhuǎn)發(fā)服務(wù)器。比如假定用戶是聯(lián)通客戶,則DNS1收到用戶DNS請求后,會把請求自動轉(zhuǎn)發(fā)到聯(lián)通鏈路的DNS3轉(zhuǎn)發(fā)服務(wù)器,通過DNS3去遞歸解析域名并返回結(jié)果(下面繼續(xù)以該例子描述轉(zhuǎn)發(fā)過程)。
(2)DNS3轉(zhuǎn)發(fā)服務(wù)器收到域名解析請求后,若判定是請求本地域,則由DNS3轉(zhuǎn)發(fā)至權(quán)威DNS5中獲取A記錄并返回給用戶。
(3)若判定是非請求本地域,則將請求轉(zhuǎn)發(fā)到相應(yīng)View對應(yīng)的外網(wǎng)DNS(DNS-聯(lián)通),通過該服務(wù)器去遞歸解析域名并最終返回結(jié)果給用戶。
當(dāng)校外用戶訪問學(xué)校對外網(wǎng)站時,DNS服務(wù)器根據(jù)訪問者的源IP地址和事先設(shè)定的視圖轉(zhuǎn)發(fā)策略,智能返回訪問源IP所歸屬互聯(lián)網(wǎng)服務(wù)提供商(Internet Service Provider,ISP)的反向代理服務(wù)器地址給客戶端。反向代理服務(wù)器根據(jù)客戶端的請求,向內(nèi)網(wǎng)父服務(wù)器(Parent Server)轉(zhuǎn)發(fā)服務(wù)請求并獲取數(shù)據(jù)后返回給客戶端??蛻舳酥恢婪聪虼淼腎P地址,而不清楚在代理服務(wù)器后面的內(nèi)網(wǎng)父服務(wù)器的存在,這將有效增強網(wǎng)絡(luò)的安全性,相當(dāng)于在內(nèi)外網(wǎng)絡(luò)之間構(gòu)筑起一道保護內(nèi)部網(wǎng)絡(luò)安全的防火墻。代理服務(wù)器的防火墻功能將校園網(wǎng)內(nèi)的服務(wù)器/主機保護起來,有效降低校外用戶攻擊校園內(nèi)部網(wǎng)絡(luò)的幾率。
例如,校外用戶訪問一個學(xué)校的對外網(wǎng)站,通過DNS的輪詢技術(shù),我們將客戶端的請求分發(fā)給其中一臺Squid反向代理服務(wù)器處理。若該服務(wù)器已緩存了用戶的請求資源,則將請求的資源直接返回給用戶,否則該服務(wù)器將沒有緩存的請求根據(jù)已設(shè)定的規(guī)則發(fā)送給父服務(wù)器處理。
首先,在Freebsd Bind9的DNS配置中,實現(xiàn)DNS多視圖技術(shù)無需增加任何專用設(shè)備,只需通過對DNS配置進行深入優(yōu)化,主要配置思路如下:①在Bind9中,想根據(jù)不同請求的源IP段分別響應(yīng)并轉(zhuǎn)發(fā)至不同線路的DNS解析,可通過配置多view來響應(yīng)同一域名的智能解析請求。②在各個view的match-clients中,定義需匹配的客戶端源IP網(wǎng)段。為提高配置效率,引入訪問控制列表(Access Control Lists,ACL)函數(shù)實現(xiàn)集中定義,該函數(shù)可供全局引用。配置文件中的網(wǎng)絡(luò)地址以十進制點分法結(jié)合子網(wǎng)掩碼的格式定義,如某個B類IPv4地址定義為:x.x.0.0/16,在每個段落中配置該相應(yīng)的轉(zhuǎn)發(fā)DNS服務(wù)器IP。
圖2中,聯(lián)通客戶通過DNS1多view機制向DNS3轉(zhuǎn)發(fā)域名解析請求的相關(guān)配置代碼示例:
Squid反向代理“squid.conf”這個配置文件在“/user/local/squid/etc/”目錄下?;ヂ?lián)網(wǎng)用戶從客戶端發(fā)過來的解析請求,如果是請求本地域name1.*.edu.cn,則Squid向內(nèi)網(wǎng)父服務(wù)器IP地址a.b.c.d的某個TCP端口發(fā)送連接請求(訪問網(wǎng)站服務(wù)一般設(shè)置為TCP 80端口)。
同時設(shè)定不同域名轉(zhuǎn)發(fā)到不同的cache_peer上,如果不做該項配置,不同的域名請求可能被轉(zhuǎn)發(fā)到同一臺服務(wù)器/端口上。name=name1是給cache_peer設(shè)置一個別名,cache_peer_access name1 allow all為設(shè)置訪問權(quán)限,這里權(quán)限all為允許所有外部客戶端訪問name1。
配置代碼示例:
該系統(tǒng)經(jīng)過一段時間的測試和試運行,運行基本穩(wěn)定,用戶通過外網(wǎng)訪問校園網(wǎng)站的速度得到明顯提升,有效引導(dǎo)了內(nèi)網(wǎng)用戶網(wǎng)頁訪問量的合理分流,基本實現(xiàn)了不同運營商出口網(wǎng)絡(luò)流量的負載均衡,提升了學(xué)校互聯(lián)網(wǎng)出口帶寬的使用效益。
圖3為校內(nèi)DNS請求平衡轉(zhuǎn)發(fā)到電信、聯(lián)通線路時的聯(lián)通流量圖。圖4為校內(nèi)DNS請求僅轉(zhuǎn)發(fā)到電信單線路時的聯(lián)通流量圖。在實驗時,當(dāng)校內(nèi)用戶全部切換成電信單鏈路做DNS解析時,學(xué)校聯(lián)通出口的流量立馬下降約50%,實驗說明智能DNS服務(wù)器集群部署對出口流量的引導(dǎo)作用相當(dāng)顯著。
圖3 校內(nèi)DNS請求平衡轉(zhuǎn)發(fā)到電信、聯(lián)通線路時的聯(lián)通流量圖
圖4 校內(nèi)DNS請求僅轉(zhuǎn)發(fā)到電信單線路時的聯(lián)通流量圖
該系統(tǒng)自2014年正式上線運行以來,為全校近30000名師生提供不間斷的域名解析服務(wù),基本做到了“零故障”,且對出口流量的引導(dǎo)效果顯著。該系統(tǒng)按照私有云服務(wù)的架構(gòu)建設(shè),使用了10臺(2套,每套5臺)不同功能DNS虛擬服務(wù)器的集群部署,確保了每個功能的DNS服務(wù)器都雙機主備運行,相對更加安全可靠。本設(shè)計方案在不需要額外增加硬件成本的前提下,較好地解決了校內(nèi)網(wǎng)絡(luò)和校外網(wǎng)絡(luò)互相訪問的速度和流量平衡問題,對智慧校園的建設(shè)具有一定的實用價值。
該系統(tǒng)的架構(gòu)與創(chuàng)新性、智慧性主要體現(xiàn)在:
(1)增強了網(wǎng)絡(luò)安全性能。將學(xué)校權(quán)威和遞歸DNS服務(wù)器分布式部署,并在出口邊界路由器和權(quán)威DNS服務(wù)器上配置安全策略,有效提升了權(quán)威DNS數(shù)據(jù)的安全。
(2)提升了用戶使用體驗。校外訪問學(xué)校網(wǎng)站,采用DNS多視圖負載均衡的解析機制,根據(jù)訪問源的IP地址,將域名解析到學(xué)校架設(shè)在不同出口的反向代理服務(wù)器上,實現(xiàn)從不同ISP來的終端訪問我校應(yīng)用服務(wù)器時能實現(xiàn)快速訪問。
(3)優(yōu)化了出口流量分布。校內(nèi)訪問互聯(lián)網(wǎng)網(wǎng)站,采用DNS集群分布式轉(zhuǎn)發(fā)的解析機制,在不同出口上架設(shè)多個DNS代理解析服務(wù)器,通過對目標(biāo)網(wǎng)址的智能DNS解析,優(yōu)化學(xué)校各ISP出口流量的分布,從而優(yōu)化訪問互聯(lián)網(wǎng)的速度。
(4)有效解決了單點故障。一旦檢測到某運營商線路的DNS解析異常,可將該線路的域名解析切換到其他運營商的DNS服務(wù)器上,第一時間恢復(fù)網(wǎng)絡(luò)正常使用。
目前該系統(tǒng)的配置和維護為Linux命令行模式,不方便配置和管理,后續(xù)計劃在系統(tǒng)圖形化界面管理方面做有效提升,適時啟動DNS可視化配置界面的定制開發(fā)項目。