◆段立鴻 王奕婷 李 晗 劉三偉 張祥宇 楊 健
基于緩存快照的DNS容災(zāi)方法研究與實(shí)現(xiàn)
◆段立鴻 王奕婷 李 晗 劉三偉 張祥宇 楊 健
(中國(guó)移動(dòng)通信集團(tuán)河南有限公司 河南 450000)
DNS作為互聯(lián)網(wǎng)訪問(wèn)的關(guān)鍵設(shè)施,面臨較高的安全風(fēng)險(xiǎn),為了加強(qiáng)DNS防護(hù)能力,并使其具備相應(yīng)的快速恢復(fù)能力,利用DNS系統(tǒng)緩存快照功能,可以更好的保證互聯(lián)網(wǎng)訪問(wèn)的穩(wěn)定性,減少異常情況的故障時(shí)間。
DNS應(yīng)急備份技術(shù);DNS緩存快照
DNS是網(wǎng)絡(luò)應(yīng)用的基礎(chǔ)設(shè)施,它的安全性對(duì)于互聯(lián)網(wǎng)的安全有著舉足輕重的影響。目前互聯(lián)網(wǎng)域名解析深度依賴DNS根權(quán)威域名服務(wù)器和各頂級(jí)域權(quán)威服務(wù)器,一旦這些服務(wù)器出現(xiàn)故障,對(duì)互聯(lián)網(wǎng)訪問(wèn)的影響是災(zāi)難性的,將出現(xiàn)全網(wǎng)性、大規(guī)模用戶訪問(wèn)網(wǎng)站故障,給運(yùn)營(yíng)商造成極大壓力。
“1.21”全國(guó)網(wǎng)絡(luò)大癱瘓,對(duì)于中國(guó)互聯(lián)網(wǎng)可以說(shuō)始料未及。全國(guó)三分之二的DNS服務(wù)器處于癱瘓狀態(tài),致使國(guó)內(nèi)大量用戶無(wú)法訪問(wèn)以“.com”、“.net”等結(jié)尾的網(wǎng)站,包括騰訊、新浪、百度等多家全國(guó)頂級(jí)網(wǎng)站也未能逃過(guò)此劫。
(1)故障說(shuō)明:2014年1月21日下午15時(shí)左右,有消息稱某互聯(lián)網(wǎng)公司產(chǎn)品出現(xiàn)大范圍網(wǎng)絡(luò)故障,致使部分業(yè)務(wù)無(wú)法正常運(yùn)轉(zhuǎn)。當(dāng)用戶請(qǐng)求根服務(wù)器時(shí),被跳轉(zhuǎn)至一個(gè)錯(cuò)誤的IP地址。就此,某安全衛(wèi)士官微聲稱,經(jīng)測(cè)試發(fā)現(xiàn),很多網(wǎng)站被解析到了一個(gè)異常IP,而原因有可能是國(guó)際節(jié)點(diǎn)出現(xiàn)故障,造成國(guó)內(nèi)三分之二DNS處于癱瘓狀態(tài)。
(2)影響范圍:影響到運(yùn)營(yíng)商家庭寬帶、互聯(lián)網(wǎng)專線和手機(jī)用戶的互聯(lián)網(wǎng)訪問(wèn)。21日16點(diǎn),某省平均流量同比下降17.11%,18點(diǎn)后,流量逐步恢復(fù)正常水平。根據(jù)該省份相關(guān)數(shù)據(jù)分析,故障期間,受影響域名133989個(gè),意味著影響了用戶對(duì)13多萬(wàn)個(gè)網(wǎng)站的訪問(wèn)。
從該事件中看出,全球頂級(jí)域名服務(wù)器出現(xiàn)解析異常時(shí),運(yùn)營(yíng)商DNS系統(tǒng)運(yùn)行是正常的,但是由于無(wú)法通過(guò)頂級(jí)域名服務(wù)器獲得相應(yīng)域名的IP地址信息,從而也無(wú)法向用戶提供解析服務(wù),導(dǎo)致了用戶訪問(wèn)大量互聯(lián)網(wǎng)業(yè)務(wù)出現(xiàn)異常。此種現(xiàn)象的出現(xiàn)不止一次,2009年10月13日凌晨,瑞典國(guó)家頂級(jí)域名.SE的管理人員使用了錯(cuò)誤的配置腳本來(lái)更新.se的解析數(shù)據(jù),致使全球DNS系統(tǒng)不能正確解析.se下的90萬(wàn)個(gè)域名。
由此可見(jiàn),需要研究一種有效的DNS應(yīng)急備份技術(shù),能夠在這些重要權(quán)威服務(wù)器故障情況下保證運(yùn)營(yíng)商DNS在足夠長(zhǎng)一段時(shí)間內(nèi)為用戶提供互聯(lián)網(wǎng)上絕大部分域名解析,降低故障對(duì)用戶的影響。
緩存快照技術(shù)方案需要實(shí)現(xiàn)生成重點(diǎn)域名清單、對(duì)緩存內(nèi)容進(jìn)行快照和查詢以及實(shí)現(xiàn)緩存快照功能的一鍵啟用,本方案在現(xiàn)有DNS緩存系統(tǒng)上設(shè)計(jì)了三個(gè)關(guān)鍵的進(jìn)程(統(tǒng)計(jì)匯總進(jìn)程、緩存內(nèi)容查詢進(jìn)程、管理控制進(jìn)程)來(lái)實(shí)現(xiàn)以上能力,具體系統(tǒng)邏輯架構(gòu)如圖1。
圖1 系統(tǒng)邏輯架構(gòu)
(1)生成重點(diǎn)域名清單
從理論上來(lái)說(shuō),將整個(gè)緩存的內(nèi)存數(shù)據(jù)庫(kù)備份到硬盤,需要時(shí)再恢復(fù)回內(nèi)存,這在技術(shù)上是可行的,但是在工程實(shí)踐中代價(jià)過(guò)高。如果內(nèi)存數(shù)據(jù)庫(kù)中存在3000萬(wàn)域名資源記錄,大約20~30G的內(nèi)存空間,完整的備份到硬盤或從硬盤恢復(fù)到內(nèi)存需要花費(fèi)太長(zhǎng)的時(shí)間,在系統(tǒng)故障時(shí)無(wú)法滿足快速恢復(fù)的時(shí)限要求。因此在實(shí)際使用中只對(duì)重點(diǎn)域名進(jìn)行緩存快照,保證故障情況下的快速恢復(fù),同時(shí)也保證緩存快照能夠覆蓋絕大多數(shù)用戶的正常訪問(wèn)要求。
重點(diǎn)域名采用訪問(wèn)次數(shù)來(lái)衡量,將訪問(wèn)次數(shù)最多的域名作為重點(diǎn)域名。當(dāng)用戶進(jìn)行DNS查詢時(shí),緩存系統(tǒng)實(shí)時(shí)統(tǒng)計(jì)域名訪問(wèn)計(jì)數(shù),然后將域名訪問(wèn)計(jì)數(shù)信息實(shí)時(shí)上報(bào)給后臺(tái)統(tǒng)計(jì)程序。后臺(tái)程序會(huì)自動(dòng)累加域名計(jì)數(shù),匯總出重點(diǎn)域名,并將重點(diǎn)域名列表保存到數(shù)據(jù)庫(kù)。
(2)對(duì)重點(diǎn)域名的緩存快照與查詢
每天定時(shí)會(huì)啟動(dòng)緩存快照程序,該程序從數(shù)據(jù)庫(kù)中取出前面匯總程序的統(tǒng)計(jì)結(jié)果獲取重點(diǎn)域名列表,然后按照域名查詢緩存,獲取每個(gè)重點(diǎn)域名緩存內(nèi)容后,將重點(diǎn)域名的正常解析結(jié)果保持到另外一個(gè)數(shù)據(jù)庫(kù)(稱為緩存快照)。
緩存快照進(jìn)程通過(guò)緩存接口獲取的緩存內(nèi)容是二進(jìn)制的DNS報(bào)文格式,該格式按照RFC規(guī)范約定書(shū)寫(xiě)。緩存快照進(jìn)程會(huì)進(jìn)行二進(jìn)制格式解碼,并將解碼后數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)中的解碼數(shù)據(jù)通過(guò)web界面呈現(xiàn)給管理員。
目前的DNS緩存系統(tǒng)中,緩存數(shù)據(jù)是存儲(chǔ)在內(nèi)存數(shù)據(jù)庫(kù)中,該內(nèi)存數(shù)據(jù)庫(kù)可以根據(jù)域名快速檢索數(shù)據(jù)(檢索速度非常快,微秒級(jí)別),因此緩存快照程序生成快照的過(guò)程是高效的。
(3)緩存快照功能的一鍵啟用
啟用緩存快照命令下達(dá)到管理控制進(jìn)程,該進(jìn)程從數(shù)據(jù)庫(kù)中取出緩存快照內(nèi)容,然后通過(guò)緩存內(nèi)容下發(fā)接口將緩存快照寫(xiě)入緩存中。
緩存快照寫(xiě)入時(shí)進(jìn)行了特殊的標(biāo)記,對(duì)緩存快照域名進(jìn)行了鎖定,因此在緩存快照啟動(dòng)期間,所有在緩存快照中的域名都將使用緩存快照內(nèi)容應(yīng)答用戶,不再受遞歸結(jié)果影響。
(1)緩存快照備份與查詢:通過(guò)重點(diǎn)域名緩存快照功能來(lái)實(shí)現(xiàn)此種故障狀態(tài)下的容錯(cuò)。緩存系統(tǒng)每天定期保存緩存中重要域名的正常解析結(jié)果(稱為緩存快照),以某運(yùn)營(yíng)商現(xiàn)有網(wǎng)數(shù)據(jù)為例,一天DNS訪問(wèn)量約90億次,其中排名前10萬(wàn)的域名時(shí)訪問(wèn)量約為89.4億次,也就是說(shuō)只要緩存快照中恢復(fù)了前10萬(wàn)個(gè)重點(diǎn)域名,則99.2%的用戶訪問(wèn)將不受影響。
(2)緩存快照啟用:如果發(fā)生大面積域名解析內(nèi)容錯(cuò)誤時(shí),管理員可以通過(guò)管理界面選擇“啟用緩存快照”,可以選擇一個(gè)緩存快照(系統(tǒng)每天生成一個(gè)重點(diǎn)域名緩存快照,一般保留最近7天緩存快照),此時(shí)所有在緩存快照中的域名都將使用緩存快照內(nèi)容應(yīng)答用戶,不受頂級(jí)DNS服務(wù)器故障或無(wú)法通信導(dǎo)致的影響。
(3)實(shí)施創(chuàng)新方案后的流程變化(圖2)。
①故障時(shí)的業(yè)務(wù)訪問(wèn)簡(jiǎn)化流程
第一步:用戶向運(yùn)營(yíng)商DNS發(fā)起解析請(qǐng)求;
第二步:運(yùn)營(yíng)商DNS進(jìn)行遞歸查詢,向上級(jí)DNS逐級(jí)進(jìn)行解析訪問(wèn),獲取域名的解析IP;
第三步:運(yùn)營(yíng)商DNS向用戶返回解析結(jié)果。
②啟用緩存快照的業(yè)務(wù)訪問(wèn)流程
第一步:用戶向運(yùn)營(yíng)商DNS發(fā)起解析請(qǐng)求;
第二步:運(yùn)營(yíng)商DNS向用戶返回緩存快照結(jié)果。
圖2 實(shí)施創(chuàng)新方案后的流程變化
縮短故障歷時(shí):2.5小時(shí)→15分鐘,縮短99%。
在根DNS及頂級(jí)域DNS故障后,相關(guān)各級(jí)DNS均需刷新緩存逐級(jí)恢復(fù),有些域名的緩存刷新速率較差,有些長(zhǎng)達(dá)數(shù)天時(shí)間,因此普遍故障歷時(shí)較長(zhǎng)。由于本方案設(shè)備所需處置時(shí)間不足1分鐘,考慮維護(hù)人員收到接收并分析判斷故障的時(shí)間,總體故障恢復(fù)時(shí)間可控制在15分鐘內(nèi)。對(duì)比1月21日故障歷時(shí)2.5小時(shí)以上,此方案可縮短99%的故障歷時(shí)。
該技術(shù)的提出和部署,能夠在頂級(jí)DNS服務(wù)器故障以及本省DNS無(wú)法遞歸時(shí),利用緩存快照的緩存內(nèi)容,向用戶提供解析服務(wù),從而保障用戶訪問(wèn)互聯(lián)網(wǎng)業(yè)務(wù)的正常。
[1]孔政,姜秀柱.DNS欺騙原理及其防御方法[J].計(jì)算機(jī)工程,2010.
[2]董新科,邢雨,高維銀.DNS網(wǎng)絡(luò)安全系統(tǒng)分析與設(shè)計(jì)[J].計(jì)算機(jī)安全,2010.
[3]李基,楊義先.DNS安全問(wèn)題及解決方案[M].北京:北京郵電大學(xué)信息安全中心,2005.
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2018年10期