1 引言
IPv6推廣應(yīng)用初期網(wǎng)絡(luò)資源相當(dāng)匱乏,使用者主要是研究IPv6的科研工作者。IPv6的推廣普及需吸引大量普通網(wǎng)絡(luò)用戶(hù),僅靠IPv6網(wǎng)絡(luò)的優(yōu)異性能是不夠的,還需建立大量的可用資源,在短時(shí)間內(nèi)是不可能的。而IPv4網(wǎng)絡(luò)具有豐富的資源。如能通過(guò)轉(zhuǎn)換網(wǎng)關(guān)實(shí)現(xiàn)IPv6與IPv4網(wǎng)絡(luò)的無(wú)縫連接,實(shí)現(xiàn)IPv4與IPv6網(wǎng)絡(luò)的資源共享,這不僅增加了IPv6網(wǎng)絡(luò)對(duì)用戶(hù)的吸引力,并具有較高的經(jīng)濟(jì)和應(yīng)用價(jià)值。
2 NAT-PT轉(zhuǎn)換網(wǎng)關(guān)方案
2.1 NAT-PT的位置位置和功能結(jié)構(gòu)
NAT-PT在Linux協(xié)議棧中所處的位置如圖1所示,整個(gè)NAT-PT模塊由3部分構(gòu)成,NAT維護(hù)映射表和地址池,其中DNS-ALG處于應(yīng)用層,而NAT和PT處于IP層,工作在Linux內(nèi)核,但NAT和PT只是在一個(gè)Linux內(nèi)核模塊工作,整個(gè)NAT-PT網(wǎng)關(guān)是一個(gè)包含NAT-PT功能的Linux系統(tǒng)。
圖2為NAT-PT的功能結(jié)構(gòu)圖。NAT負(fù)責(zé)IPv4和IPv6地址的映射轉(zhuǎn)換,如存儲(chǔ)并維護(hù)IPv4地址池;為將要建立的連接選擇合適的地址;保持同一通信期間IPv4到IPv6地址的映射、維護(hù)。PT負(fù)責(zé)在兩種版本的協(xié)議之間進(jìn)行轉(zhuǎn)換,主要工作是在IP報(bào)頭的對(duì)應(yīng)字段,根據(jù)IPv4和IPv6在語(yǔ)義上的不同定義進(jìn)行轉(zhuǎn)換,并對(duì)上層協(xié)議進(jìn)行適當(dāng)?shù)霓D(zhuǎn)換(如TCP、UDP及ICMP),從而構(gòu)建新的數(shù)據(jù)包。應(yīng)用級(jí)網(wǎng)關(guān)ALG負(fù)責(zé)轉(zhuǎn)換負(fù)載中包含IP地址的典型應(yīng)用,其中DNS-ALG是雙向NAT-PT必須具備的功能。
2.2 NAT.PT的通信過(guò)程
下面分析NAT-PT在網(wǎng)絡(luò)中的通信過(guò)程,圖3為通信模型及其基本配置。
(1)從IPv4到IPv6的通信當(dāng)IPv4主機(jī)B初次與IPv6主機(jī)A通信時(shí),首先向本地網(wǎng)絡(luò)的DNS服務(wù)器發(fā)送一個(gè)對(duì)A名字的查詢(xún)請(qǐng)求,此請(qǐng)求記錄是“A”,本地DNS服務(wù)器無(wú)此名字記錄,此查詢(xún)通過(guò)NAT-PT轉(zhuǎn)交,則被DNS-ALG截獲,然后將“A”記錄改為“AAAA”記錄,并直接將轉(zhuǎn)換后的查詢(xún)記錄遞交給IPv6網(wǎng)絡(luò)的 DNS服務(wù)器,IPv6的DNS服務(wù)器返回:
主機(jī)A AAAA 200 1:250:2000:3::3
DNS-ALG將該應(yīng)答截獲,并將“AAAA”記錄改為“A”記錄,同時(shí)在地址映射表中查找此IPv6地址的映射地址,如果有,則直接用映射的IPv4地址替換DNS應(yīng)答中的IPv6地址,并返回應(yīng)答給IPv4主機(jī)B;如果沒(méi)有,則向NAT模塊請(qǐng)求分配一個(gè)映射地址給此IPv6地址,NAT確認(rèn)映射表中沒(méi)有關(guān)于此IPv6地址的映射表項(xiàng)后,在地址池中分配一個(gè)空閑的IPv4地址(比如202.115.9.249)映射給該IPv6地址,并在映射表中添加此綁定表項(xiàng),最后把分配的IPv4地址返回給DNS-ALG,這時(shí)候DNS應(yīng)答變?yōu)椋?br />
主機(jī)A A 202.115.9.249
DNS-ALG將此DNS應(yīng)答返回給IPv4主機(jī)B。IPv4主機(jī)B此時(shí)就可以建立與IPv6主機(jī)A的通信,這里假定IPv4主機(jī)B發(fā)起的是TCP通信,則:源地址=202.115.8.3,源TCP端口=1 025;目的地址=202.115.9.249,目的TCP端口=80。
此數(shù)據(jù)包被路由器轉(zhuǎn)發(fā)給NAT-PT,協(xié)議翻譯模塊PT轉(zhuǎn)換源包的IP報(bào)頭和TCP校驗(yàn),在源地址前添加IPv6前綴,轉(zhuǎn)換為IPv4映射的IPv6地址,并根據(jù)NAT地址映射表中202.115.9.249與2001:250:2000:3::3的映射關(guān)系,將包翻譯為:源地址=2001:250:2000:3::202.1 15.8.3,源TCP端口=1 025;目的地址=2001:250:2000:3::3,目的TCP端口=80。
這樣,IPv4主機(jī)B可以與IPv6主機(jī)進(jìn)行通信。對(duì)于在此映射表項(xiàng)生存期內(nèi)的后續(xù)通信,將繼續(xù)利用此表項(xiàng),映射表項(xiàng)超時(shí)后將被刪除,映射表項(xiàng)超時(shí)機(jī)制的引入一是為了釋放地址資源和內(nèi)存,另外還可以減少拒絕服務(wù)攻擊(DoS)的風(fēng)險(xiǎn)。
(2)從IPv6到IPv4的通信IPv6主機(jī)可以從IPv4網(wǎng)絡(luò)中的DNS服務(wù)器獲得:IPv4主機(jī)的名字解析,但如果在IPv6DNS服務(wù)器中緩存適當(dāng)?shù)?。IPv4主機(jī)的名字解析表,則可以提高通信的效率,這樣,IPv6主機(jī)就可以從本地的IPv6 DNS服務(wù)器獲得關(guān)于IPv4主機(jī)的名字解析。如果IPv6DNS服務(wù)器采用上述方案,則:在圖3中,若IPv6主機(jī)A試圖與IPv4主機(jī)B建立通信,則A首先發(fā)送一個(gè)對(duì)IPv4主機(jī)B的名字查詢(xún)請(qǐng)求到本地IPv6網(wǎng)絡(luò)的DNS服務(wù)器,這個(gè)請(qǐng)求記錄為“AAAA”或“A6'’記錄,由于主機(jī)B可能在本地DNS有IPv4地址或IPv6地址映射,DNS-ALG將把此“AAAA”或“A6”查詢(xún)不加修改地轉(zhuǎn)交給本地DNS,若本地DNS應(yīng)答返回的是一個(gè)“AAAA”或“A6”記錄,那么DNS-ALG將把此應(yīng)答不作修改地返回給IPv6主機(jī)A。若DNS返回一個(gè)“A”記錄,即:
主機(jī)B A 202.115.8.3
DNS-ALG則對(duì)應(yīng)答返回的IPv4地址進(jìn)行修改,在IPv4地址前面加上IPv6前綴,變?yōu)椋?br />
主機(jī)B AAAA 200 1:250:2000:3::202.1 1 5.8.3或 主機(jī)B A6 2001:250:2000:3::202.115.8.3
如果IPv6 DNS服務(wù)器中沒(méi)有緩存IPv4主機(jī)的名字解析表,則DNS-ALG將把該“AAAA”或“A6”請(qǐng)求記錄修改為“A”記錄,并將轉(zhuǎn)換后的名字解析請(qǐng)求轉(zhuǎn)發(fā)給IPv4網(wǎng)絡(luò)的DNS服務(wù)器,則IPv4網(wǎng)絡(luò)的DNS服務(wù)器返回如下應(yīng)答:
主機(jī)B A 202.115.8.3
DNS-ALG截獲此應(yīng)答,并將其修改為:
主機(jī)B AAAA 2001:250:2000:3::202.1 15.8.3
或 主機(jī)B A6 2001:250:2000:3::202.115.8.3
至此,名字解析成功。僅僅這樣IPv6主機(jī)還無(wú)法與IPv4主機(jī)建立通信,還須將IPv6主機(jī)源地址修改為IPv4地址,NAT-PT的PT模塊截獲了主機(jī)A的名字查詢(xún)請(qǐng)求后將在地址映射表中查詢(xún)是否有與該IPv6地址匹配的IPv4地址綁定,若沒(méi)有,NAT將在IPv4地址池中分配一個(gè)空閑的IPv4地址(比如202.115.9.249)映射給該IPv6地址,并在映射表中添加此綁定表項(xiàng),此時(shí),IPv6主機(jī)A就可以與IPv4主機(jī)B建立通信。
IPv4節(jié)點(diǎn)同IPv6節(jié)點(diǎn)通信類(lèi)似,這里假定A與B進(jìn)行TCP通信:源地址=2001:250:2000:3::3,源TCP端口=1 025;目的地址=2001:250:2000:3::202.115.8.3;目的TCP端口=80。
IPv6主機(jī)A發(fā)送的數(shù)據(jù)包被路由器轉(zhuǎn)發(fā)給NAT-PT,協(xié)議翻譯模塊PT轉(zhuǎn)換源包的IPv6報(bào)頭和TCP校驗(yàn),并根據(jù)NAT地址映射表中202.115.9.249與2001:250:2000:3::3的映射關(guān)系,將數(shù)據(jù)包翻譯成:源地址=202.115.9.249,源TCP端口=1 025;目的地址=202.115.8.3.目的TCP端口=80。這樣,IPv6主機(jī)A可與IPv4主機(jī)B通信。映射表項(xiàng)生存期內(nèi)的后續(xù)通信,將繼續(xù)利用此表項(xiàng),映射表項(xiàng)超時(shí)后刪除。
3 結(jié)束語(yǔ)
由于IPv4資源豐富,而IPvr6資源很少,如果能實(shí)現(xiàn)IPv6/IPv4網(wǎng)絡(luò)的互操作,使IPv6網(wǎng)絡(luò)中的主機(jī)能夠訪(fǎng)問(wèn)IPv4網(wǎng)絡(luò)資源,從而減小網(wǎng)絡(luò)升級(jí)成本,加快IPv6的推廣普及,因此必須研發(fā)IPv4/IPv6轉(zhuǎn)換網(wǎng)關(guān)。NAT-PT方案可實(shí)現(xiàn)IPv4與IPv6的雙向通信功能。利用NAT-PT技術(shù)設(shè)計(jì)IPv4/IPv6轉(zhuǎn)換網(wǎng)關(guān),并對(duì)其測(cè)試,從而實(shí)現(xiàn)IPv4與IPv6的雙向通信。