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