王相林,陳國(guó)峰
(杭州電子科技大學(xué)計(jì)算機(jī)學(xué)院,浙江杭州310018)
從IPv4到IPv6的過(guò)渡已成必然趨勢(shì)。在過(guò)渡期間,為了保證IPv4與IPv6之間的互通性,IETF提出了一系列相關(guān)的過(guò)渡機(jī)制,最新的研究成果就包括基于SIIT(the stateless IP/ICMP translation,無(wú)狀態(tài)IP/ICMP翻譯技術(shù))的IVI無(wú)狀態(tài)地址翻譯機(jī)制[1-3]。在IVI過(guò)渡方案中DNS的設(shè)計(jì)與部署十分重要,但在實(shí)際部署過(guò)程中會(huì)暴露出IVI6(i)主機(jī)無(wú)法訪問(wèn)雙棧服務(wù)器及IPv6環(huán)境中的雙棧節(jié)點(diǎn)對(duì)IPv4的A類(lèi)型DNS查詢報(bào)文得不到正確回復(fù)的問(wèn)題。該文主要通過(guò)分析現(xiàn)有IVI過(guò)渡方案中域名解析模塊[4、5]如何給IPv6網(wǎng)絡(luò)內(nèi)節(jié)點(diǎn)返回一個(gè)所需的IPv4服務(wù)器對(duì)應(yīng)的IPv6地址,并針對(duì)該通信過(guò)程中暴露出來(lái)的有關(guān)域名解析方面的問(wèn)題,提出通過(guò)對(duì)域名解析的響應(yīng)報(bào)文類(lèi)型設(shè)置選擇規(guī)則及添加高速緩存的方法來(lái)加以解決。
IVI過(guò)渡方案的主要思路是從空間巨大的全球IPv6地址(IPG6)和全球IPv4地址(IPG4)中各選取一部分地址一一映射,這些地址分別被稱(chēng)為IVI6(i)及IVI4(i)地址,用i來(lái)區(qū)分這些地址的不同提供商。隨著過(guò)渡的不斷深化,當(dāng)IVI4(i)范圍逐漸擴(kuò)大到整個(gè)全球IPv4地址空間時(shí),則過(guò)渡完成。
目前IVI過(guò)渡方案中的域名解析模塊是根據(jù)DNS64[6、7]的原理,引入了IVIDNS64域名解析擴(kuò)展機(jī)制。方案對(duì)每個(gè)IVI翻譯器分別部署一個(gè)IVIDNS64,此時(shí)IVIDNS64作為DNS代理[8]來(lái)實(shí)現(xiàn)。在IPv6主機(jī)解析一個(gè)純IPv4域名的過(guò)程中,IVIDNS64在轉(zhuǎn)發(fā)AAAA類(lèi)型(IPv6協(xié)議的記錄類(lèi)型)查詢的同時(shí)生成A類(lèi)型(IPv4協(xié)議的記錄類(lèi)型)查詢,并將返回的響應(yīng)報(bào)文中的IPv4地址映射到IVIG6(i)中,合成AAAA類(lèi)型記錄返回給IPv6主機(jī)。
以IPv6向IPv4發(fā)起并建立連接的流程為例,如圖1所示,說(shuō)明這一過(guò)程(這種情況不考慮IPv6子網(wǎng)中部署DNS的情況,所有的域名由IPv4 DNS來(lái)解析,DNS只提供單棧接入):
步驟分析:
(1)IPv6節(jié)點(diǎn)將AAAA類(lèi)型DNS查詢報(bào)文發(fā)送到IVIDNS64;
(2)IVIDNS64收到查詢報(bào)文后查找本地的靜態(tài)域名解析表,如果存在請(qǐng)求的信息,則直接將AAAA類(lèi)型的DNS應(yīng)答報(bào)文發(fā)送到發(fā)起請(qǐng)求的IPv6主機(jī);
(3)如果IVIDNS64中沒(méi)有相應(yīng)記錄,IVIDNS就向其配置的IPv4域中的IPv4 DNS服務(wù)器轉(zhuǎn)發(fā)AAAA查詢報(bào)文并同時(shí)發(fā)起A查詢;
(4)IPv4DNS收到查詢報(bào)文后查找自己的記錄,并將這個(gè)地址填入DNS響應(yīng)報(bào)文的回答字段,此時(shí)DNS報(bào)文的類(lèi)型為A,然后回復(fù)給IVIDNS64;
(5)IVIDNS64收到響應(yīng)報(bào)文后,通過(guò)IVI網(wǎng)關(guān)將DNS報(bào)文回答報(bào)文的目的地址修改成IVI映射后的IPv6地址;
(6)然后IVIDNS64將記錄類(lèi)型從A修改為AAAA,完成后將響應(yīng)報(bào)文送返到發(fā)起請(qǐng)求的IPv6主機(jī)。
至此,IVIDNS64的工作結(jié)束。IPv6結(jié)點(diǎn)現(xiàn)在知道要訪問(wèn)的節(jié)點(diǎn)地址為目標(biāo)IPv4地址在IPv6網(wǎng)絡(luò)中的鏡像地址,即經(jīng)IVI網(wǎng)關(guān)映射后的IPv6地址。最后源IPv6主機(jī)就可以發(fā)起連接,報(bào)文經(jīng)IVI網(wǎng)關(guān)進(jìn)行源地址和目的地址映射后,完成通信。
圖1 現(xiàn)在域名解析模塊運(yùn)行機(jī)制
當(dāng)IPv6網(wǎng)絡(luò)側(cè)主機(jī)發(fā)出的AAAA類(lèi)型查詢后,對(duì)于IPv4網(wǎng)絡(luò)中的雙棧服務(wù)器,既有A記錄,又有AAAA記錄,根據(jù)這種機(jī)制,會(huì)同時(shí)返回原始查詢的AAAA類(lèi)型和經(jīng)過(guò)轉(zhuǎn)化的A查詢記錄。但其中返回的原始AAAA類(lèi)型所對(duì)應(yīng)的IPv6地址對(duì)于只部署IVI翻譯器的子網(wǎng)來(lái)說(shuō),并不可用。因?yàn)榘l(fā)起查詢的IPv6主機(jī)并不能通過(guò)這個(gè)地址,訪問(wèn)到目標(biāo)主機(jī),所以IVIDNS64不用考慮獲取這個(gè)查詢,這樣就產(chǎn)生了對(duì)響應(yīng)報(bào)文類(lèi)型進(jìn)行正確選擇的問(wèn)題。
在一些特殊情況下IVI網(wǎng)關(guān)內(nèi)的IPv6環(huán)境也可能不是純IPv6網(wǎng)絡(luò),即可能存在雙棧節(jié)點(diǎn),路由器跟DNS服務(wù)器同時(shí)也支持IPv4協(xié)議,此時(shí)IVI網(wǎng)關(guān)對(duì)于也使用IPv4協(xié)議的節(jié)點(diǎn)來(lái)說(shuō)相當(dāng)于一個(gè)普通網(wǎng)關(guān),不起地址轉(zhuǎn)換的作用。在IPv6側(cè)一個(gè)與IVI網(wǎng)關(guān)連接的雙棧節(jié)點(diǎn)上,當(dāng)某個(gè)應(yīng)用程序希望得到一個(gè)域名對(duì)應(yīng)的IPv4地址,就會(huì)生成一個(gè)A類(lèi)型的查詢報(bào)文以獲得地址,這個(gè)查詢報(bào)文會(huì)通過(guò)網(wǎng)關(guān)轉(zhuǎn)發(fā),并在IPv4 DNS服務(wù)器上進(jìn)行查詢后返回響應(yīng)報(bào)文,由于IVIDNS64是無(wú)狀態(tài)運(yùn)行的,在IVI網(wǎng)關(guān)IPv4一側(cè)沒(méi)有關(guān)于包含A查詢的IPv6查詢報(bào)文記錄,其默認(rèn)操作就是將響應(yīng)從A修改成AAAA類(lèi)型,從而使發(fā)起請(qǐng)求的主機(jī)無(wú)法得到正確類(lèi)型的回復(fù)。
對(duì)于IVIDNS64與雙棧服務(wù)器通信產(chǎn)生的響應(yīng)報(bào)文類(lèi)型選擇問(wèn)題,在IVI過(guò)渡方案中,當(dāng)IVI6(i)主機(jī)的應(yīng)用程序發(fā)送AAAA查詢后,只有當(dāng)IVIDNS64程序最終正確獲取域名對(duì)應(yīng)的服務(wù)器的IPv4地址所映射到IVIG6(i)的IPv6地址,才能完成通信任務(wù)。所以,對(duì)于雙棧服務(wù)器原始的AAAA查詢記錄,IVIDNS64實(shí)際不用獲取這個(gè)查詢。具體的通信步驟設(shè)計(jì)如下:
(1)IVI6(i)主機(jī)的應(yīng)用程序向已配置的IVIDNS64發(fā)起AAAA類(lèi)型查詢,IVIDNS64先查找本地記錄,如存在有效記錄,則直接回復(fù),不向外轉(zhuǎn)發(fā)查詢;
(2)將集成IVIDNS64模塊的主機(jī)網(wǎng)卡開(kāi)啟混雜模式,抓取IPv6主機(jī)應(yīng)用程序發(fā)出的AAAA類(lèi)型的查詢報(bào)文,再生成A類(lèi)型查詢,然后發(fā)送AAAA查詢和A查詢到外部的DNS,同時(shí)設(shè)置定時(shí)器,再截獲這一時(shí)間內(nèi)返回的DNS回復(fù)報(bào)文;
(3)IPv4網(wǎng)絡(luò)配置的DNS服務(wù)器收到域名查詢請(qǐng)求,查找數(shù)據(jù)庫(kù)中的有效記錄,完成后發(fā)送經(jīng)解析后的應(yīng)答報(bào)文;
(4)IVIDNS64模塊截獲設(shè)定時(shí)間內(nèi)返回的DNS回復(fù)報(bào)文,此時(shí)對(duì)回復(fù)報(bào)文本方案設(shè)置了如下選擇規(guī)則。
1)如果在定時(shí)器所指定時(shí)間內(nèi),IVIDNS64只獲得正確的AAAA類(lèi)型回復(fù),則直接將該回復(fù)轉(zhuǎn)發(fā)到發(fā)起請(qǐng)求的IPv6主機(jī)。
2)如果在定時(shí)器所指定時(shí)間內(nèi),只獲得正確的A類(lèi)型回復(fù),則先由IVIDNS64將其從A類(lèi)型改為AAAA類(lèi)型,并根據(jù)IVI網(wǎng)關(guān)已配置的地址前綴,修改DNS報(bào)文回答區(qū)RDATA字段,將IPv4地址替換為映射后的IVIG6(i)地址,然后將這一修改過(guò)的AAAA類(lèi)型回復(fù)返給發(fā)起請(qǐng)求的IVI6(i)主機(jī)應(yīng)用程序。
3)如果IVIDNS64同時(shí)獲得了正確的AAAA類(lèi)型回復(fù)和A類(lèi)型回復(fù),則將A類(lèi)型回復(fù)按照b)中的處理方式,然后將修改后的回復(fù)返回到應(yīng)用程序;
(5)應(yīng)用程序收到回復(fù)報(bào)文后,根據(jù)返回的IVIG6(i)地址作為目的地址發(fā)起通信連接。
針對(duì)IVIDNS64對(duì)特殊網(wǎng)絡(luò)環(huán)境下的查詢報(bào)文不能給出正確回復(fù)的問(wèn)題,新改進(jìn)的方案是在IVI DNS64模塊內(nèi)部建立一個(gè)高速緩存區(qū),用來(lái)記錄所有通過(guò)的查詢報(bào)文的類(lèi)型。主要思路如下:當(dāng)通過(guò)的查詢報(bào)文類(lèi)型為A,則在高速緩存中增加一個(gè)相應(yīng)的條目用來(lái)記錄,這個(gè)條目會(huì)一直保留到域名解析過(guò)程結(jié)束為止(若查詢類(lèi)型為AAAA,也進(jìn)行相同處理);當(dāng)響應(yīng)報(bào)文返回時(shí),IVIDNS64就將其與高速緩存區(qū)中暫存的查詢報(bào)文記錄進(jìn)行比對(duì),如果發(fā)現(xiàn)緩存區(qū)中對(duì)應(yīng)的查詢記錄也是A類(lèi)型,那么IVIDNS64就不再對(duì)響應(yīng)報(bào)文進(jìn)行修改,而僅由網(wǎng)關(guān)轉(zhuǎn)發(fā)回發(fā)起請(qǐng)求的查詢節(jié)點(diǎn);如果緩存中查詢記錄是AAAA類(lèi)型,則根據(jù)原有的轉(zhuǎn)換原則,對(duì)響應(yīng)報(bào)文進(jìn)行修改,形成新的AAAA類(lèi)型響應(yīng)報(bào)文;響應(yīng)報(bào)文轉(zhuǎn)換完成發(fā)出后,IVI DNS64緩存區(qū)中相應(yīng)的記錄將被刪除。
新方案部署后,原有方案中通信流程將不再適用。此時(shí)新方案中域名解析模塊處理流程如圖2所示:
圖2 新方案域名解析模塊處理流程圖
IVI過(guò)渡方案是現(xiàn)階段連接兩種協(xié)議
網(wǎng)絡(luò)的最新機(jī)制,但目前關(guān)于IVI過(guò)渡方案的域名解析相關(guān)研究還很少。如果域名解析模塊不完善會(huì)使得IVI過(guò)渡方案在推廣及應(yīng)用中受到不利影響。該文對(duì)現(xiàn)有IVI過(guò)渡方案的域名解析模塊存在的問(wèn)題進(jìn)行了分析,并對(duì)具體的缺陷提出了相關(guān)的改進(jìn)方案,今后還要對(duì)其應(yīng)用在實(shí)際的網(wǎng)絡(luò)中進(jìn)行實(shí)驗(yàn),并不斷進(jìn)行測(cè)試,使其達(dá)到預(yù)期的效果。此外,對(duì)于主流操作系統(tǒng),如Windows2000/xp,Solaris8.0等不支持IPv6解析的問(wèn)題,后續(xù)的工作還可以結(jié)合這個(gè)展開(kāi)。該改進(jìn)方案對(duì)完善IVI過(guò)渡技術(shù)域名解析模塊的布署有很大的推進(jìn)作用,同時(shí)在一定程度上可以推進(jìn)IPv4網(wǎng)向IPv6網(wǎng)過(guò)渡。
[1] Nordmark E.Stateless IP/ICMP Translation Algorithm(SIIT)[S].RFC 2765,February,2000.
[2] Li X,Bao C,Chen M,etal.The CERNET IVITranslation Design and Dep loyment for the IPv4/IPv6 Coexistence and Transition[R].Beijing:Tsinghua University,2010.
[3] Zhu Yuncheng,Chen Maoke,Zhang Hong,et al.StatelessMappingand Multip lexingof IPv4Addresses in Migration to IPv6 Internet[C].New Orleans:Global Telecommunications Con ference,2008:1-5.
[4] 王相林.IPv6核心技術(shù)[M].北京:科學(xué)出版社,2009:106-109.
[5] 韓瑾.IPv4/IPv6共存網(wǎng)絡(luò)域名系統(tǒng)的研究[D].天津:天津大學(xué),2007.
[6] Bagnulo M,Sullivan A,Matthews P,et al.DNS64:DNS extensions for Network Address Translation from IPv6 Clients to IPv4 Servers[R].Madrid:UC 3M,2009.
[7] Li X,Bao C.DNS46 for the IPv4/IPv6 Stateless Translator[R].Beijing:Tsinghua University,2010.
[8] 武浦軍,余鎮(zhèn)危,張英,等.IPv6 DNS代理軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2005,31(11):211-213.