国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于雙重檢索修正域名系統(tǒng)的最長(zhǎng)匹配規(guī)則

2023-09-18 02:23:52趙寶康李安藝
關(guān)鍵詞:域名雙重號(hào)碼

周 聰,陶 靜,趙寶康,李安藝

(國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院,湖南 長(zhǎng)沙 410073)

1 引言

隨著互聯(lián)網(wǎng)的快速發(fā)展,為了方便人們利用域名形式訪問網(wǎng)絡(luò)中的主機(jī),域名服務(wù)系統(tǒng)DNS(Domain Name System)應(yīng)運(yùn)而生。RFC1034[1]取代之前的RFC882系統(tǒng)地描述了DNS的基本思想(標(biāo)志著DNS的誕生),其原理是客戶端根據(jù)查詢得到的資源記錄類型和關(guān)聯(lián)數(shù)據(jù)進(jìn)行下一步的通信。

Linux系統(tǒng)的DNS服務(wù)由BIND (Berkeley Internet Name Domain)軟件實(shí)現(xiàn),目前95%以上的DNS服務(wù)器都是由其搭建的[2]。中小型企業(yè)也可以選擇微軟公司的Windows server系列搭建域名服務(wù)器。目前對(duì)域名解析系統(tǒng)的研究主要集中在安全性方面[3-6],也有文獻(xiàn)將其與大數(shù)據(jù)方法結(jié)合后實(shí)現(xiàn)數(shù)據(jù)可視化[7],還有去中心化架構(gòu)的DNS系統(tǒng)設(shè)計(jì)[8]。

在安全性方面,針對(duì)隱私保護(hù)問題,由于DNS基于明文傳輸數(shù)據(jù),使用加密技術(shù)將DNS請(qǐng)求與響應(yīng)的數(shù)據(jù)包進(jìn)行加密,從而保證數(shù)據(jù)包不被監(jiān)聽和利用,其代表性技術(shù)包括DoT(DNS-over-TLS)[9]、DoH(DNS-over-HTTPS)[10]、DNS-over-QUIC(Quick UDP Internet Connections)[11]和DNSCrypt[12]。在性能優(yōu)化設(shè)計(jì)方面,張偉等[13]設(shè)計(jì)了一種支持多進(jìn)程共享的高效哈希表,用于存儲(chǔ)域名數(shù)據(jù)、實(shí)現(xiàn)域名快速查詢和解決緩存大量域名時(shí)的哈希沖突問題;還依據(jù)域名和資源記錄類型預(yù)先構(gòu)建應(yīng)答數(shù)據(jù),對(duì)重復(fù)域名數(shù)據(jù)進(jìn)行壓縮,加快DNS請(qǐng)求處理時(shí)構(gòu)建應(yīng)答報(bào)文的速度,提高緩存服務(wù)器的處理性能。秦豐林等[14]根據(jù)雙棧環(huán)境的特點(diǎn),設(shè)計(jì)了IPv6協(xié)議的地址自動(dòng)配置機(jī)制,為用戶終端無感知地自動(dòng)配置DNSv6服務(wù)器,通過增加DNS配置的冗余方式來提高DNS服務(wù)的可靠性。

DNSSEC(Domain Name System SECurity extensions)[15]協(xié)議引入了數(shù)字簽名技術(shù),通過對(duì)響應(yīng)數(shù)據(jù)進(jìn)行簽名可以驗(yàn)證響應(yīng)結(jié)果的正確性。針對(duì)實(shí)施條件中存在的安全隱患,Bau等[16]模擬了DNSSEC中的加解密操作并成功發(fā)現(xiàn)了一些偽造的漏洞。Herzberg等[17]分析了DNSSEC面臨的挑戰(zhàn)和存在的不足。Goldberg等[18]的研究表明DNSSEC部署很容易受到區(qū)域枚舉攻擊。

DNS技術(shù)旨在幫忙用戶以容易記憶的方式檢索網(wǎng)絡(luò)資源,從互聯(lián)網(wǎng)出現(xiàn)之初使用IP地址通信,到目前的計(jì)算機(jī)網(wǎng)絡(luò)尋訪定位方式,該項(xiàng)技術(shù)已取得了很大的發(fā)展,DNS域名服務(wù)被應(yīng)用于更多的領(lǐng)域。彭巍等[19]基于Hadoop技術(shù)分析運(yùn)營(yíng)商的DNS海量數(shù)據(jù),并對(duì)分析的結(jié)果進(jìn)行闡述,通過報(bào)表、圖形等多種方式進(jìn)行呈現(xiàn),實(shí)現(xiàn)DNS數(shù)據(jù)多維度分析。蔡榮彥等[20]提出了基于域名關(guān)聯(lián)的惡意移動(dòng)應(yīng)用檢測(cè)方法,以DNS域名為檢測(cè)分析對(duì)象識(shí)別網(wǎng)絡(luò)流量中的惡意域名,利用DNS請(qǐng)求流量的時(shí)間特征尋找惡意域名的關(guān)聯(lián)域名,并將關(guān)聯(lián)域名與文本分類樣本庫(kù)進(jìn)行對(duì)比,確定惡意移動(dòng)應(yīng)用的名稱。Cui等[21]利用數(shù)據(jù)挖掘的方法對(duì)域名的日志數(shù)據(jù)進(jìn)行分析,從而檢測(cè)出異常。

在DNS去中心化設(shè)計(jì)方面,朱國(guó)庫(kù)等[22]設(shè)計(jì)了根域去中心化的方案,從而形成聯(lián)盟來對(duì)根服務(wù)器的數(shù)據(jù)進(jìn)行解析;朱建明等[23]提出了利用區(qū)塊鏈來構(gòu)建數(shù)據(jù)動(dòng)態(tài)認(rèn)證的模型;趙赫等[24]提出用區(qū)塊鏈來保護(hù)數(shù)據(jù)。

ENUM(Electronic Numbers to URI Mapping)是電話號(hào)碼映射工作組制定的協(xié)議[25,26],它定義了將E.164號(hào)碼映射為域名的規(guī)則,以及在互聯(lián)網(wǎng)DNS系統(tǒng)中存儲(chǔ)該域名信息的方法。每個(gè)E.164號(hào)碼轉(zhuǎn)化成的域名對(duì)應(yīng)系統(tǒng)的唯一資源標(biāo)識(shí),從而使其成為可以在互聯(lián)網(wǎng)中使用的網(wǎng)絡(luò)地址。采用ENUM技術(shù),通過電話號(hào)碼可以獲得用戶郵件、IP傳真和個(gè)人網(wǎng)頁(yè)等多種信息。

ENUM技術(shù)是當(dāng)前計(jì)算機(jī)網(wǎng)絡(luò)資源尋址方式的熱點(diǎn),在三網(wǎng)融合中被大量應(yīng)用[27]。該技術(shù)的核心分為3部分:電話號(hào)碼預(yù)處理、DNS配置和ENUM解析。

在電話號(hào)碼預(yù)處理階段:當(dāng)用戶輸入的號(hào)碼為“+86-01-234567”時(shí),去掉數(shù)字以外的其它符號(hào),并在數(shù)字之前加“.”,得到“8.6.0.1.2.3.4.5.6.7”,將其反轉(zhuǎn)并添加后綴得到符號(hào)串“7.6.5.4.3.2.1.0.6.8.e164.arpa”。在DNS配置階段:上述字符串按NAPTR(Naming Authority PoinTeR)記錄[1]的格式存儲(chǔ)于區(qū)域文件。在ENUM解析階段:當(dāng)用戶使用支持ENUM技術(shù)的設(shè)備輸入電話號(hào)碼后,該設(shè)備完成號(hào)碼預(yù)處理,并將字符串按DNS協(xié)議發(fā)出,從DNS服務(wù)器得到與此ENUM相應(yīng)的唯一資源標(biāo)識(shí)集合,用戶根據(jù)自身的需求選擇相關(guān)的資源,繼續(xù)執(zhí)行相應(yīng)的協(xié)議完成操作。如:用戶在Outlook Express輸入“+86-01-234567”,DNS服務(wù)器將對(duì)應(yīng)的“Sip:xxx”和“Mailto:xxx”等資源標(biāo)識(shí)給用戶,用戶若選擇“Mailto:xxx”,可與電話號(hào)碼為“+86-01-234567”的使用者進(jìn)行郵件溝通。

2 最長(zhǎng)匹配規(guī)則

ENUM支持在NAPTR記錄中使用符號(hào)“*”,以實(shí)現(xiàn)解析過程模糊匹配。模糊匹配過程依據(jù)最長(zhǎng)匹配策略,如下所示:

以BIND(版本9.7.3)為例,在DNS配置階段,使用4個(gè)號(hào)碼:1*,12,13*,141。注冊(cè)NAPTR記錄如下:

*.1.e164.arpa.IN NAPTR 1 1 “U” “sip+E2U” “resolving result:A”

2.1.e164.arpa.IN NAPTR 1 1 “U” “sip+E2U” “resolving result:B”

*.3.1.e164.arpa.IN NAPTR 1 1 “U” “sip+E2U” “resolving result:C”

1.4.1.e164.arpa.IN NAPTR 1 1 “U” “sip+E2U” “resolving result:D”

當(dāng)用戶需要查詢號(hào)碼1311時(shí),按最長(zhǎng)匹配規(guī)則,域名系統(tǒng)BIND返回解析結(jié)果C;當(dāng)用戶查詢號(hào)碼13,14或者142時(shí),域名系統(tǒng)BIND返回“無結(jié)果”,以號(hào)碼142為例,按最長(zhǎng)匹配規(guī)則,用戶應(yīng)該收到解析結(jié)果A。

為進(jìn)一步驗(yàn)證RFC關(guān)于最長(zhǎng)匹配規(guī)則的定義,在Windows server 2003上注冊(cè)相同號(hào)碼進(jìn)行解析,兩者的解析結(jié)果之間存在差異,詳細(xì)如表1所示。由此可知:BIND系統(tǒng)的最長(zhǎng)匹配規(guī)則功能不符合RFC描述。

Table 1 BIND and Windows server’s domain name resolution

通過比較不同的版本BIND-9.8、BIND-9.9和BIND-9.17.18,其解析的結(jié)果與BIND-9.7.3的一致,即后續(xù)版本的最長(zhǎng)匹配規(guī)則功能亦不符合RFC描述。

3 雙重檢索規(guī)則

根據(jù)表1的解析過程,可將結(jié)果分為4類:

(1)Ⅰ類(表1的第2個(gè)和第8個(gè)用例):在DNS系統(tǒng)中明確注冊(cè)的記錄,如號(hào)碼12和141,BIND與Windows server均能得到正確的解析結(jié)果。

(2)Ⅱ類(表1的第6個(gè)和第7個(gè)用例):在DNS系統(tǒng)中注冊(cè)通配符“*”記錄,可匹配變長(zhǎng)的號(hào)碼,如果已注冊(cè)13*,則131和1311將被解析為其結(jié)果。

(3)Ⅲ類(表1的第3個(gè)、第4個(gè)和第9個(gè)用例):按RFC1034關(guān)于通配符的定義,當(dāng)出現(xiàn)“*”時(shí),解析結(jié)果應(yīng)滿足模糊檢索的要求,但BIND與Windows server的解析結(jié)果存在差異。

從用戶的角度來看,最長(zhǎng)匹配規(guī)則更趨向于認(rèn)同Windows server的解析結(jié)果,與RFC1034的描述一致。

(4)Ⅳ類(表1的第1個(gè)和第5個(gè)用例):不滿足上述3種場(chǎng)景,即未注冊(cè)的記錄。

針對(duì)第Ⅲ類情況,本文提出了雙重檢索匹配算法,即:在BIND系統(tǒng)中,當(dāng)號(hào)碼E無法獲得解析結(jié)果時(shí),系統(tǒng)生成一個(gè)新的號(hào)碼E′,以E′重新進(jìn)行檢索,最終結(jié)果返回至用戶,具體流程如圖1所示。

Figure 1 Search process comparison

圖1a為原BIND系統(tǒng)的檢索流程,圖1b為改進(jìn)后的檢索流程。從圖1可知,當(dāng)號(hào)碼E的解析結(jié)果不存在時(shí),將生成新號(hào)碼E′再次檢索,故稱為雙重檢索規(guī)則。

由于系統(tǒng)在檢索前,需要保存檢索的內(nèi)容,所以在第2次檢索時(shí),需要先保持原號(hào)碼的檢索條件,重置新的檢索狀態(tài),執(zhí)行新號(hào)碼檢索后,恢復(fù)原號(hào)碼的檢索條件,并返回給用戶。

為提高2次檢索的效率,本文設(shè)計(jì)新號(hào)碼生成算法,如算法1所示。

算法1生成雙重檢索號(hào)碼E′

輸入:待檢測(cè)的號(hào)碼E。

輸出:新的號(hào)碼E′。

步驟1若號(hào)碼E不包含*,退出;否則執(zhí)行步驟2。

步驟2根據(jù)號(hào)碼E獲取區(qū)域文件名。

步驟3獲取區(qū)域文件中所有記錄,形成2個(gè)鏈表ts與tn,其中ts以“*” 開頭,tn以數(shù)字開頭。若ts為*.1和*.3.1,則分別對(duì)應(yīng)號(hào)碼1*和13*;若tn為2.1和1.4.1,則分別對(duì)應(yīng)號(hào)碼12和141。

步驟4若tn不為空,依次刪除號(hào)碼E的最低位,并與鏈表tn各項(xiàng)比較,如若存在相同項(xiàng),則置E′為空,跳轉(zhuǎn)至步驟6。若號(hào)碼E為123*,則與tn比較的字符串依次為2.1和1。

步驟5若ts不為空,依次將號(hào)碼E的最低位置為“*”,并與鏈表ts各項(xiàng)比較,若存在相同項(xiàng),則置E′為ts的當(dāng)前值,跳轉(zhuǎn)至步驟6。若號(hào)碼E為123*,則與ts比較的字符串依次為*.2.1和*.1。

步驟6清空鏈表ts和tn,關(guān)閉區(qū)域文件,返回E′。

4 雙重檢索過程實(shí)現(xiàn)

圖1b中的陰影部分通過調(diào)用原系統(tǒng)函數(shù)實(shí)現(xiàn),其它部分均在BIND系統(tǒng)的函數(shù)query_find中實(shí)現(xiàn)。

(1)存在記錄判斷。

此處為雙重檢索的入口,判斷記錄是否存在的標(biāo)志為變量result與type。第1次檢索完成后,result變量返回檢索結(jié)果。經(jīng)實(shí)驗(yàn)發(fā)現(xiàn),當(dāng)值為196611(針對(duì)141注冊(cè)后無法解析142的場(chǎng)景)或65628(針對(duì)141注冊(cè)后無法解析14的場(chǎng)景),且變量type的值為35(ENUM記錄類型的值)時(shí),需進(jìn)入圖1b的雙重檢索流程。

(2)保護(hù)號(hào)碼E的檢索條件。

號(hào)碼E的內(nèi)容(變量名為client→query.qname→ndate)與長(zhǎng)度(變量名為client→query.qname→length)分別存入臨時(shí)變量數(shù)據(jù)組t中。

(3)重置檢索狀態(tài)。

①清空第1次的檢索結(jié)果,將變量fname→ndata,fname→length,fname→label和fname→attributes置空或置零。

②將號(hào)碼E′的內(nèi)容和長(zhǎng)度分別賦值檢索變量client→query.qname→ndate和client→query.qname→length。

③為檢索數(shù)量(變量名為segment)、標(biāo)識(shí)位(變量名為client→query.qname→label)、偏移量(變量名為client→query.qname→offsets)賦初值。

(4)以號(hào)碼E′執(zhí)行檢索。

調(diào)用原BIND的檢索方法dns_db_find(),但當(dāng)前狀態(tài)下檢索的內(nèi)容從第1次的號(hào)碼E變成為E′。

(5)恢復(fù)號(hào)碼E檢索狀態(tài)。

以E′完成檢索,恢復(fù)至號(hào)碼E時(shí)的狀態(tài),將臨時(shí)變量t的內(nèi)容分別賦值給lient→query.qname→ndate和client→query.qname→length。

雙重檢索實(shí)際上是通過算法1找到了與號(hào)碼E最長(zhǎng)匹配的另一個(gè)新號(hào)碼E′,重新調(diào)用BIND的檢索方法得到新的結(jié)果,并恢復(fù)到原號(hào)碼E的情景返回給用戶,這一過程對(duì)用戶透明。

為了滿足BIND系統(tǒng)應(yīng)用DNSSEC[15]的要求,在重置初始化檢索狀態(tài)過程中將2個(gè)變量置為NULL即可,即node與rdateset→methods;其它變量與非DNSSEC處理過程一致。

5 實(shí)驗(yàn)驗(yàn)證

本文在BIND-9.7.3基礎(chǔ)上完成雙重檢索修改最長(zhǎng)匹配規(guī)則,對(duì)比前后2次的解析結(jié)果,如表2所示。

Table 2 Domain name resolutions of BIND after being modified

從表2可知,使用雙重檢索修正后,BIND的解析結(jié)果與Windows server 2003的解析結(jié)果一致,同時(shí)符合標(biāo)準(zhǔn)文獻(xiàn)RFC1034對(duì)通配符最長(zhǎng)匹配的定義。

使用DNS性能測(cè)試工具dnsperf對(duì)雙重檢索修正后的BIND服務(wù)進(jìn)行測(cè)試,其每秒查詢次數(shù)(并發(fā)數(shù))、響應(yīng)時(shí)間2項(xiàng)指標(biāo)與修正前的基本一致,因此,修正過程對(duì)性能影響可忽略不計(jì),詳細(xì)數(shù)據(jù)如表3所示。

Table 3 Performance of BIND before and after being modified

表3的前1~6列為dnsperf配置的參數(shù):C指定客戶端數(shù)量;Q限制每秒查詢數(shù)量;i指定查詢的間隔;符號(hào)“√”表示當(dāng)前參數(shù)值有效,且值為表頭第2行的方框內(nèi)容。表3的后2列為dnsperf測(cè)試結(jié)果,在上述3個(gè)參數(shù)選定的前提下,每個(gè)場(chǎng)景運(yùn)行100次,分別計(jì)算查詢消耗時(shí)間和每秒查詢次數(shù)的平均值。由于某些場(chǎng)景的查詢消耗時(shí)間為0,符號(hào)“/”表示查詢結(jié)果無法計(jì)算。

從表3可以看出,基于修改后的雙重檢索BIND服務(wù)與原服務(wù)性能在同一個(gè)量級(jí),兩者數(shù)值相差不大。

通過計(jì)算每秒查詢次數(shù)的兩者之差與兩者之和的比值,比較兩者在每秒查詢次數(shù)上的相對(duì)偏差,其結(jié)果如圖2所示。

Figure 2 Relative deviation of query times per second

從圖2可知,3個(gè)場(chǎng)景的偏差非常小,如〈c,i,Q〉=〈1,10,1000〉、〈c,i,Q〉=〈100,1,1〉、〈c,i,Q〉=〈100,10,1〉;2個(gè)場(chǎng)景的偏差較大,如〈c,i,Q〉=〈100,1,1000〉、〈c,i,Q〉=〈100,10,1000〉。

在用戶并發(fā)數(shù)與查詢總量增加的情況下,由于基于二次檢索的BIND服務(wù)查詢次數(shù)增加,性能與原BIND的偏差有所增長(zhǎng),相應(yīng)的性能有所下降,但都處于15%以下,性能影響不大。

6 結(jié)束語

BIND軟件在域名服務(wù)系統(tǒng)中占比很高,但實(shí)現(xiàn)最長(zhǎng)匹配功能時(shí)與RFC描述存在偏差,需要通過對(duì)比Windows server 解析結(jié)果進(jìn)一步確認(rèn)。本文在保持BIND原有架構(gòu)不變的基礎(chǔ)上,使用雙重檢索規(guī)則,修正后的BIND解析結(jié)果更符合RFC中關(guān)于最長(zhǎng)匹配規(guī)則的定義,同時(shí)不影響軟件性能。這種修改策略將為標(biāo)準(zhǔn)服務(wù)更多定制化需求提供了一種可行的方案。同時(shí),該系統(tǒng)已在實(shí)網(wǎng)中部署應(yīng)用。

猜你喜歡
域名雙重號(hào)碼
自然與成長(zhǎng)的雙重變奏
說號(hào)碼 知顏色
一個(gè)號(hào)碼,一個(gè)故事
猜出新號(hào)碼
化解“雙重目標(biāo)”之困
如何購(gòu)買WordPress網(wǎng)站域名及綁定域名
騰訊八百萬美元收購(gòu)域名
“雙重打擊”致恐龍滅絕
這個(gè)號(hào)碼很吉祥
小說月刊(2014年1期)2014-04-23 08:59:54
頂級(jí)域名爭(zhēng)奪戰(zhàn):ICANN放出1930個(gè)通用頂級(jí)域名,申請(qǐng)者有上千家
乐业县| 湟源县| 化州市| 屯昌县| 星子县| 临城县| 年辖:市辖区| 康马县| 兰考县| 射洪县| 新竹市| 安阳县| 奉节县| 天柱县| 昌平区| 盐城市| 进贤县| 永新县| 荣成市| 上栗县| 绥滨县| 闽清县| 北安市| 吉林市| 望都县| 巴南区| 亳州市| 喀喇| 浏阳市| 深泽县| 洛隆县| 舞阳县| 西安市| 井陉县| 奉新县| 元阳县| 朝阳区| 安阳市| 镇平县| 常宁市| 桂阳县|