本發(fā)明屬于計(jì)算機(jī)域名解析技術(shù)領(lǐng)域,尤其涉及一種基于DNS視圖的DNS策略解析方法及裝置。
背景技術(shù):
DNS(Domain Name System,域名系統(tǒng))的功能是實(shí)現(xiàn)主機(jī)域名和主機(jī)IP地址之間的相互轉(zhuǎn)換。當(dāng)用戶在應(yīng)用程序中輸入主機(jī)域名時(shí),DNS服務(wù)器可以將該域名解析為與之對(duì)應(yīng)的IP(Internet Protocol,網(wǎng)絡(luò)協(xié)議)地址。
某些DNS服務(wù)器根據(jù)不同用戶的需求及安全的考慮,需要配置不同的域名解析策略,域名解析策略可以根據(jù)不同的場(chǎng)景及用戶需求來(lái)設(shè)定,例如,出于安全考慮,可以設(shè)定能夠進(jìn)行黑名單過(guò)濾的策略;或者,可以設(shè)定策略進(jìn)行負(fù)載均衡,對(duì)于不同IP地址/域名的查詢轉(zhuǎn)發(fā)到不同的服務(wù)器上實(shí)現(xiàn)負(fù)載均衡。
BIND(Berkeley Internet Name Domain)是一款開(kāi)源的域名解析系統(tǒng),也是目前互聯(lián)網(wǎng)上使用最廣泛的域名解析系統(tǒng)。從Version9開(kāi)始,BIND引入VIEW功能,簡(jiǎn)單、高效地實(shí)現(xiàn)了DNS策略解析。一臺(tái)DNS服務(wù)器可能配置成千上萬(wàn)條DNS策略,每條DNS策略對(duì)應(yīng)不同或相同的IP/IP段及域名/域名段。DNS策略匹配的算法直接影響到DNS服務(wù)器遞歸解析的性能,DNS解析過(guò)程中用戶一直處于等待狀態(tài)無(wú)法訪問(wèn)網(wǎng)頁(yè),因此,DNS解析性能會(huì)直接影響用戶的使用體驗(yàn)。一個(gè)View對(duì)應(yīng)條策略,每個(gè)View對(duì)應(yīng)一個(gè)IP列表(IPList)和域名列表。傳統(tǒng)的策略匹配算法,對(duì)每個(gè)View的IPList及域名列表分別構(gòu)建二叉樹(shù),即構(gòu)建IP二叉樹(shù)和域名二叉樹(shù),然后,按照View的優(yōu)先級(jí)順序進(jìn)行遍歷,對(duì)于每個(gè)View先遍歷IP二叉樹(shù),再遍歷域名二叉樹(shù),同時(shí)匹配的View為目標(biāo)View,然后執(zhí)行目標(biāo)View配置的具體策略。假設(shè)每個(gè)View下的IP或IP段為n個(gè),域名為n個(gè),共有n個(gè)View,則該算法的復(fù)雜度是O(n*(LOG2(n)+LOG2(n)))。對(duì)于配置的View特別多的場(chǎng)景,該算法的匹配效率非常低,導(dǎo)致用戶等待時(shí)間特別長(zhǎng)。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請(qǐng)的目的在于提供一種匹配效率高的DNS策略解析方法及裝置,具體技術(shù)方案如下:
第一方面,本申請(qǐng)?zhí)峁┮环N基于域名系統(tǒng)DNS視圖的DNS策略解析方法,應(yīng)用于DNS服務(wù)器中,包括:
獲取接收到的DNS查詢請(qǐng)求對(duì)應(yīng)的源IP地址及目標(biāo)域名;
查詢預(yù)先創(chuàng)建的IP列表,得到與所述源IP地址匹配的第一策略標(biāo)識(shí)集,所述IP列表包含所述DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的源IP信息及每條所述源IP信息對(duì)應(yīng)的策略標(biāo)識(shí);
查詢預(yù)先創(chuàng)建的域名列表,得到與所述目標(biāo)域名匹配的第二策略標(biāo)識(shí)集,所述域名列表包含所述DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的域名及每個(gè)所述域名對(duì)應(yīng)的策略標(biāo)識(shí);
確定所述第一策略標(biāo)識(shí)集與所述第二策略標(biāo)識(shí)集中的相同策略標(biāo)識(shí)所對(duì)應(yīng)的策略為目標(biāo)策略。
可選地,在查詢預(yù)先創(chuàng)建的IP列表之前,所述方法還包括:
獲取所述DNS服務(wù)器中各個(gè)DNS策略對(duì)應(yīng)的原始IP列表,以及各個(gè)所述原始IP列表對(duì)應(yīng)的策略標(biāo)識(shí);
將各個(gè)所述原始IP列表中的源IP信息進(jìn)行合并,并對(duì)應(yīng)記錄合并后的每條源IP信息對(duì)應(yīng)的策略標(biāo)識(shí),得到所述IP列表。
可選地,所述將各個(gè)所述原始IP列表中的源IP信息進(jìn)行合并,并對(duì)應(yīng)記錄合并后的每條源IP信息對(duì)應(yīng)的策略標(biāo)識(shí),得到所述IP列表,包括:
將各個(gè)所述原始IP列表中包含相同IP段的源IP信息進(jìn)行合并,記錄所述相同IP段對(duì)應(yīng)的所有策略標(biāo)識(shí),并按策略優(yōu)先級(jí)由高到低的順序進(jìn)行排序;
將各個(gè)所述原始IP列表中具有包含關(guān)系的IP段,根據(jù)所包含的IP段進(jìn)行拆分,并分別記錄拆分后的子IP段對(duì)應(yīng)的策略標(biāo)識(shí)。
可選地,在查詢預(yù)先創(chuàng)建的域名列表之前,所述方法還包括:
獲取所述DNS服務(wù)器中各個(gè)DNS策略對(duì)應(yīng)的原始域名列表,以及各個(gè)所述原始域名列表對(duì)應(yīng)的策略標(biāo)識(shí);
將各個(gè)所述原始域名列表中的域名進(jìn)行合并,并對(duì)應(yīng)記錄合并后的每個(gè)域名對(duì)應(yīng)的策略標(biāo)識(shí),得到所述域名列表。
可選地,所述將各個(gè)所述原始域名列表中的域名進(jìn)行合并,并對(duì)應(yīng)記錄合并后的每個(gè)域名對(duì)應(yīng)的策略標(biāo)識(shí),得到所述域名列表,包括:
將各個(gè)所述原始域名列表中包含的相同域名進(jìn)行合并,并按照策略優(yōu)先級(jí)由高到低的順序記錄所述相同域名對(duì)應(yīng)的策略標(biāo)識(shí)。
可選地,所述確定所述第一策略標(biāo)識(shí)集及所述第二策略標(biāo)識(shí)集中的相同策略標(biāo)識(shí)所對(duì)應(yīng)的策略為目標(biāo)策略,包括:
查找所述第一策略標(biāo)識(shí)集和所述第二策略標(biāo)識(shí)集中的相同策略標(biāo)識(shí);
當(dāng)所述相同策略標(biāo)識(shí)的數(shù)量為至少兩個(gè)時(shí),確定全部的相同策略標(biāo)識(shí)中優(yōu)先級(jí)最高的策略標(biāo)識(shí)所對(duì)應(yīng)的策略為所述目標(biāo)策略。
第二方面,本申請(qǐng)?zhí)峁┮环N基于域名系統(tǒng)DNS視圖的DNS策略解析裝置,應(yīng)用于DNS服務(wù)器中,包括:
第一獲取模塊,用于獲取接收到的DNS查詢請(qǐng)求對(duì)應(yīng)的源IP地址及目標(biāo)域名;
第一查詢模塊,用于查詢預(yù)先創(chuàng)建的IP列表,得到與所述源IP地址匹配的第一策略標(biāo)識(shí)集,所述IP列表包含所述DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的源IP信息及每條所述源IP信息對(duì)應(yīng)的策略標(biāo)識(shí);
第二查詢模塊,用于查詢預(yù)先創(chuàng)建的域名列表,得到與所述目標(biāo)域名匹配的第二策略標(biāo)識(shí)集,所述域名列表包含所述DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的域名及每個(gè)所述域名對(duì)應(yīng)的策略標(biāo)識(shí);
確定模塊,用于確定所述第一策略標(biāo)識(shí)集與所述第二策略標(biāo)識(shí)集中的相同策略標(biāo)識(shí)所對(duì)應(yīng)的策略為目標(biāo)策略。
可選地,所述裝置還包括:
第二獲取模塊,用于獲取所述DNS服務(wù)器中各個(gè)DNS策略對(duì)應(yīng)的原始IP列表,以及各個(gè)所述原始IP列表對(duì)應(yīng)的策略標(biāo)識(shí);
第一合并模塊,用于將各個(gè)所述原始IP列表中的源IP信息進(jìn)行合并,并對(duì)應(yīng)記錄合并后的每條源IP信息對(duì)應(yīng)的策略標(biāo)識(shí),得到所述IP列表。
可選地,所述第一合并模塊包括:
第一合并子模塊,用于將各個(gè)所述原始IP列表中包含相同IP段的源IP信息進(jìn)行合并,記錄所述相同IP段對(duì)應(yīng)的所有策略標(biāo)識(shí),并按策略優(yōu)先級(jí)由高到低的順序進(jìn)行排序;
拆分子模塊,用于將各個(gè)所述原始IP列表中具有包含關(guān)系的IP段,根據(jù)所包含的IP段進(jìn)行拆分,并分別記錄拆分后的子IP段對(duì)應(yīng)的策略標(biāo)識(shí)。
可選地,所述裝置還包括:
第三獲取模塊,用于獲取所述DNS服務(wù)器中各個(gè)DNS策略對(duì)應(yīng)的原始域名列表,以及各個(gè)所述原始域名列表對(duì)應(yīng)的策略標(biāo)識(shí);
第二合并模塊,用于將各個(gè)所述原始域名列表中的域名進(jìn)行合并,并對(duì)應(yīng)記錄合并后的每個(gè)域名對(duì)應(yīng)的策略標(biāo)識(shí),得到所述域名列表。
可選地,所述第二合并模塊包括:
第二合并子模塊,用于將各個(gè)所述原始域名列表中包含的相同域名進(jìn)行合并,并按照策略優(yōu)先級(jí)由高到低的順序記錄所述相同域名對(duì)應(yīng)的策略標(biāo)識(shí)。
可選地,所述確定模塊包括:
查找子模塊,用于查找所述第一策略標(biāo)識(shí)集和所述第二策略標(biāo)識(shí)集中的相同策略標(biāo)識(shí);
第一確定子模塊,用于當(dāng)所述相同策略標(biāo)識(shí)的數(shù)量為至少兩個(gè)時(shí),確定全部的相同策略標(biāo)識(shí)中優(yōu)先級(jí)最高的策略標(biāo)識(shí)所對(duì)應(yīng)的策略為所述目標(biāo)策略。
本發(fā)明提供的基于DNS視圖的DNS策略解析方法,應(yīng)用于DNS服務(wù)器中,接收到用戶發(fā)送的DNS查詢請(qǐng)求后,獲取源IP地址及目標(biāo)域名;然后,查詢IP列表得到與該源IP地址匹配的第一策略標(biāo)識(shí)集,該IP列表包含DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的源IP信息及每條源IP信息對(duì)應(yīng)的策略標(biāo)識(shí);接著,查詢域名列表,得到與該目標(biāo)域名匹配的第二策略標(biāo)識(shí)集,該域名列表包含DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的域名及每個(gè)域名對(duì)應(yīng)的策略標(biāo)識(shí)。再比較第一策略標(biāo)識(shí)集與第二策略標(biāo)識(shí)集中的策略標(biāo)識(shí),確定兩個(gè)標(biāo)識(shí)集中的相同策略標(biāo)識(shí)對(duì)應(yīng)的策略為目標(biāo)策略。該方法中的IP列表和域名列表分別包含DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的IP信息和域名,只需查詢一個(gè)IP列表和一個(gè)域名列表,再比較第一策略標(biāo)識(shí)集合第二策略標(biāo)識(shí)集,即可獲得目標(biāo)策略。而不是遍歷每個(gè)策略的原始IP列表及原始域名列表,大大提高了獲得查詢效率,進(jìn)而減少了用戶等待DNS解析的時(shí)間,提高了用戶體驗(yàn)。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例一種基于DNS視圖的DNS策略解析方法的流程圖;
圖2是本發(fā)明實(shí)施例另一種基于DNS視圖的DNS策略解析方法的流程圖;
圖3是本發(fā)明實(shí)施例一種DNS策略配置實(shí)例的示意圖;
圖4是本發(fā)明實(shí)施例一種合并后的IP列表的示意圖;
圖5是本發(fā)明實(shí)施例一種合并后的域名列表的示意圖;
圖6是本發(fā)明實(shí)施例一種DNS策略解析實(shí)例的示意圖;
圖7是本發(fā)明實(shí)施例另一種DNS策略解析實(shí)例的示意圖;
圖8是本發(fā)明實(shí)施例一種基于DNS視圖的DNS策略解析裝置的框圖;
圖9是本發(fā)明實(shí)施例一種確定模塊的框圖;
圖10是本發(fā)明實(shí)施例另一種基于DNS視圖的DNS策略解析裝置的框圖;
圖11是本發(fā)明實(shí)施例一種第一合并模塊的框圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
為了降低DNS策略查詢匹配的復(fù)雜度,提高查詢效率,本申請(qǐng)?zhí)峁┝嘶贒NS視圖的DNS策略解析方法實(shí)施例。
請(qǐng)參見(jiàn)圖1,示出了本發(fā)明實(shí)施例一種基于DNS視圖的DNS策略解析方法的流程圖,該方法應(yīng)用于DNS服務(wù)器中,如圖1所示,該方法可以包括以下步驟:
S110,獲取接收到的DNS查詢請(qǐng)求對(duì)應(yīng)的源IP地址及目標(biāo)域名。
DNS服務(wù)器接收網(wǎng)絡(luò)用戶發(fā)送的DNS查詢請(qǐng)求,并獲取該DNS查詢請(qǐng)求對(duì)應(yīng)的源IP地址及目標(biāo)域名;源IP地址是指用戶的IP地址,目標(biāo)域名是用戶請(qǐng)求解析的域名。例如,用戶要訪問(wèn)百度網(wǎng)頁(yè),則目標(biāo)域名是“baidu.com”。
S120,查詢預(yù)先創(chuàng)建的IP列表,得到與該源IP地址匹配的第一策略標(biāo)識(shí)集。
該IP列表包含DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的源IP信息及每條源IP信息對(duì)應(yīng)的策略標(biāo)識(shí)。
本發(fā)明中的IP列表是將DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的原始IP列表合并得到,并記錄合并后每個(gè)IP段對(duì)應(yīng)的策略標(biāo)識(shí),如果一個(gè)IP段對(duì)應(yīng)多個(gè)策略標(biāo)識(shí),則按策略優(yōu)先級(jí)由高到低的順序進(jìn)行排序。
DNS策略通過(guò)DNS服務(wù)器中的View功能配置,一個(gè)DNS策略對(duì)應(yīng)一個(gè)View,因此,策略標(biāo)識(shí)可以采用View_id表示。
查詢?cè)揑P列表,找到與該源IP地址匹配的策略標(biāo)識(shí)集,記為第一策略標(biāo)識(shí)集。
S130,查詢預(yù)先創(chuàng)建的域名列表,得到與該目標(biāo)域名匹配的第二策略標(biāo)識(shí)集。
該域名列表包含DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的域名及每個(gè)域名對(duì)應(yīng)的策略標(biāo)識(shí)。
本發(fā)明中的域名列表是將DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的原始域名列表合并得到,并記錄合并后每個(gè)域名對(duì)應(yīng)的策略標(biāo)識(shí),如果一個(gè)域名對(duì)應(yīng)多個(gè)策略標(biāo)識(shí),則按域名最長(zhǎng)匹配原則對(duì)域名對(duì)應(yīng)的策略標(biāo)識(shí)進(jìn)行排序。
查詢?cè)撚蛎斜?,找到與目標(biāo)域名匹配的策略標(biāo)識(shí)集,記為第二策略標(biāo)識(shí)集。
S140,確定所述第一策略標(biāo)識(shí)集與所述第二策略標(biāo)識(shí)集中的相同策略標(biāo)識(shí)所對(duì)應(yīng)的策略為目標(biāo)策略。
查找第一策略標(biāo)識(shí)集與第二策略標(biāo)識(shí)集中相同的策略標(biāo)識(shí),并確定該策略標(biāo)識(shí)對(duì)應(yīng)的策略為目標(biāo)策略。
在本發(fā)明一種可能的實(shí)現(xiàn)方式中,如果第一策略標(biāo)識(shí)集與第二策略標(biāo)識(shí)集中包含相同策略標(biāo)識(shí)的數(shù)量有多個(gè)時(shí),確定優(yōu)先級(jí)最高的策略標(biāo)識(shí)對(duì)應(yīng)的策略為目標(biāo)策略。
域名列表中的策略優(yōu)先級(jí)按照域名最長(zhǎng)匹配原則得到,因此,可能存在第一策略標(biāo)識(shí)集與第二策略標(biāo)識(shí)集中匹配得到的相同策略標(biāo)識(shí)所對(duì)應(yīng)的優(yōu)先級(jí)可能不同,例如,兩個(gè)策略標(biāo)識(shí)集中匹配得到的相同策略標(biāo)識(shí)分別是View0和View2。IP列表中View0的優(yōu)先級(jí)高于View2的優(yōu)先級(jí),但在域名列表中View2的優(yōu)先級(jí)高于View0的優(yōu)先級(jí),此時(shí),優(yōu)先滿足域名需求,最終的目標(biāo)View為View2。
本實(shí)施例提供的基于DNS視圖的DNS策略解析方法,接收到用戶發(fā)送的DNS查詢請(qǐng)求后,獲取源IP地址及目標(biāo)域名;然后,查詢IP列表得到與該源IP地址匹配的第一策略標(biāo)識(shí)集,該IP列表包含DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的源IP信息及每條源IP信息對(duì)應(yīng)的策略標(biāo)識(shí);接著,查詢域名列表,得到與該目標(biāo)域名匹配的第二策略標(biāo)識(shí)集,該域名列表包含DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的域名及每個(gè)域名對(duì)應(yīng)的策略標(biāo)識(shí)。再比較第一策略標(biāo)識(shí)集與第二策略標(biāo)識(shí)集中的策略標(biāo)識(shí),確定兩個(gè)標(biāo)識(shí)集中的相同策略標(biāo)識(shí)對(duì)應(yīng)的策略為目標(biāo)策略。該方法中的IP列表和域名列表分別包含DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的IP信息和域名,只需查詢一個(gè)IP列表和一個(gè)域名列表,再比較第一策略標(biāo)識(shí)集合第二策略標(biāo)識(shí)集,即可獲得目標(biāo)策略。而不是遍歷每個(gè)策略的原始IP列表及原始域名列表,大大提高了獲得查詢效率,進(jìn)而減少了用戶等待DNS解析的時(shí)間,提高了用戶體驗(yàn)。
請(qǐng)參見(jiàn)圖2,示出了本發(fā)明實(shí)施例另一種基于DNS視圖的DNS策略解析方法的流程圖,本實(shí)施例將著重介紹創(chuàng)建IP列表和域名列表的過(guò)程。
如圖2所示,該方法在圖1所示實(shí)施例的基礎(chǔ)上,還包括以下步驟:
S210,獲取DNS服務(wù)器中各個(gè)DNS策略對(duì)應(yīng)的原始IP列表,以及各個(gè)原始IP列表對(duì)應(yīng)的策略標(biāo)識(shí)。
DNS策略由DNS服務(wù)器的用戶進(jìn)行配置,用戶配置DNS策略時(shí),至少要配置該DNS策略對(duì)應(yīng)的源IP信息及域名,因此,一個(gè)DNS策略對(duì)應(yīng)一個(gè)原始IP列表及一個(gè)原始域名列表。
S220,將各個(gè)原始IP列表中的源IP信息進(jìn)行合并,并對(duì)應(yīng)記錄合并后的每條源IP信息對(duì)應(yīng)的策略標(biāo)識(shí),得到IP列表。
將每個(gè)DNS策略對(duì)應(yīng)的原始IP列表合并為一個(gè)IP列表,具體的,將各個(gè)原始IP列表所包含的重復(fù)IP段進(jìn)行合并,記錄該IP段在不同原始IP列表中對(duì)應(yīng)的策略標(biāo)識(shí),并按照策略優(yōu)先級(jí)由高到低的順序?qū)⒉呗詷?biāo)識(shí)進(jìn)行排序。
對(duì)于各個(gè)原始IP列表所包含的具有包含關(guān)系的IP段,將包含IP地址多的IP段根據(jù)被包含的IP段進(jìn)行拆分,并分別記錄拆分后各個(gè)IP段對(duì)應(yīng)的策略標(biāo)識(shí),且同一IP段對(duì)應(yīng)多個(gè)策略標(biāo)識(shí)時(shí),按照策略優(yōu)先級(jí)由高到低的順序?qū)Σ呗詷?biāo)識(shí)進(jìn)行排序。
例如,請(qǐng)參見(jiàn)圖3,示出了本發(fā)明實(shí)施例一種DNS策略配置實(shí)例的示意圖。
如圖3所示,每個(gè)View同時(shí)包含一個(gè)原始IP列表和一個(gè)原始域名列表,原始IP列表和原始域名列表之間是“邏輯和”關(guān)系,即,同時(shí)匹配該View對(duì)應(yīng)的原始IP列表和原始域名列表時(shí),才確認(rèn)與該View匹配。
View0:原始IP列表為1.1.1.1/24、2.2.2.2/24、3.3.3.3/24;原始域名列表為cn.;策略內(nèi)容為轉(zhuǎn)發(fā)到IP1。
View1:原始IP列表為2.2.2.2/24;原始域名列表為bbb.cn、aaa.cn、ccc.cn;策略內(nèi)容為丟棄;
View2:原始IP列表為4.4.4.4/24、1.1.1.1/16;原始域名列表為com.cn;策略內(nèi)容為轉(zhuǎn)發(fā)到IP2。
分析圖3所示的配置示例可知,DNS策略優(yōu)先級(jí)由高到低依次為:View0、View1、View2、……、Viewn。
View0和view1的IP列表中都包含2.2.2.2/24,2.2.2.2/24對(duì)應(yīng)兩個(gè)View,分別是View 0和View1;2.2.2.0~2.2.2.255就是2.2.2.2/24,因此,2.2.2.0~2.2.2.255對(duì)應(yīng)的策略優(yōu)先級(jí)由高到低排列View 0、View1;
View0包含1.1.1.1/24,view3包含1.1.1.1/16,1.1.1.1/16和1.1.1.1/24重復(fù)的部分為1.1.1.1/24網(wǎng)段,所以將1.1.1.1/16拆分成三個(gè)網(wǎng)段,1.1.0.0~1.1.0.255,1.1.1.0~1.1.1.255,1.1.2.0~1.1.255.255;
其中,1.1.1.0~1.1.1.255就是1.1.1.1/24,該網(wǎng)段對(duì)應(yīng)View0、View2;1.1.0.0~1.1.0.255和1.1.2.0~1.1.255.255均對(duì)應(yīng)View2。
3.3.3.0~3.3.3.255就是3.3.3.3/24,因此,3.3.3.0~3.3.3.255對(duì)應(yīng)View0;
4.4.4.0~4.4.4.255就是4.4.4.4/24,因此,4.4.4.0~4.4.4.255對(duì)應(yīng)view2。
經(jīng)過(guò)對(duì)圖3所示的DNS策略配置示例中的原始IP列表進(jìn)行合并后,得到圖4所示的IP列表。
S230,獲取所述DNS服務(wù)器中各個(gè)DNS策略對(duì)應(yīng)的原始域名列表,以及各個(gè)所述原始域名列表對(duì)應(yīng)的策略標(biāo)識(shí)。
每個(gè)DNS策略對(duì)應(yīng)一個(gè)原始域名列表,每個(gè)原始域名列表包含至少一個(gè)域名。獲取DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的原始域名列表。
S240,將各個(gè)所述原始域名列表中的域名進(jìn)行合并,并對(duì)應(yīng)記錄合并后的每個(gè)域名對(duì)應(yīng)的策略標(biāo)識(shí),得到所述域名列表。
將各個(gè)所述原始域名列表中包含的相同域名進(jìn)行合并,并按照策略優(yōu)先級(jí)由高到低的順序記錄相同的域名對(duì)應(yīng)的策略標(biāo)識(shí)。
對(duì)于各不相同的域名中的任一域名,查找所有原始域名列表中是否存在該域名對(duì)應(yīng)的父域名,如果存在,則在該域名對(duì)應(yīng)策略標(biāo)識(shí)之后記錄其父域名對(duì)應(yīng)的策略標(biāo)識(shí),且該域名對(duì)應(yīng)策略的優(yōu)先級(jí)高于其父域名對(duì)應(yīng)策略的優(yōu)先級(jí)。
仍以圖3所示的DNS策略配置示例為例說(shuō)明原始域名列表合并的過(guò)程,如圖3所示,View0對(duì)應(yīng)的域名是cn.;View1對(duì)應(yīng)的域名是bbb.cn、aaa.cn、ccc.cn;View2對(duì)應(yīng)的域名是com.cn。
view0配置了cn、view2配置了com.cn,其中,com.cn是cn的子域名,父域名可以包含子域名,但是按照域名最長(zhǎng)匹配,com.cn優(yōu)先匹配view2然后才去匹配包含其父域名cn的view0,因此,com.cn匹配View的順序是View2、View0。
同理,bbb.cn、aaa.cn、ccc.cn均分別匹配View1、View0。
經(jīng)過(guò)對(duì)圖3所示的DNS策略配置示例中的原始域名列表進(jìn)行合并后,得到圖5所示的域名列表。
假設(shè)共有n個(gè)DNS策略,且每個(gè)原始IP列表中包含n個(gè)IP段,每個(gè)原始域名列表中包含n個(gè)域名;n原始IP列表沒(méi)有重復(fù)的IP段,n個(gè)原始域名沒(méi)有重復(fù)的域名,則合并后的IP列表包含n*n個(gè)IP段,合并后的域名列表包含n*n個(gè)域名,因此,查詢目標(biāo)策略的復(fù)雜度為O(4(LOG2(n)))遠(yuǎn)遠(yuǎn)低于O(n*(LOG2(n)+LOG2(n)))。
在實(shí)際應(yīng)用中,原始IP列表和原始域名列表都會(huì)有重復(fù)的情況,例如圖3所示的示例原始IP列表的合并過(guò)程中需要拆分、合并;原始域名列表也會(huì)存在域名、子域名。因而,實(shí)際的復(fù)雜度并不是上述簡(jiǎn)單的O(4(LOG2(n))),但在配置大量DNS策略的場(chǎng)景下,使用該方法能提高查詢性能。
需要說(shuō)明的是,合并得到的IP列表及域名列表,可以采用二叉樹(shù)方式進(jìn)行存儲(chǔ),為合并后的IP列表構(gòu)建二叉樹(shù),二叉樹(shù)中節(jié)點(diǎn)的key值為IP地址/IP段(記錄起始地址、結(jié)束地址),節(jié)點(diǎn)的info值為View_id。為合并后的域名列表構(gòu)建二叉樹(shù),二叉樹(shù)中節(jié)點(diǎn)的key值為域名,info值為View_id。
在本發(fā)明的其它實(shí)施方式中,還可以采用數(shù)組、hash表等其它存儲(chǔ)方式IP列表或域名列表。
本實(shí)施例提供的基于DNS視圖的DNS策略解析方法,將每個(gè)DNS策略對(duì)應(yīng)的原始IP列表合并成一個(gè)IP列表,以及,將每個(gè)DNS策略對(duì)應(yīng)的原始域名列表合并成一個(gè)域名列表。該方法將二元(IP和域名)匹配(IP和域名)轉(zhuǎn)化為兩個(gè)一元匹配,大大提高查詢效率,進(jìn)而提高DNS服務(wù)器的性能。該方法適用于DNS策略較多場(chǎng)景下的二元匹配,且DNS策略越多,性能提升越明顯;而且,該方法實(shí)施方便。
下面以兩個(gè)具體實(shí)例說(shuō)明本申請(qǐng)?zhí)峁┑幕贒NS視圖的DNS策略解析方法的過(guò)程。
請(qǐng)參見(jiàn)圖6,示出了本發(fā)明實(shí)施例一種DNS策略解析實(shí)例的示意圖,本實(shí)例中,源IP地址是3.3.3.0,目標(biāo)域名是b.com.cn。
從IP列表中找到與3.3.3.0匹配的第一策略標(biāo)識(shí)集,3.3.3.0屬于IP列表中[3.3.3.0,3.3.3.255]網(wǎng)段的IP地址,因此,與3.3.3.0匹配的View是View0;
從域名列表中找到與b.com.cn匹配的第二策略標(biāo)識(shí)集,b.com.cn的父域名是com.cn,因此,與b.com.cn匹配的View是View2、View0,且View2的優(yōu)先級(jí)高于View0的優(yōu)先級(jí)。
從第一策略標(biāo)識(shí)集{View0}和第二策略標(biāo)識(shí)集{View2,View0}中查找相同的策略標(biāo)識(shí)為View0。
最終,確定與3.3.3.0、b.com.cn匹配的策略是View0對(duì)應(yīng)的策略。
請(qǐng)參見(jiàn)圖7,示出了本發(fā)明實(shí)施例另一種DNS策略解析實(shí)例的示意圖,本實(shí)例中,源IP地址是1.1.1.1,目標(biāo)域名是com.cn。
從IP列表中查找與1.1.1.1匹配的第一策略標(biāo)識(shí)集,1.1.1.1屬于[1.1.1.0,1.1.1.255]網(wǎng)段,因此,與1.1.1.1匹配的View是View0、View2;
從域名列表中找到與com.cn匹配的第二策略標(biāo)識(shí)集是View2、View0,且View2的優(yōu)先級(jí)高于View0的優(yōu)先級(jí)。
優(yōu)先滿足域名匹配需求,最終確定與1.1.1.1和com.cn匹配的策略是View2對(duì)應(yīng)的策略。
對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書(shū)中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
相應(yīng)于上述的基于DNS視圖的DNS策略解析方法實(shí)施例,本發(fā)明還提供了基于DNS視圖的DNS策略解析裝置實(shí)施例。
請(qǐng)參見(jiàn)圖8,示出了本發(fā)明實(shí)施例一種基于DNS視圖的DNS策略解析裝置的框圖,該裝置應(yīng)用于DNS服務(wù)器中,如圖8所示,該裝置包括:第一獲取模塊110、第一查詢模塊120、第二查詢模塊130和確定模塊140。
第一獲取模塊110,用于獲取接收到的DNS查詢請(qǐng)求對(duì)應(yīng)的源IP地址及目標(biāo)域名。
第一查詢模塊120,用于查詢預(yù)先創(chuàng)建的IP列表,得到與該源IP地址匹配的第一策略標(biāo)識(shí)集。
該IP列表包含所述DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的源IP信息及每條所述源IP信息對(duì)應(yīng)的策略標(biāo)識(shí)。
第二查詢模塊130,用于查詢預(yù)先創(chuàng)建的域名列表,得到與該目標(biāo)域名匹配的第二策略標(biāo)識(shí)集。
該域名列表包含DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的域名及每個(gè)域名對(duì)應(yīng)的策略標(biāo)識(shí)。
確定模塊140,用于確定第一策略標(biāo)識(shí)集與第二策略標(biāo)識(shí)集中的相同策略標(biāo)識(shí)所對(duì)應(yīng)的策略為目標(biāo)策略。
在本發(fā)明一種可能的實(shí)現(xiàn)方式中,如果第一策略標(biāo)識(shí)集與第二策略標(biāo)識(shí)集中包含相同策略標(biāo)識(shí)的數(shù)量有多個(gè)時(shí),確定優(yōu)先級(jí)最高的策略標(biāo)識(shí)對(duì)應(yīng)的策略為目標(biāo)策略。
如圖9所示,該確定模塊140包括:查找子模塊141和第一確定子模塊142。
查找子模塊141,用于查找第一策略標(biāo)識(shí)集和第二策略標(biāo)識(shí)集中的相同策略標(biāo)識(shí)。
第一確定子模塊142,用于當(dāng)相同策略標(biāo)識(shí)的數(shù)量為至少兩個(gè)時(shí),確定全部的相同策略標(biāo)識(shí)中優(yōu)先級(jí)最高的策略標(biāo)識(shí)所對(duì)應(yīng)的策略為目標(biāo)策略。
在本發(fā)明一種應(yīng)用場(chǎng)景中,第一策略標(biāo)識(shí)集和第二策略標(biāo)識(shí)集中的相同的策略標(biāo)識(shí)的優(yōu)先級(jí)分別相同,此種應(yīng)用場(chǎng)景下,選取優(yōu)先級(jí)最高的策略標(biāo)識(shí)為目標(biāo)策略。
在本發(fā)明另一種應(yīng)用場(chǎng)景中,域名列表中的策略優(yōu)先級(jí)按照域名最長(zhǎng)匹配原則得到,因此,可能存在第一策略標(biāo)識(shí)集與第二策略標(biāo)識(shí)集中匹配得到的相同策略標(biāo)識(shí)所對(duì)應(yīng)的優(yōu)先級(jí)可能不同。此種應(yīng)用場(chǎng)景下,確定模塊140包括第二確定子模塊,該第二確定子模塊優(yōu)先滿足域名匹配需求,最終確定與目標(biāo)域名匹配的策略標(biāo)識(shí)集中的第一個(gè)策略標(biāo)識(shí)對(duì)應(yīng)的策略為目標(biāo)策略。
本實(shí)施例提供的基于DNS視圖的DNS策略解析裝置,接收到用戶發(fā)送的DNS查詢請(qǐng)求后,利用第一獲取模塊獲取源IP地址及目標(biāo)域名;然后,由第一查詢模塊查詢IP列表得到與該源IP地址匹配的第一策略標(biāo)識(shí)集,該IP列表包含DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的源IP信息及每條源IP信息對(duì)應(yīng)的策略標(biāo)識(shí);接著,由第二查詢模塊查詢域名列表,得到與該目標(biāo)域名匹配的第二策略標(biāo)識(shí)集,該域名列表包含DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的域名及每個(gè)域名對(duì)應(yīng)的策略標(biāo)識(shí)。再由確定模塊比較第一策略標(biāo)識(shí)集與第二策略標(biāo)識(shí)集中的策略標(biāo)識(shí),確定兩個(gè)標(biāo)識(shí)集中的相同策略標(biāo)識(shí)對(duì)應(yīng)的策略為目標(biāo)策略。該方法中的IP列表和域名列表分別包含DNS服務(wù)器中所有DNS策略對(duì)應(yīng)的IP信息和域名,只需查詢一個(gè)IP列表和一個(gè)域名列表,再比較第一策略標(biāo)識(shí)集合第二策略標(biāo)識(shí)集,即可獲得目標(biāo)策略。而不是遍歷每個(gè)策略的原始IP列表及原始域名列表,大大提高了獲得查詢效率,進(jìn)而減少了用戶等待DNS解析的時(shí)間,提高了用戶體驗(yàn)。
請(qǐng)參見(jiàn)圖10,示出了本發(fā)明實(shí)施例另一種基于DNS視圖的DNS策略解析裝置的框圖,本實(shí)施例將著重介紹創(chuàng)建IP列表和域名列表的過(guò)程。如圖10所示,該裝置在圖8所示實(shí)施例的基礎(chǔ)上還包括:第二獲取模塊210、第一合并模塊220、第三獲取模塊230和第二合并模塊240。
該第二獲取模塊210,用于獲取DNS服務(wù)器中各個(gè)DNS策略對(duì)應(yīng)的原始IP列表,以及各個(gè)原始IP列表對(duì)應(yīng)的策略標(biāo)識(shí);
該第一合并模塊220,用于將各個(gè)原始IP列表中的源IP信息進(jìn)行合并,并對(duì)應(yīng)記錄合并后的每條源IP信息對(duì)應(yīng)的策略標(biāo)識(shí),得到IP列表。
在本發(fā)明一種可能的實(shí)現(xiàn)方式中,如圖11所示,所述第一合并模塊220包括:第一合并子模塊221和拆分子模塊222。
第一合并子模塊221,用于將各個(gè)所述原始IP列表中包含相同IP段的源IP信息進(jìn)行合并,記錄所述相同IP段對(duì)應(yīng)的所有策略標(biāo)識(shí),并按策略優(yōu)先級(jí)由高到低的順序進(jìn)行排序;
拆分子模塊222,用于將各個(gè)所述原始IP列表中具有包含關(guān)系的IP段,根據(jù)所包含的IP段進(jìn)行拆分,并分別記錄拆分后的子IP段對(duì)應(yīng)的策略標(biāo)識(shí)。
該第三獲取模塊230,用于獲取DNS服務(wù)器中各個(gè)DNS策略對(duì)應(yīng)的原始域名列表,以及各個(gè)原始域名列表對(duì)應(yīng)的策略標(biāo)識(shí);
該第二合并模塊240,用于將各個(gè)原始域名列表中的域名進(jìn)行合并,并對(duì)應(yīng)記錄合并后的每個(gè)域名對(duì)應(yīng)的策略標(biāo)識(shí),得到域名列表。
第二合并模塊包括第二合并子模塊,用于將各個(gè)原始域名列表中包含的相同域名進(jìn)行合并,并按照策略優(yōu)先級(jí)由高到低的順序記錄該相同域名對(duì)應(yīng)的策略標(biāo)識(shí)。
本實(shí)施例提供的基于DNS視圖的DNS策略解析裝置,將每個(gè)DNS策略對(duì)應(yīng)的原始IP列表合并成一個(gè)IP列表,以及,將每個(gè)DNS策略對(duì)應(yīng)的原始域名列表合并成一個(gè)域名列表。該裝置將二元(IP和域名)匹配(IP和域名)轉(zhuǎn)化為兩個(gè)一元匹配,大大提高查詢效率,進(jìn)而提高DNS服務(wù)器的性能。該方法適用于DNS策略較多場(chǎng)景下的二元匹配,且DNS策略越多,性能提升越明顯;而且,該裝置實(shí)施方便。
需要說(shuō)明的是,本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。對(duì)于裝置類(lèi)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
最后,還需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
對(duì)所公開(kāi)的實(shí)施例的上述說(shuō)明,使本領(lǐng)域技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開(kāi)的原理和新穎特點(diǎn)相一致的最寬的范圍。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。