專利名稱:一種域名系統(tǒng)dns解析方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及移動(dòng)通訊領(lǐng)域,特別是涉及一種域名系統(tǒng)(Domain Name System,簡稱為DNS)解析方法及裝置。
背景技術(shù):
在計(jì)算機(jī)通信網(wǎng)絡(luò)中,域名(Domain Name,簡稱為DN)(形如www. baidu. com)與網(wǎng)絡(luò)協(xié)議(Internet Protocol,簡稱為IP)地址(形如61. 135. 169. 105)之間存在一對一或者多對一的映射關(guān)系。用戶通常使用便于記憶的域名訪問網(wǎng)絡(luò)上的計(jì)算機(jī),但計(jì)算機(jī)間卻必須使用IP地址進(jìn)行數(shù)據(jù)通信。因此,通信網(wǎng)絡(luò)中需要存在為用戶提供域名到IP地址轉(zhuǎn)換的服務(wù)系統(tǒng),該服務(wù)系統(tǒng)稱為域名解析系統(tǒng)或DNS。為用戶提供這種轉(zhuǎn)換服務(wù)的主機(jī),稱為DNS服務(wù)器。域名到IP地址的轉(zhuǎn)換過程,稱為DNS解析或地址解析。以用戶通過因特網(wǎng)(Internet)訪問百度(www. baidu. com)為例當(dāng)操作系統(tǒng)收到用戶的瀏覽請求后,首先向DNS服務(wù)器發(fā)送查詢報(bào)文,詢問棚.baidu. com所對應(yīng)的IP地址。當(dāng)操作系統(tǒng)收到DNS服務(wù)器的應(yīng)答包后,先解析出誦.baidu. com所對應(yīng)的IP地址, 再與這個(gè)IP地址進(jìn)行網(wǎng)絡(luò)通信,用戶方可正常訪問百度網(wǎng)站了。大型企業(yè)在部署其內(nèi)部網(wǎng)絡(luò)時(shí),為保證網(wǎng)絡(luò)的易用性和易維護(hù)性,通常采用域名系統(tǒng)來部署服務(wù)器。用戶指定網(wǎng)絡(luò)上的某臺(tái)主機(jī)作為DNS服務(wù)器,通過DNS服務(wù)器進(jìn)行DNS 解析,而不是直接在本機(jī)進(jìn)行解析。但在某些特殊情況下,遠(yuǎn)程DNS服務(wù)器提供的解析服務(wù)可能無法滿足用戶需求,這些情況包括1、用戶需要將域名解析為某個(gè)特定地址,而DNS服務(wù)器無法正確進(jìn)行這種解析;2、用戶沒有指定DNS服務(wù)器,又必須進(jìn)行DNS解析;3、用戶需要解析的域名地址,沒有在DNS服務(wù)器上登記;4、其它一些特殊情況。因此,用戶需要一種能夠在本地進(jìn)行DNS解析的技術(shù),在上述特殊情況下進(jìn)行DNS地址解析。在現(xiàn)有技術(shù)中,主流操作系統(tǒng)均內(nèi)置有本地DNS解析的解決方案。圖1是現(xiàn)有技術(shù)中操作系統(tǒng)內(nèi)置配置文件的本地DNS解析處理流程圖,如圖1所示,這種方案通常是在操作系統(tǒng)中內(nèi)置一個(gè)域名到IP地址對應(yīng)關(guān)系列表的配置文件。當(dāng)操作系統(tǒng)需要對某個(gè)域名進(jìn)行DNS解析時(shí),首先在此配置文件中檢索該域名,如檢索成功,則直接將該域名對應(yīng)的IP 地址作為DNS解析結(jié)果返回;如檢索失敗,再向DNS服務(wù)器發(fā)送DNS解析請求。此外,用戶還可以手動(dòng)或程序修改該配置文件,將自定義的域名-IP地址對應(yīng)關(guān)系寫入該文件,實(shí)現(xiàn)對特定域名的本地DNS解析。在Windows操作系統(tǒng)中,該域名到IP地址對應(yīng)關(guān)系配置文件為\windows\system32\drivers\etc目錄下的hosts文件。但是,上述技術(shù)方案由于域名到IP地址對應(yīng)關(guān)系配置文件為系統(tǒng)核心文件,因此在安全性要求較高的系統(tǒng)中,通常禁止修改此文件;此外修改該配置文件通常會(huì)觸發(fā)防病毒軟件,造成修改失敗;用戶只能明確指定域名到IP地址對應(yīng)關(guān)系,而不能定義復(fù)雜的本地DNS解析策略。例如,“除news. sina. com外的所有sina. com 二級域名(形如*· sina. com)均解析為127. 0. 0. 1”這樣的解析策略,是無法通過修改配置文件實(shí)現(xiàn)的;并且,由于修改配置文件屬于文件操作,因此高頻次的動(dòng)態(tài)修改此文件,會(huì)影響系統(tǒng)性能。
在現(xiàn)有技術(shù)中,還可以通過在本地安裝DNS服務(wù)器,實(shí)現(xiàn)本機(jī)DNS解析。在此技術(shù)方案中,圖2是現(xiàn)有技術(shù)中本地安裝DNS服務(wù)器的本地DNS解析處理流程圖,如圖2所示, 用戶首先在本地安裝DNS服務(wù)器,并將自定義的DNS解析規(guī)則寫入服務(wù)器配置文件,最后將本機(jī)主DNS服務(wù)器地址設(shè)置為本機(jī)地址。這樣,當(dāng)本機(jī)需要進(jìn)行DNS解析時(shí),會(huì)首先通過本地DNS服務(wù)器進(jìn)行地址解析。如本機(jī)DNS解析失敗,操作系統(tǒng)會(huì)繼續(xù)向后續(xù)DNS服務(wù)器發(fā)送DNS解析請求。上述技術(shù)方案的缺點(diǎn)如下用戶需要在本地安裝DNS服務(wù)器軟件,并對其進(jìn)行配置;如本機(jī)已經(jīng)安裝了 DNS服務(wù)器,則無法采用此種技術(shù)方案;若本機(jī)DNS解析失敗,操作系統(tǒng)必須在收到本機(jī)DNS服務(wù)器回應(yīng)包后,才會(huì)進(jìn)行后繼DNS解析操作,從而延長了 DNS解析的時(shí)間;不能定義復(fù)雜的本地DNS解析策略。
發(fā)明內(nèi)容
本發(fā)明提供一種DNS解析方法及裝置,以解決現(xiàn)有技術(shù)中本地DNS解析時(shí)間長,且不能夠定義復(fù)雜的本地DNS解析策略的問題。本發(fā)明提供一種DNS解析方法,包括網(wǎng)絡(luò)數(shù)據(jù)過濾模塊對本機(jī)DNS解析請求包進(jìn)行過濾,將符合預(yù)先設(shè)置的本地DNS 解析策略的本機(jī)DNS解析請求包轉(zhuǎn)發(fā)到本機(jī)DNS解析模塊,將不符合本地DNS解析策略的本機(jī)DNS解析請求包轉(zhuǎn)發(fā)到操作系統(tǒng)底層模塊;本機(jī)DNS解析模塊對接收的本機(jī)DNS解析請求包進(jìn)行解析,獲取解析結(jié)果,并將解析結(jié)果攜帶在本機(jī)DNS解析應(yīng)答包中發(fā)送給操作系統(tǒng)底層模塊。本發(fā)明還提供了一種DNS解析裝置,包括網(wǎng)絡(luò)數(shù)據(jù)過濾模塊,用于對本機(jī)DNS解析請求包進(jìn)行過濾,將符合預(yù)先設(shè)置的本地DNS解析策略的本機(jī)DNS解析請求包轉(zhuǎn)發(fā)到本機(jī)DNS解析模塊,將不符合本地DNS解析策略的本機(jī)DNS解析請求包轉(zhuǎn)發(fā)到操作系統(tǒng)底層模塊;本機(jī)DNS解析模塊,用于對接收的本機(jī)DNS解析請求包進(jìn)行解析,獲取解析結(jié)果, 并將解析結(jié)果攜帶在本機(jī)DNS解析應(yīng)答包中發(fā)送給操作系統(tǒng)底層模塊。本發(fā)明有益效果如下通過網(wǎng)絡(luò)數(shù)據(jù)過濾模塊過濾本機(jī)DNS解析請求包,將符合本機(jī)DNS解析策略的請求數(shù)據(jù)轉(zhuǎn)發(fā)到本機(jī)DNS解析模塊進(jìn)行處理,解決了現(xiàn)有技術(shù)中本地DNS解析時(shí)間長,且不能夠定義復(fù)雜的本地DNS解析策略的問題,本發(fā)明實(shí)施例由于使用網(wǎng)絡(luò)數(shù)據(jù)過濾模塊對DNS 請求數(shù)據(jù)進(jìn)行過濾,因此能夠?qū)崿F(xiàn)復(fù)雜的DNS解析策略;由于網(wǎng)絡(luò)數(shù)據(jù)過濾模塊可直接轉(zhuǎn)發(fā)不符合本機(jī)DNS解析策略的數(shù)據(jù)包,因此可提高DNS解析速度;由于網(wǎng)絡(luò)數(shù)據(jù)過濾模塊無需監(jiān)聽端口,因此與本機(jī)已安裝的DNS服務(wù)器軟件不會(huì)存在沖突;此外,無需修改域名到IP 地址對應(yīng)關(guān)系配置文件,不會(huì)觸發(fā)防病毒軟件動(dòng)作,并可提高本地DNS解析的執(zhí)行效率。
圖1是現(xiàn)有技術(shù)中操作系統(tǒng)內(nèi)置配置文件的本地DNS解析處理流程圖;圖2是現(xiàn)有技術(shù)中本地安裝DNS服務(wù)器的本地DNS解析處理流程圖;圖3是本發(fā)明實(shí)施例的DNS解析方法的流程5
圖4是本發(fā)明實(shí)施例的DNS解析方法的詳細(xì)處理流程圖;圖5是本發(fā)明實(shí)施例的DNS解析策略配置更新的流程圖;圖6是本發(fā)明實(shí)施例的DNS解析裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了解決現(xiàn)有技術(shù)中本地DNS解析時(shí)間長,且不能夠定義復(fù)雜的本地DNS解析策略的問題,本發(fā)明提供了一種DNS解析方法及裝置,即,在企業(yè)內(nèi)部網(wǎng)絡(luò)中實(shí)現(xiàn)本機(jī)DNS解析的技術(shù)方案。該技術(shù)方案通過網(wǎng)絡(luò)數(shù)據(jù)過濾模塊過濾本機(jī)DNS解析請求包,將符合本機(jī) DNS解析策略的請求數(shù)據(jù)轉(zhuǎn)發(fā)到本機(jī)DNS解析模塊。本機(jī)DNS解析模塊收到轉(zhuǎn)發(fā)的DNS解析請求數(shù)據(jù)后,直接將解析結(jié)果寫回操作系統(tǒng),完成DNS解析的流程。如果DNS請求數(shù)據(jù)不符合本機(jī)DNS解析策略,則網(wǎng)絡(luò)數(shù)據(jù)過濾模塊直接將此數(shù)據(jù)發(fā)送給操作系統(tǒng)底層模塊,從而提高非本地DNS解析的解析速度。以下結(jié)合附圖以及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不限定本發(fā)明。方法實(shí)施例根據(jù)本發(fā)明的實(shí)施例,提供了一種DNS解析方法,圖3是本發(fā)明實(shí)施例的DNS解析方法的流程圖,如圖3所示,根據(jù)本發(fā)明實(shí)施例的DNS解析方法包括如下處理步驟301,網(wǎng)絡(luò)數(shù)據(jù)過濾模塊對本機(jī)DNS解析請求包進(jìn)行過濾,將符合預(yù)先設(shè)置的本地DNS解析策略的本機(jī)DNS解析請求包轉(zhuǎn)發(fā)到本機(jī)DNS解析模塊,將不符合本地DNS解析策略的本機(jī)DNS解析請求包轉(zhuǎn)發(fā)到操作系統(tǒng)底層模塊;在執(zhí)行步驟301之前,本機(jī)DNS解析模塊需要設(shè)置監(jiān)聽端口并將監(jiān)聽端口和本地 DNS解析策略置入網(wǎng)絡(luò)數(shù)據(jù)過濾模塊。在步驟301中,網(wǎng)絡(luò)數(shù)據(jù)過濾模塊需要根據(jù)本地DNS解析策略對本機(jī)DNS解析請求包進(jìn)行過濾,即,判斷本機(jī)DNS解析請求包是否需要進(jìn)行本地DNS解析;在確定本機(jī)DNS 解析請求包需要進(jìn)行本地處理的情況下,網(wǎng)絡(luò)數(shù)據(jù)過濾模塊將本機(jī)DNS解析請求包的原目的地址修改為本機(jī)地址,并將本機(jī)DNS解析請求包的原目的端口修改為本機(jī)DNS解析模塊設(shè)置的監(jiān)聽端口,并將本機(jī)DNS解析請求包轉(zhuǎn)發(fā)給本機(jī)DNS解析模塊;隨后,為了方便后續(xù)的查詢,網(wǎng)絡(luò)數(shù)據(jù)過濾模塊將本機(jī)DNS解析請求包的源端口、原目的地址、以及原目的端口進(jìn)行保存。 步驟302,本機(jī)DNS解析模塊對接收的本機(jī)DNS解析請求包進(jìn)行解析,獲取解析結(jié)果,并將解析結(jié)果攜帶在本機(jī)DNS解析應(yīng)答包中發(fā)送給操作系統(tǒng)底層模塊。在步驟302中,本機(jī)DNS解析模塊需要根據(jù)用戶定義的域名與網(wǎng)絡(luò)協(xié)議IP地址對應(yīng)關(guān)系,將本機(jī)DNS解析請求包中的域名地址解析為對應(yīng)的IP地址;隨后,本機(jī)DNS解析模塊根據(jù)本機(jī)DNS解析請求包中的源端口,向網(wǎng)絡(luò)數(shù)據(jù)過濾模塊查詢本機(jī)DNS解析請求包的原目的地址、以及原目的端口 ;最后,本機(jī)DNS解析模塊根據(jù)解析后的IP地址、原目的地址、 以及原目的端口構(gòu)造本機(jī)DNS解析應(yīng)答包,并通過原始套接字將本機(jī)DNS解析應(yīng)答包發(fā)送給操作系統(tǒng)底層模塊。在實(shí)際應(yīng)用中,可以對本地DNS解析策略進(jìn)行擴(kuò)展,具體地本機(jī)DNS解析模塊接收DNS策略服務(wù)器分發(fā)的當(dāng)前本地DNS解析策略;本機(jī)DNS解析模塊根據(jù)當(dāng)前本地DNS解析策略對原本地DNS解析策略進(jìn)行更新,并將更新后的本地DNS解析策略置入網(wǎng)絡(luò)數(shù)據(jù)過濾模塊。下面結(jié)合附圖,以Windows系統(tǒng)為例,對本發(fā)明實(shí)施例的技術(shù)方案進(jìn)行詳細(xì)說明。在Windows系統(tǒng)中,網(wǎng)絡(luò)數(shù)據(jù)過濾模塊為傳輸驅(qū)動(dòng)程序接口過濾器(Transport Driver Interface Filter,簡稱為TDI Filter)。圖4是本發(fā)明實(shí)施例的DNS解析方法的詳細(xì)處理流程圖,如圖4所示,包括如下處理TDI Filter作為網(wǎng)絡(luò)數(shù)據(jù)過濾模塊在Windows操作系統(tǒng)上的實(shí)現(xiàn),主要完成網(wǎng)絡(luò)數(shù)據(jù)的過濾、匹配及轉(zhuǎn)發(fā)工作。當(dāng)操作系統(tǒng)發(fā)出DNS解析請求后,TDI Filter會(huì)截獲該請求數(shù)據(jù),并根據(jù)預(yù)置其內(nèi)部的DNS解析策略,判斷是否需要進(jìn)行本地解析。如無需進(jìn)行本地解析,則TDI Filter會(huì)直接將該數(shù)據(jù)轉(zhuǎn)發(fā)給操作系統(tǒng)底層模塊進(jìn)行后續(xù)處理;如需要進(jìn)行本地解析,則TDI Filter會(huì)修改該請求數(shù)據(jù)的目的地址和端口,將其轉(zhuǎn)發(fā)給DNS本地解析模塊。DNS本地解析模塊(即,上述本機(jī)DNS解析模塊)主要是接收TDI Filter轉(zhuǎn)發(fā)到 DNS解析請求數(shù)據(jù),并根據(jù)用戶定義的域名到IP地址對應(yīng)關(guān)系,將請求解析的域名地址轉(zhuǎn)換成IP地址,然后根據(jù)解析結(jié)果構(gòu)造一個(gè)DNS解析應(yīng)答包,通過原始套接字(RAW Socket) 寫回給操作系統(tǒng)。在本實(shí)例中,DNS本地解析模塊啟動(dòng)后會(huì)首先在本機(jī)監(jiān)聽某個(gè)UDP端口。該UDP端口可預(yù)先約定,也可由DNS本地解析模塊啟動(dòng)時(shí)隨機(jī)選定。當(dāng)DNS本地解析模塊啟動(dòng)成功后,會(huì)將UDP端口號(UDP 53)和本地DNS解析策略置入 TDI Filter。當(dāng)TDI Filter接收到DNS本地解析模塊置入的UDP端口號和本地DNS解析策略后,即認(rèn)為DNS本地解析模塊已啟動(dòng)成功,可以開啟本地DNS解析功能。自此后,TDI Filter 即開始過濾流經(jīng)UDP 53端口上的所有數(shù)據(jù)。當(dāng)TDI Filter截獲到流經(jīng)UDP 53端口的數(shù)據(jù)后,首先根據(jù)網(wǎng)絡(luò)協(xié)議類型和端口號,判斷該數(shù)據(jù)是否為DNS解析請求數(shù)據(jù)。如否,則調(diào)用TDI Filter發(fā)送函數(shù),將數(shù)據(jù)轉(zhuǎn)發(fā)操作系統(tǒng)底層組件進(jìn)行后續(xù)處理。如為DNS解析請求數(shù)據(jù),則根據(jù)置入的本地DNS解析策略,判斷是否為符合本地DNS解析策略的數(shù)據(jù)。如否,則調(diào)用TDI Filter發(fā)送函數(shù),將數(shù)據(jù)轉(zhuǎn)發(fā)操作系統(tǒng)底層組件進(jìn)行后續(xù)處理。當(dāng)TDI Filter截獲到符合本地DNS解析策略的DNS解析請求數(shù)據(jù)后,則修改該請求數(shù)據(jù)的目的地址和目的端口。將目的地址修改為本機(jī)地址,目的端口設(shè)置為DNS本地解析模塊的監(jiān)聽端口,然后調(diào)用TDI Filter發(fā)送函數(shù),將數(shù)據(jù)轉(zhuǎn)發(fā)操作系統(tǒng)底層組件進(jìn)行后續(xù)處理。TDI Filter同時(shí)會(huì)將該數(shù)據(jù)包的源端口,原始目的地址和原始目的端口保存?zhèn)洳?。被TDI Filter修改并經(jīng)操作系統(tǒng)處理后的DNS解析請求數(shù)據(jù),最終會(huì)被DNS本地解析模塊收到。DNS本地解析模塊在分析請求數(shù)據(jù)后,提取需要解析的域名地址,并根據(jù)用戶預(yù)置的域名到IP的對應(yīng)關(guān)系,取得該域名對應(yīng)的IP地址。當(dāng)DNS本地解析模塊完成域名解析后,會(huì)根據(jù)DNS解析請求數(shù)據(jù)的源端口,向TDI Filter查詢該請求數(shù)據(jù)的原始目的地址和原始目的端口。在查詢成功后,會(huì)根據(jù)原始目的地址,原始目的端口,解析后的IP地址等數(shù)據(jù),構(gòu)造一個(gè)完整的DNS解析請求回應(yīng)包,通過 RAW Socket寫回系統(tǒng),完成本地DNS解析流程。在上述實(shí)例中,DNS解析策略是預(yù)置的,是不可更改的。但是,對于某些復(fù)雜的企業(yè)內(nèi)部網(wǎng)絡(luò),靜態(tài)的DNS解析策略可能無法滿足其需要。因此,可對本發(fā)明實(shí)施例進(jìn)行擴(kuò)展, 對DNS解析策略進(jìn)行遠(yuǎn)程部署和管理。圖5是本發(fā)明實(shí)施例的DNS解析策略配置更新的流程圖,如圖5所示首先,管理員通過DNS策略服務(wù)器,編輯DNS解析策略,在形成DNS解析策略文件后,通過DNS策略服務(wù)器分發(fā)此策略文件。DNS本地解析模塊在收到DNS策略服務(wù)器分發(fā)的DNS解析策略文件后,會(huì)實(shí)時(shí)更新其DNS解析策略,并將策略寫入TDI Filter中。通過在企業(yè)內(nèi)部DNS策略服務(wù)器,可以對用戶的本地DNS解析策略進(jìn)行遠(yuǎn)程管理和更新,提高可管理性和易用性。需要說明的是,本地DNS解析策略所包含的內(nèi)容是將預(yù)定類型的域名作本地DNS解析,或者,將預(yù)定類型的域名作外部DNS解析。綜上所述,本發(fā)明實(shí)施例提出一種在企業(yè)內(nèi)部網(wǎng)絡(luò)中實(shí)現(xiàn)本地DNS解析的技術(shù)方案。與已有技術(shù)不同,本發(fā)明實(shí)施例通過在操作系統(tǒng)中插入網(wǎng)絡(luò)數(shù)據(jù)過濾模塊(本發(fā)明以 Windows TDI Filter為例),將符合本地DNS解析策略的DNS解析請求數(shù)據(jù)轉(zhuǎn)發(fā)給DNS本地解析模塊。在DNS本地解析模塊完成DNS解析后,再通過RAW Socket將解析結(jié)果寫回系統(tǒng),實(shí)現(xiàn)本地DNS解析。在本發(fā)明中,網(wǎng)絡(luò)數(shù)據(jù)過濾模塊在截獲到DNS解析請求數(shù)據(jù)后,可根據(jù)用戶設(shè)置的本地DNS解析策略確定是否需要將請求數(shù)據(jù)轉(zhuǎn)發(fā)給DNS本地解析模塊,從而實(shí)現(xiàn)復(fù)雜的本地DNS解析策略。例如,用戶可以將本地DNS解析策略設(shè)置為“所有域名均作本地DNS 解析,只有形如*. sina. com的域名進(jìn)行外部DNS解析”。在本發(fā)明實(shí)施例中,網(wǎng)絡(luò)數(shù)據(jù)過濾模塊在匹配本地DNS解析策略后,如判斷為非本地DNS解析請求數(shù)據(jù),則直接將DNS請求數(shù)據(jù)發(fā)送給操作系統(tǒng)底層模塊進(jìn)行后續(xù)處理。與已有技術(shù)方案相比,本發(fā)明無需為非本地DNS請求數(shù)據(jù)給出DNS解析錯(cuò)誤的回應(yīng)數(shù)據(jù),從而加快非本地DNS解析的解析速度。此外,在本發(fā)明實(shí)施例中,本地DNS解析規(guī)則可以預(yù)先指定,也可以由DNS策略管理器遠(yuǎn)程發(fā)布。需要說明的是,在本發(fā)明實(shí)施例中,以Windows操作系統(tǒng)為例,描述了本發(fā)明實(shí)施例的處理流程。但本發(fā)明實(shí)施例并不局限于Windows操作系統(tǒng)。裝置實(shí)施例根據(jù)本發(fā)明的實(shí)施例,提供了一種DNS解析裝置,圖6是本發(fā)明實(shí)施例的DNS解析裝置的結(jié)構(gòu)示意圖,如圖6所示,根據(jù)本發(fā)明實(shí)施例的DNS解析裝置包括網(wǎng)絡(luò)數(shù)據(jù)過濾模塊60、本機(jī)DNS解析模塊62,以下對本發(fā)明實(shí)施例的各個(gè)模塊進(jìn)行詳細(xì)的說明。網(wǎng)絡(luò)數(shù)據(jù)過濾模塊60用于對本機(jī)DNS解析請求包進(jìn)行過濾,將符合預(yù)先設(shè)置的本地DNS解析策略的本機(jī)DNS解析請求包轉(zhuǎn)發(fā)到本機(jī)DNS解析模塊62,將不符合本地DNS解析策略的本機(jī)DNS解析請求包轉(zhuǎn)發(fā)到操作系統(tǒng)底層模塊;網(wǎng)絡(luò)數(shù)據(jù)過濾模塊60具體用于根據(jù)本地DNS解析策略對本機(jī)DNS解析請求包進(jìn)行過濾,判斷本機(jī)DNS解析請求包是否需要進(jìn)行本地DNS解析;在確定本機(jī)DNS解析請求包需要進(jìn)行本地處理的情況下,將本機(jī)DNS解析請求包的原目的地址修改為本機(jī)地址,并將本機(jī)DNS解析請求包的原目的端口修改為本機(jī)DNS解析模塊的監(jiān)聽端口,并將本機(jī)DNS解析請求包轉(zhuǎn)發(fā)給本機(jī)DNS解析模塊62 ;將本機(jī)DNS解析請求包的源端口、原目的地址、以及原目的端口進(jìn)行保存。本機(jī)DNS解析模塊62用于對接收的本機(jī)DNS解析請求包進(jìn)行解析,獲取解析結(jié)果,并將解析結(jié)果攜帶在本機(jī)DNS解析應(yīng)答包中發(fā)送給操作系統(tǒng)底層模塊。本機(jī)DNS解析模塊62具體用于根據(jù)用戶定義的域名與網(wǎng)絡(luò)協(xié)議IP地址對應(yīng)關(guān)系,將本機(jī)DNS解析請求包中的域名地址解析為對應(yīng)的IP地址;根據(jù)本機(jī)DNS解析請求包中的源端口,向網(wǎng)絡(luò)數(shù)據(jù)過濾模塊查詢本機(jī)DNS解析請求包的原目的地址、以及原目的端口 ;根據(jù)解析后的IP地址、原目的地址、以及原目的端口構(gòu)造本機(jī)DNS解析應(yīng)答包,并通過原始套接字將本機(jī)DNS解析應(yīng)答包發(fā)送給操作系統(tǒng)底層模塊。本發(fā)明實(shí)施例的DNS解析裝置還包括設(shè)置模塊,用于設(shè)置監(jiān)聽端口,并將監(jiān)聽端口和本地DNS解析策略置入網(wǎng)絡(luò)數(shù)據(jù)過濾模塊。更新模塊,用于接收DNS策略服務(wù)器分發(fā)的當(dāng)前本地DNS解析策略,并根據(jù)當(dāng)前本地DNS解析策略對原本地DNS解析策略進(jìn)行更新,將更新后的本地DNS解析策略置入網(wǎng)絡(luò)數(shù)據(jù)過濾模塊。下面結(jié)合附圖,以Windows系統(tǒng)為例,對本發(fā)明實(shí)施例的技術(shù)方案進(jìn)行詳細(xì)說明。在Windows系統(tǒng)中,網(wǎng)絡(luò)數(shù)據(jù)過濾模塊60為傳輸驅(qū)動(dòng)程序接口過濾器(Transport Driver Interface Filter,簡稱為TDI Filter)。如圖4所示,包括如下處理TDI Filter作為網(wǎng)絡(luò)數(shù)據(jù)過濾模塊60在Windows操作系統(tǒng)上的實(shí)現(xiàn),主要完成網(wǎng)絡(luò)數(shù)據(jù)的過濾、匹配及轉(zhuǎn)發(fā)工作。當(dāng)操作系統(tǒng)發(fā)出DNS解析請求后,TDI Filter會(huì)截獲該請求數(shù)據(jù),并根據(jù)預(yù)置其內(nèi)部的DNS解析策略,判斷是否需要進(jìn)行本地解析。如無需進(jìn)行本地解析,則TDI Filter會(huì)直接將該數(shù)據(jù)轉(zhuǎn)發(fā)給操作系統(tǒng)底層模塊進(jìn)行后續(xù)處理;如需要進(jìn)行本地解析,則TDI Filter會(huì)修改該請求數(shù)據(jù)的目的地址和端口,將其轉(zhuǎn)發(fā)給本機(jī)DNS解析模塊62。本機(jī)DNS解析模塊62主要是接收TDI Filter轉(zhuǎn)發(fā)到DNS解析請求數(shù)據(jù),并根據(jù)用戶定義的域名到IP地址對應(yīng)關(guān)系,將請求解析的域名地址轉(zhuǎn)換成IP地址,然后根據(jù)解析結(jié)果構(gòu)造一個(gè)DNS解析應(yīng)答包,通過原始套接字(RAW Socket)寫回給操作系統(tǒng)。在本實(shí)例中,本機(jī)DNS解析模塊62啟動(dòng)后會(huì)首先在本機(jī)監(jiān)聽某個(gè)UDP端口。該 UDP端口可預(yù)先約定,也可由本機(jī)DNS解析模塊62啟動(dòng)時(shí)隨機(jī)選定。當(dāng)本機(jī)DNS解析模塊62啟動(dòng)成功后,會(huì)將UDP端口號(UDP 53)和本地DNS解析策略置入TDI Filter。當(dāng)TDI Filter接收到本機(jī)DNS解析模塊62置入的UDP端口號和本地DNS解析策略后,即認(rèn)為本機(jī)DNS解析模塊62已啟動(dòng)成功,可以開啟本地DNS解析功能。自此后,TDI Filter即開始過濾流經(jīng)UDP 53端口上的所有數(shù)據(jù)。當(dāng)TDI Filter截獲到流經(jīng)UDP 53端口的數(shù)據(jù)后,首先根據(jù)網(wǎng)絡(luò)協(xié)議類型和端口號,判斷該數(shù)據(jù)是否為DNS解析請求數(shù)據(jù)。如否,則調(diào)用TDI Filter發(fā)送函數(shù),將數(shù)據(jù)轉(zhuǎn)發(fā)操作系統(tǒng)底層組件進(jìn)行后續(xù)處理。如為DNS解析請求數(shù)據(jù),則根據(jù)置入的本地DNS解析策略,判斷是否為符合本地DNS解析策略的數(shù)據(jù)。如否,則調(diào)用TDI Filter發(fā)送函數(shù),將數(shù)據(jù)轉(zhuǎn)發(fā)操作系統(tǒng)底層組件進(jìn)行后續(xù)處理。當(dāng)TDI Filter截獲到符合本地DNS解析策略的DNS解析請求數(shù)據(jù)后,則修改該請求數(shù)據(jù)的目的地址和目的端口。將目的地址修改為本機(jī)地址,目的端口設(shè)置為DNS本地解析模塊的監(jiān)聽端口,然后調(diào)用TDI Filter發(fā)送函數(shù),將數(shù)據(jù)轉(zhuǎn)發(fā)操作系統(tǒng)底層組件進(jìn)行后續(xù)處理。TDI Filter同時(shí)會(huì)將該數(shù)據(jù)包的源端口,原始目的地址和原始目的端口保存?zhèn)洳?。被TDI Filter修改并經(jīng)操作系統(tǒng)處理后的DNS解析請求數(shù)據(jù),最終會(huì)被本機(jī)DNS 解析模塊62收到。本機(jī)DNS解析模塊62在分析請求數(shù)據(jù)后,提取需要解析的域名地址,并根據(jù)用戶預(yù)置的域名到IP的對應(yīng)關(guān)系,取得該域名對應(yīng)的IP地址。當(dāng)本機(jī)DNS解析模塊62完成域名解析后,會(huì)根據(jù)DNS解析請求數(shù)據(jù)的源端口,向 TDI Filter查詢該請求數(shù)據(jù)的原始目的地址和原始目的端口。在查詢成功后,會(huì)根據(jù)原始目的地址,原始目的端口,解析后的IP地址等數(shù)據(jù),構(gòu)造一個(gè)完整的DNS解析請求回應(yīng)包, 通過RAW Socket寫回系統(tǒng),完成本地DNS解析流程。在上述實(shí)例中,DNS解析策略是預(yù)置的,是不可更改的。但是,對于某些復(fù)雜的企業(yè)內(nèi)部網(wǎng)絡(luò),靜態(tài)的DNS解析策略可能無法滿足其需要。因此,可對本發(fā)明實(shí)施例進(jìn)行擴(kuò)展, 對DNS解析策略進(jìn)行遠(yuǎn)程部署和管理。如圖5所示首先,管理員通過DNS策略服務(wù)器,編輯DNS解析策略,在形成DNS解析策略文件后,通過DNS策略服務(wù)器分發(fā)此策略文件。本機(jī) DNS解析模塊62在收到DNS策略服務(wù)器分發(fā)的DNS解析策略文件后,會(huì)實(shí)時(shí)更新其DNS解析策略,并將策略寫入TDI Filter中。通過在企業(yè)內(nèi)部DNS策略服務(wù)器,可以對用戶的本地DNS解析策略進(jìn)行遠(yuǎn)程管理和更新,提高可管理性和易用性。需要說明的是,本地DNS解析策略所包含的內(nèi)容是將預(yù)定類型的域名作本地DNS解析,或者,將預(yù)定類型的域名作外部DNS解析。綜上所述,本發(fā)明實(shí)施例提出一種在企業(yè)內(nèi)部網(wǎng)絡(luò)中實(shí)現(xiàn)本地DNS解析的技術(shù)方案。與已有技術(shù)不同,本發(fā)明實(shí)施例通過在操作系統(tǒng)中插入網(wǎng)絡(luò)數(shù)據(jù)過濾模塊60(本發(fā)明以Windows TDI Filter為例),將符合本地DNS解析策略的DNS解析請求數(shù)據(jù)轉(zhuǎn)發(fā)給本機(jī) DNS解析模塊62。在本機(jī)DNS解析模塊62完成DNS解析后,再通過RAW Socket將解析結(jié)果寫回系統(tǒng),實(shí)現(xiàn)本地DNS解析。在本發(fā)明中,網(wǎng)絡(luò)數(shù)據(jù)過濾模塊60在截獲到DNS解析請求數(shù)據(jù)后,可根據(jù)用戶設(shè)置的本地DNS解析策略確定是否需要將請求數(shù)據(jù)轉(zhuǎn)發(fā)給本機(jī)DNS解析模塊62,從而實(shí)現(xiàn)復(fù)雜的本地DNS解析策略。例如,用戶可以將本地DNS解析策略設(shè)置為“所有域名均作本地 DNS解析,只有形如*. sina. com的域名進(jìn)行外部DNS解析”。在本發(fā)明實(shí)施例中,網(wǎng)絡(luò)數(shù)據(jù)過濾模塊60在匹配本地DNS解析策略后,如判斷為非本地DNS解析請求數(shù)據(jù),則直接將DNS請求數(shù)據(jù)發(fā)送給操作系統(tǒng)底層模塊進(jìn)行后續(xù)處理。 與已有技術(shù)方案相比,本發(fā)明無需為非本地DNS請求數(shù)據(jù)給出DNS解析錯(cuò)誤的回應(yīng)數(shù)據(jù),從而加快非本地DNS解析的解析速度。此外,在本發(fā)明實(shí)施例中,本地DNS解析規(guī)則可以預(yù)先指定,也可以由DNS策略管理器遠(yuǎn)程發(fā)布。需要說明的是,在本發(fā)明實(shí)施例中,以Windows操作系統(tǒng)為例,描述了本發(fā)明實(shí)施例的處理流程。但本發(fā)明實(shí)施例并不局限于Windows操作系統(tǒng)。本發(fā)明實(shí)施例通過網(wǎng)絡(luò)數(shù)據(jù)過濾模塊過濾本機(jī)DNS解析請求包,將符合本機(jī)DNS 解析策略的請求數(shù)據(jù)轉(zhuǎn)發(fā)到本機(jī)DNS解析模塊進(jìn)行處理,解決了現(xiàn)有技術(shù)中本地DNS解析時(shí)間長,且不能夠定義復(fù)雜的本地DNS解析策略的問題,本發(fā)明實(shí)施例由于使用網(wǎng)絡(luò)數(shù)據(jù)過濾模塊對DNS請求數(shù)據(jù)進(jìn)行過濾,因此能夠?qū)崿F(xiàn)復(fù)雜的DNS解析策略;由于網(wǎng)絡(luò)數(shù)據(jù)過濾模塊可直接轉(zhuǎn)發(fā)不符合本機(jī)DNS解析策略的數(shù)據(jù)包,因此可提高DNS解析速度;由于網(wǎng)絡(luò)數(shù)據(jù)過濾模塊無需監(jiān)聽端口,因此與本機(jī)已安裝的DNS服務(wù)器軟件不會(huì)存在沖突;此外,無需修改域名到IP地址對應(yīng)關(guān)系配置文件,不會(huì)觸發(fā)防病毒軟件動(dòng)作,并可提高本地DNS解析的執(zhí)行效率。 盡管為示例目的,已經(jīng)公開了本發(fā)明的優(yōu)選實(shí)施例,本領(lǐng)域的技術(shù)人員將意識(shí)到各種改進(jìn)、增加和取代也是可能的,因此,本發(fā)明的范圍應(yīng)當(dāng)不限于上述實(shí)施例。
權(quán)利要求
1.一種域名系統(tǒng)DNS解析方法,其特征在于,包括網(wǎng)絡(luò)數(shù)據(jù)過濾模塊對本機(jī)DNS解析請求包進(jìn)行過濾,將符合預(yù)先設(shè)置的本地DNS解析策略的本機(jī)DNS解析請求包轉(zhuǎn)發(fā)到本機(jī)DNS解析模塊,將不符合所述本地DNS解析策略的本機(jī)DNS解析請求包轉(zhuǎn)發(fā)到操作系統(tǒng)底層模塊;所述本機(jī)DNS解析模塊對接收的所述本機(jī)DNS解析請求包進(jìn)行解析,獲取解析結(jié)果,并將所述解析結(jié)果攜帶在本機(jī)DNS解析應(yīng)答包中發(fā)送給所述操作系統(tǒng)底層模塊。
2.如權(quán)利要求1所述的方法,其特征在于,所述網(wǎng)絡(luò)數(shù)據(jù)過濾模塊對本機(jī)DNS解析請求包進(jìn)行過濾,將符合預(yù)先設(shè)置的本地DNS解析策略的本機(jī)DNS解析請求包轉(zhuǎn)發(fā)到本機(jī)DNS 解析模塊具體包括所述網(wǎng)絡(luò)數(shù)據(jù)過濾模塊根據(jù)所述本地DNS解析策略對所述本機(jī)DNS解析請求包進(jìn)行過濾,判斷所述本機(jī)DNS解析請求包是否需要進(jìn)行本地DNS解析;在確定所述本機(jī)DNS解析請求包需要進(jìn)行本地處理的情況下,所述網(wǎng)絡(luò)數(shù)據(jù)過濾模塊將所述本機(jī)DNS解析請求包的原目的地址修改為本機(jī)地址,并將所述本機(jī)DNS解析請求包的原目的端口修改為所述本機(jī)DNS解析模塊設(shè)置的監(jiān)聽端口,并將所述本機(jī)DNS解析請求包轉(zhuǎn)發(fā)給所述本機(jī)DNS解析模塊;所述網(wǎng)絡(luò)數(shù)據(jù)過濾模塊將所述本機(jī)DNS解析請求包的源端口、所述原目的地址、以及所述原目的端口進(jìn)行保存。
3.如權(quán)利要求2所述的方法,其特征在于,所述本機(jī)DNS解析模塊對接收的所述本機(jī) DNS解析請求包進(jìn)行解析,獲取解析結(jié)果,并將所述解析結(jié)果攜帶在本機(jī)DNS解析應(yīng)答包中發(fā)送給所述操作系統(tǒng)底層模塊具體包括所述本機(jī)DNS解析模塊根據(jù)用戶定義的域名與網(wǎng)絡(luò)協(xié)議IP地址對應(yīng)關(guān)系,將所述本機(jī) DNS解析請求包中的域名地址解析為對應(yīng)的IP地址;所述本機(jī)DNS解析模塊根據(jù)所述本機(jī)DNS解析請求包中的所述源端口,向所述網(wǎng)絡(luò)數(shù)據(jù)過濾模塊查詢所述本機(jī)DNS解析請求包的所述原目的地址、以及所述原目的端口 ;所述本機(jī)DNS解析模塊根據(jù)解析后的所述IP地址、所述原目的地址、以及所述原目的端口構(gòu)造所述本機(jī)DNS解析應(yīng)答包,并通過原始套接字將所述本機(jī)DNS解析應(yīng)答包發(fā)送給所述操作系統(tǒng)底層模塊。
4.如權(quán)利要求1所述的方法,其特征在于,所述網(wǎng)絡(luò)數(shù)據(jù)過濾模塊對本機(jī)DNS解析請求包進(jìn)行過濾之前,所述方法還包括所述本機(jī)DNS解析模塊設(shè)置監(jiān)聽端口 ;所述本機(jī)DNS解析模塊將所述監(jiān)聽端口和所述本地DNS解析策略置入所述網(wǎng)絡(luò)數(shù)據(jù)過濾模塊。
5.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括所述本機(jī)DNS解析模塊接收DNS策略服務(wù)器分發(fā)的當(dāng)前本地DNS解析策略;所述本機(jī)DNS解析模塊根據(jù)所述當(dāng)前本地DNS解析策略對原本地DNS解析策略進(jìn)行更新,并將更新后的所述本地DNS解析策略置入所述網(wǎng)絡(luò)數(shù)據(jù)過濾模塊。
6.一種域名系統(tǒng)DNS解析裝置,其特征在于,包括網(wǎng)絡(luò)數(shù)據(jù)過濾模塊,用于對本機(jī)DNS解析請求包進(jìn)行過濾,將符合預(yù)先設(shè)置的本地DNS 解析策略的本機(jī)DNS解析請求包轉(zhuǎn)發(fā)到本機(jī)DNS解析模塊,將不符合所述本地DNS解析策略的本機(jī)DNS解析請求包轉(zhuǎn)發(fā)到操作系統(tǒng)底層模塊;所述本機(jī)DNS解析模塊,用于對接收的所述本機(jī)DNS解析請求包進(jìn)行解析,獲取解析結(jié)果,并將所述解析結(jié)果攜帶在本機(jī)DNS解析應(yīng)答包中發(fā)送給所述操作系統(tǒng)底層模塊。
7.如權(quán)利要求6所述的裝置,其特征在于,所述網(wǎng)絡(luò)數(shù)據(jù)過濾模塊具體用于 根據(jù)所述本地DNS解析策略對所述本機(jī)DNS解析請求包進(jìn)行過濾,判斷所述本機(jī)DNS解析請求包是否需要進(jìn)行本地DNS解析;在確定所述本機(jī)DNS解析請求包需要進(jìn)行本地處理的情況下,將所述本機(jī)DNS解析請求包的原目的地址修改為本機(jī)地址,并將所述本機(jī)DNS解析請求包的原目的端口修改為所述本機(jī)DNS解析模塊的監(jiān)聽端口,并將所述本機(jī)DNS解析請求包轉(zhuǎn)發(fā)給所述本機(jī)DNS解析模塊;將所述本機(jī)DNS解析請求包的源端口、所述原目的地址、以及所述原目的端口進(jìn)行保存。
8.如權(quán)利要求7所述的裝置,其特征在于,所述本機(jī)DNS解析模塊具體用于根據(jù)用戶定義的域名與網(wǎng)絡(luò)協(xié)議IP地址對應(yīng)關(guān)系,將所述本機(jī)DNS解析請求包中的域名地址解析為對應(yīng)的IP地址;根據(jù)所述本機(jī)DNS解析請求包中的所述源端口,向所述網(wǎng)絡(luò)數(shù)據(jù)過濾模塊查詢所述本機(jī)DNS解析請求包的所述原目的地址、以及所述原目的端口 ;根據(jù)解析后的所述IP地址、所述原目的地址、以及所述原目的端口構(gòu)造所述本機(jī)DNS 解析應(yīng)答包,并通過原始套接字將所述本機(jī)DNS解析應(yīng)答包發(fā)送給所述操作系統(tǒng)底層模塊。
9.如權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括設(shè)置模塊,用于設(shè)置監(jiān)聽端口,并將所述監(jiān)聽端口和所述本地DNS解析策略置入所述網(wǎng)絡(luò)數(shù)據(jù)過濾模塊。
10.如權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括更新模塊,用于接收DNS策略服務(wù)器分發(fā)的當(dāng)前本地DNS解析策略,并根據(jù)所述當(dāng)前本地DNS解析策略對原本地DNS解析策略進(jìn)行更新,將更新后的所述本地DNS解析策略置入所述網(wǎng)絡(luò)數(shù)據(jù)過濾模塊。
全文摘要
本發(fā)明公開了一種DNS解析方法及裝置。該方法包括網(wǎng)絡(luò)數(shù)據(jù)過濾模塊對本機(jī)DNS解析請求包進(jìn)行過濾,將符合預(yù)先設(shè)置的本地DNS解析策略的本機(jī)DNS解析請求包轉(zhuǎn)發(fā)到本機(jī)DNS解析模塊,將不符合本地DNS解析策略的本機(jī)DNS解析請求包轉(zhuǎn)發(fā)到操作系統(tǒng)底層模塊;本機(jī)DNS解析模塊對接收的本機(jī)DNS解析請求包進(jìn)行解析,獲取解析結(jié)果,并將解析結(jié)果攜帶在本機(jī)DNS解析應(yīng)答包中發(fā)送給操作系統(tǒng)底層模塊。借助于本發(fā)明的技術(shù)方案,能夠?qū)崿F(xiàn)復(fù)雜的DNS解析策略。
文檔編號H04L29/12GK102263837SQ20111022844
公開日2011年11月30日 申請日期2011年8月10日 優(yōu)先權(quán)日2011年8月10日
發(fā)明者何超, 申錕鎧, 羅元, 鄧輝 申請人:北京天融信科技有限公司