《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > NAT-PT過(guò)渡策略中地址欺騙技術(shù)的研究

NAT-PT過(guò)渡策略中地址欺騙技術(shù)的研究

2008-10-21
作者:陳淳鑫 白天力 文輝 趙曉宇

  摘 要: 分析了NAT-PT" title="NAT-PT">NAT-PT用到的地址欺騙技術(shù)" title="地址欺騙技術(shù)">地址欺騙技術(shù),詳細(xì)闡述了地址欺騙技術(shù)的原理并且在此基礎(chǔ)上提出了解決方案。
  關(guān)鍵詞: NAT-PT IPv6 地址欺騙


  當(dāng)前Internet的基礎(chǔ)技術(shù)IPv4面臨的兩個(gè)最大問(wèn)題是地址資源耗盡和骨干路由器路由表規(guī)模爆炸,這兩個(gè)問(wèn)題是IPv4協(xié)議本身存在的缺陷,只有對(duì)其進(jìn)行較大的修改才能解決。經(jīng)過(guò)多年的討論、各種方案的比較權(quán)衡,下一代IP協(xié)議目前已經(jīng)基本制定完成,并分配了版本號(hào)6,稱為IPv6。
  IPv6大規(guī)模普及面臨的一個(gè)關(guān)鍵問(wèn)題:如何漸進(jìn)地、無(wú)傷害地由基于IPv4的網(wǎng)絡(luò)過(guò)渡到基于IPv6的網(wǎng)絡(luò),同時(shí)盡可能減少過(guò)渡的成本。IETF已成立專門的工作組NGTRANS來(lái)研究從IPv4向IPv6的過(guò)渡問(wèn)題。目前提出的解決方案主要有三種:雙協(xié)議棧" title="協(xié)議棧">協(xié)議棧(Dual Stack) [5]、隧道(Tunnel)[7]和網(wǎng)絡(luò)地址/協(xié)議翻譯(NAPT-PT)[3]。
  由于現(xiàn)有的IPv4網(wǎng)絡(luò)仍在工作而且工作得不錯(cuò),而升級(jí)到IPv6的成本很高,所以可以預(yù)測(cè),最先升級(jí)到IPv6的肯定是那些IPv4很難滿足需求的特殊應(yīng)用驅(qū)動(dòng)的網(wǎng)絡(luò),譬如第三代移動(dòng)通信(3G)、信息家電等。這些網(wǎng)絡(luò)將會(huì)采用純粹的IPv6,而不是IPv4/IPv6共存的雙協(xié)議棧。
  但是現(xiàn)有網(wǎng)絡(luò)資源絕大多數(shù)存在于IPv4網(wǎng)絡(luò)中,必須保證純IPv6網(wǎng)絡(luò)能夠與現(xiàn)有IPv4網(wǎng)絡(luò)通信。網(wǎng)絡(luò)地址翻譯/協(xié)議翻譯(NAT-PT)[3]作為一種支持純IPv6網(wǎng)絡(luò)與現(xiàn)有IPv4 Internet透明通信的技術(shù),具有其獨(dú)特的優(yōu)勢(shì)。
1 IPv4向IPv6過(guò)渡機(jī)制研究現(xiàn)狀
  在未來(lái)的一段時(shí)間里,IPv4與 IPv6將同時(shí)并存,相互作用。從IPv4到IPv6的演進(jìn)必然是一個(gè)漸進(jìn)的過(guò)程。引入IPv6技術(shù)并實(shí)現(xiàn)全球IPv6網(wǎng)絡(luò)互聯(lián),仍然需要一段時(shí)間,才能使所有服務(wù)都實(shí)現(xiàn)對(duì)IPv6的支持。在這種情況下,可以預(yù)見,Internet由IPv4向IPv6過(guò)渡需要一個(gè)相當(dāng)長(zhǎng)的時(shí)間才能完成,完全升級(jí)。
  目前,解決IPv4網(wǎng)絡(luò)向IPv6過(guò)渡問(wèn)題成熟的技術(shù)主要有三種:
  ·雙協(xié)議棧技術(shù)" title="雙協(xié)議棧技術(shù)">雙協(xié)議棧技術(shù)(Dual Stack);
  ·隧道技術(shù)" title="隧道技術(shù)">隧道技術(shù)(Tunnel);
  ·協(xié)議翻譯技術(shù)(NAT-PT)。
1.1雙協(xié)議棧技術(shù)[5](Dual Stack, RFC2893)
  主機(jī)同時(shí)運(yùn)行IPv4和IPv6兩套協(xié)議棧,同時(shí)支持兩套協(xié)議。IPv6和IPv4是功能相近的網(wǎng)絡(luò)層協(xié)議,兩者都基于相同的物理平臺(tái),而且加載于其上的傳輸層協(xié)議TCP和UDP又沒(méi)有任何區(qū)別。由圖1所示的協(xié)議棧結(jié)構(gòu)可以看出:如果一臺(tái)主機(jī)同時(shí)支持IPv4和IPv6兩種協(xié)議,那么該主機(jī)既能使用IPv4與支持IPv4協(xié)議的主機(jī)通信,又能使用IPv6與支持IPv6協(xié)議的主機(jī)通信,這就是雙協(xié)議棧技術(shù)的工作機(jī)理。


  “雙棧”這個(gè)稱呼本身有些誤導(dǎo)。大多數(shù)IPv6實(shí)現(xiàn)并不提供兩個(gè)完全不同的TCP/IP棧分別為IPv4和IPv6服務(wù),而是提供一個(gè)混合的棧,在兩套協(xié)議棧中共享大部分代碼。
1.2 隧道技術(shù)[7] (Tunnel, RFC3053)
  這種機(jī)制用來(lái)在IPv4網(wǎng)絡(luò)之上連接IPv6的站點(diǎn),站點(diǎn)可以是一臺(tái)主機(jī),也可以是多個(gè)主機(jī)。隧道技術(shù)將IPv6的分組封裝到IPv4的分組中,封裝后的IPv4分組將通過(guò)IPv4的路由體系傳輸,分組報(bào)頭的“協(xié)議”域設(shè)置為41,指示這個(gè)分組的負(fù)載是一個(gè)IPv6的分組,以便在適當(dāng)?shù)牡胤交謴?fù)出被封裝的IPv6分組并傳送給目的站點(diǎn)。隧道技術(shù)只要求在隧道的入口和出口處進(jìn)行修改,對(duì)其它部分沒(méi)有要求,因而非常容易實(shí)現(xiàn)。但是隧道技術(shù)不能實(shí)現(xiàn)IPv4主機(jī)與IPv6主機(jī)的直接通信。
1.3 NAT-PT[3]技術(shù)(Network Address Translation-Protocol Translation,RFC2766)
  RFC1631詳細(xì)說(shuō)明了NAT(Network Address Translator)技術(shù)的基本原理。雖然NAT技術(shù)是針對(duì)IPv4網(wǎng)絡(luò)提出的,但只要將IPv4地址和IPv6地址分別看作NAT技術(shù)中的內(nèi)部地址和全局地址,就能適用于IPv6技術(shù)的演進(jìn),這時(shí)NAT就演進(jìn)成了NAT-PT。利用轉(zhuǎn)換網(wǎng)關(guān)在IPv4和IPv6網(wǎng)絡(luò)之間轉(zhuǎn)換IP報(bào)頭的地址,同時(shí)根據(jù)協(xié)議不同對(duì)分組做相應(yīng)的語(yǔ)義翻譯,就能使純IPv4和純IPv6站點(diǎn)之間透明通信。
2 基于NAPT-PT的方案中地址欺騙技術(shù)的研究與實(shí)現(xiàn)
2.1 什么是地址欺騙技術(shù)

  由于當(dāng)前的IPv6兼容IPv4的機(jī)制基于雙棧,要實(shí)現(xiàn)純IPv6主機(jī)對(duì)純IPv4主機(jī)的訪問(wèn),這時(shí)要做類似的地址欺騙和轉(zhuǎn)換?;贜APT-PT的過(guò)渡方案是在純IPv4或純IPv6的網(wǎng)絡(luò)中提供一個(gè)或多個(gè)特殊的DNS[1~4]服務(wù)器作“地址欺騙”, 同時(shí)提供一個(gè)或多個(gè)雙棧的服務(wù)器做NAPT-PT網(wǎng)關(guān)。DNS服務(wù)器為整個(gè)站點(diǎn)服務(wù),當(dāng)純IPv6主機(jī)(ADDR6)發(fā)起一個(gè)DNS查詢時(shí),如果DNS服務(wù)器發(fā)現(xiàn)目的主機(jī)只有IPv4地址(ADDR4),將會(huì)返回該IPv4主機(jī)一個(gè)按某種策略選定的IPv6地址(ADDR46)作為查詢結(jié)果,同時(shí)通知NAPT-PT網(wǎng)關(guān)ADDR6、ADDR4和ADDR46這三個(gè)地址之間的對(duì)應(yīng)關(guān)系,這樣NAPT-PT網(wǎng)關(guān)就可以根據(jù)這些信息進(jìn)行地址/協(xié)議翻譯了。其中,ADDR46必須是站點(diǎn)內(nèi)可以路由的。在邊界網(wǎng)關(guān)處將把目的地址是ADDR46的報(bào)文路由到相應(yīng)的NAPT-PT網(wǎng)關(guān)。
2.2 地址欺騙解決方案
  本方案是建立一張hash表,如表1所示。


  同時(shí)提供一個(gè)配置文件:
  其中與hash表有關(guān)的內(nèi)容包括:
  ·欺騙用的公有IPv4地址,例如:210.25.132.120/29
  ·欺騙用的IPv6地址[4]前綴,例如:CHEATING_IP6_ADDR_PF = 0x3f,0xfe,0x81,0xb1,0x00,0x01,0x03,0x00,0x00,0x00,0x00,0x00
  NAT-PT解決方案如圖2所示。


  首先,對(duì)于純IPv6主機(jī)(Host6)發(fā)起的訪問(wèn)純IPv4主機(jī)(Host4)的情況:
  (1)首先Host6對(duì)DNS 服務(wù)器發(fā)出對(duì)Host4的域名解析請(qǐng)求;
  (2)DNS服務(wù)器解析出Host4的地址是ADDR4,同時(shí)發(fā)現(xiàn)它是一臺(tái)純IPv4主機(jī);
  (3)DNS服務(wù)器通過(guò)配置文件naptgw6.conf進(jìn)行地址欺騙,將目的IPv4地址加上IPv6欺騙地址前綴組成ADDR46,作為目的主機(jī)的IPv6地址,返回給Host6,同時(shí)通知NAT-PT網(wǎng)關(guān)進(jìn)行相應(yīng)處理;
  (4)NAT-PT網(wǎng)關(guān)通過(guò)hash算法得到hash表索引值,在hash表中相應(yīng)位置保留源IPv6地址和源端口信息;
  (5)hash算法得到的索引值作為Host6欺騙用的IPv4源端口值,同時(shí)NAT-PT網(wǎng)關(guān)通過(guò)配置文件naptgw6.conf選擇一個(gè)欺騙用IPv4地址ADDR64作為協(xié)議翻譯后的源地址;
  (6)Host6向ADDR46發(fā)出IPv6報(bào)文,IPv6報(bào)文路由到支持雙棧的邊界路由器Router_dualstack,路由器Router_dualstack接收到IPv6報(bào)文,把它路由給NAT-PT網(wǎng)關(guān),Router_dualstack的路由表如表2所示;


  (7)NAT-PT網(wǎng)關(guān)發(fā)現(xiàn)該報(bào)文的目的地址是ADDR46,于是將源地址改為ADDR64,將目的地址改為ADDR4,然后做協(xié)議轉(zhuǎn)換,以IPv4數(shù)據(jù)報(bào)方式發(fā)給Host4。
  對(duì)純IPv4主機(jī)(Host4)回訪純IPv6(Host6)的情況:
  (1)Host4收到Host6發(fā)來(lái)的數(shù)據(jù)報(bào),并返回IPv4數(shù)據(jù)報(bào)給ADDR64;
  (2)返回IPv4數(shù)據(jù)報(bào)通過(guò)路由器Router_dualstack路由到NAT-PT網(wǎng)關(guān),根據(jù)Host4源端口值在hash表中查到對(duì)應(yīng)的表項(xiàng)作為目的IPv6地址和端口;
  (3)同時(shí)源IPv4地址加欺騙前綴后地址變?yōu)锳DDR46,隨后做協(xié)議轉(zhuǎn)換,通過(guò)NAT-PT網(wǎng)關(guān)以IPv6數(shù)據(jù)包方式發(fā)給Host6;
  (4)Host6收到返回?cái)?shù)據(jù)報(bào),一次報(bào)文交換成功。
  當(dāng)Host4與Host6通信時(shí)過(guò)程正好相反。
2.3 實(shí)現(xiàn)負(fù)載均衡的方法
  在最簡(jiǎn)單的情況下,假設(shè)要使用兩個(gè)協(xié)議翻譯網(wǎng)關(guān)(GW1和GW2)實(shí)現(xiàn)負(fù)載均衡,只需要為GW1使用10.0.0.0/9和2001:1000:1::/64做地址欺騙,為GW2使用10.129.0.0/9和2001:1000:2::/64做地址欺騙,在邊緣IPv4/v6雙棧路由器如表3所示。


  GW1和GW2理論上自動(dòng)分配各一半的流量,而所有的設(shè)置只需要在網(wǎng)絡(luò)邊緣進(jìn)行,程序代碼不需要做任何修改;對(duì)于被服務(wù)的站點(diǎn)也是透明的,只需更改DNS服務(wù)器的設(shè)置。
2.4數(shù)據(jù)結(jié)構(gòu)
  map_tbl數(shù)據(jù)結(jié)構(gòu)的主要作用是記錄hash表中的數(shù)據(jù),包括索引值、源IPv6地址和源IPv6端口,以及是否使用標(biāo)志位。
  map_tbl數(shù)據(jù)結(jié)構(gòu)如下:
  struct map_tbl[INDEX]
  {  
  unsigned char    used;
  struct in6_addr  src_ipv6_addr;
  in_port_t      src_port;
  };
  hash表存取地址的效率高低直接影響NAT-PT網(wǎng)關(guān)的連接速度,因此hash表中INDEX的算法很重要。為了盡量避免沖突,提高效率,hash函數(shù)涉及的參數(shù)有源IPv6地址、源IPv6端口、目的IPv4地址(欺騙用IPv6地址的8~11byte)、目的IPv4端口。這些參數(shù)對(duì)于每次新的連接都是變化的,通過(guò)這些參數(shù)相加計(jì)算出hash表的INDEX(16位)值,取1025~65535(去掉0~1024端口值)作為hash表的索引,同時(shí)標(biāo)志位置為1表示已占用,算法計(jì)算公式如下所示:

???
  hash程序的簡(jiǎn)單處理流程如圖3所示。


  對(duì)于hash表地址發(fā)生沖突的處理,通過(guò)檢驗(yàn)標(biāo)志位得知此索引處是否已存有欺騙地址,然后INDEX值自動(dòng)加1,繼續(xù)檢驗(yàn)標(biāo)志位,直至發(fā)現(xiàn)沒(méi)有被占用INDEX。
2.5 方案測(cè)試
  具體測(cè)試方案如表4~6所示。


2.6 方案總結(jié)
  基于NAPT-PT的方案只是增加了幾臺(tái)設(shè)備,而沒(méi)有對(duì)現(xiàn)有設(shè)備做任何改動(dòng),特別是不要求客戶端做任何改動(dòng),只需要客戶端操作系統(tǒng)實(shí)現(xiàn)純IPv4協(xié)議棧或純IPv6協(xié)議棧即可。由于這個(gè)方案可以很自然地實(shí)現(xiàn)負(fù)載均衡,所以可以被大的ISP用來(lái)為下面接入的所有站點(diǎn)服務(wù),并可以保證被服務(wù)的IPv4站點(diǎn)中的任意部分可以在任意時(shí)刻升級(jí)成雙棧,從而實(shí)現(xiàn)平穩(wěn)過(guò)渡。
  總的來(lái)說(shuō),本方案具有以下特點(diǎn):
  ·適用于純IPv4與純IPv6站點(diǎn)間的通信;
  ·對(duì)被服務(wù)的站點(diǎn)的主機(jī)完全透明;
  ·不需要主機(jī)做任何修改,路由器也不需要升級(jí);
  ·能與其他現(xiàn)存的過(guò)渡技術(shù)結(jié)合使用,而且保持透明。
  從理論上講,采用NAPT-PT并不是一種完美的過(guò)渡方案,最好的方案是采用雙協(xié)議棧技術(shù),保持現(xiàn)有IPv4的體系不變,逐漸在IPv4體系上增加IPv6支持,直到最后整個(gè)網(wǎng)絡(luò)都變成雙協(xié)議棧,建立起全球的IPv4與IPv6共存的體系。然后逐漸去掉IPv4協(xié)議,最終過(guò)渡到純粹的IPv6網(wǎng)絡(luò)。但是這種想法帶有很強(qiáng)的理想主義色彩,實(shí)際上很難做到。很有可能在過(guò)渡的某個(gè)階段出現(xiàn)這種情況:Internet的大部分已經(jīng)支持雙棧并實(shí)現(xiàn)了IPv6的連接,但是還有一部分仍然是純粹的IPv4網(wǎng)絡(luò),同時(shí)由于IPv4地址耗盡等種種原因,有些網(wǎng)絡(luò)需要馬上就使用純IPv6,因此在現(xiàn)實(shí)過(guò)渡過(guò)程中使用地址欺騙技術(shù)的NAPT-PT方案情況的可能性要遠(yuǎn)遠(yuǎn)大于前者。
參考文獻(xiàn)
1 S. Deering, R. Hinden. Internet Protocol, Version 6 (IPv6) Specification[S]. RFC2460, December 1998
2 S. Thomson, C. Huitema.DNS Extensions to support IP version 6[S]. RFC1886, December 1995
3 G. Tsirtsis, P. Srisuresh. Network Address Translation-Proto-col Translation (NAT-PT) [S]. RFC 2766, February 2000
4 M. Crawford, C. Huitema. DNS Extensions to Support IPv6 Address Aggregation and Renumbering[S]. RFC2874, July 2000
5 R. Gilligan, E. Nordmark. Transition Mechanisms for IPv6 Hosts and Routers[S]. RFC 2893, August 2000
6 P. Srisuresh, K. Egevang. Traditional IP Network Address Translator (Traditional NAT) [S]. RFC 3022, January 2001
7 A. Durand, P. Fasano, I. Guardini, D. Lento. IPv6 Tunnel Broker[S]. RFC 3053, January 2001

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。