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

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

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

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


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


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

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


  同時提供一個配置文件:
  其中與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所示。


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


  (7)NAT-PT網(wǎng)關(guān)發(fā)現(xiàn)該報文的目的地址是ADDR46,于是將源地址改為ADDR64,將目的地址改為ADDR4,然后做協(xié)議轉(zhuǎn)換,以IPv4數(shù)據(jù)報方式發(fā)給Host4。
  對純IPv4主機(Host4)回訪純IPv6(Host6)的情況:
  (1)Host4收到Host6發(fā)來的數(shù)據(jù)報,并返回IPv4數(shù)據(jù)報給ADDR64;
  (2)返回IPv4數(shù)據(jù)報通過路由器Router_dualstack路由到NAT-PT網(wǎng)關(guān),根據(jù)Host4源端口值在hash表中查到對應(yīng)的表項作為目的IPv6地址和端口;
  (3)同時源IPv4地址加欺騙前綴后地址變?yōu)锳DDR46,隨后做協(xié)議轉(zhuǎn)換,通過NAT-PT網(wǎng)關(guān)以IPv6數(shù)據(jù)包方式發(fā)給Host6;
  (4)Host6收到返回數(shù)據(jù)報,一次報文交換成功。
  當(dāng)Host4與Host6通信時過程正好相反。
2.3 實現(xiàn)負載均衡的方法
  在最簡單的情況下,假設(shè)要使用兩個協(xié)議翻譯網(wǎng)關(guān)(GW1和GW2)實現(xiàn)負載均衡,只需要為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理論上自動分配各一半的流量,而所有的設(shè)置只需要在網(wǎng)絡(luò)邊緣進行,程序代碼不需要做任何修改;對于被服務(wù)的站點也是透明的,只需更改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ù)對于每次新的連接都是變化的,通過這些參數(shù)相加計算出hash表的INDEX(16位)值,取1025~65535(去掉0~1024端口值)作為hash表的索引,同時標(biāo)志位置為1表示已占用,算法計算公式如下所示:

???
  hash程序的簡單處理流程如圖3所示。


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


2.6 方案總結(jié)
  基于NAPT-PT的方案只是增加了幾臺設(shè)備,而沒有對現(xiàn)有設(shè)備做任何改動,特別是不要求客戶端做任何改動,只需要客戶端操作系統(tǒng)實現(xiàn)純IPv4協(xié)議?;蚣僆Pv6協(xié)議棧即可。由于這個方案可以很自然地實現(xiàn)負載均衡,所以可以被大的ISP用來為下面接入的所有站點服務(wù),并可以保證被服務(wù)的IPv4站點中的任意部分可以在任意時刻升級成雙棧,從而實現(xiàn)平穩(wěn)過渡。
  總的來說,本方案具有以下特點:
  ·適用于純IPv4與純IPv6站點間的通信;
  ·對被服務(wù)的站點的主機完全透明;
  ·不需要主機做任何修改,路由器也不需要升級;
  ·能與其他現(xiàn)存的過渡技術(shù)結(jié)合使用,而且保持透明。
  從理論上講,采用NAPT-PT并不是一種完美的過渡方案,最好的方案是采用雙協(xié)議棧技術(shù),保持現(xiàn)有IPv4的體系不變,逐漸在IPv4體系上增加IPv6支持,直到最后整個網(wǎng)絡(luò)都變成雙協(xié)議棧,建立起全球的IPv4與IPv6共存的體系。然后逐漸去掉IPv4協(xié)議,最終過渡到純粹的IPv6網(wǎng)絡(luò)。但是這種想法帶有很強的理想主義色彩,實際上很難做到。很有可能在過渡的某個階段出現(xiàn)這種情況:Internet的大部分已經(jīng)支持雙棧并實現(xiàn)了IPv6的連接,但是還有一部分仍然是純粹的IPv4網(wǎng)絡(luò),同時由于IPv4地址耗盡等種種原因,有些網(wǎng)絡(luò)需要馬上就使用純IPv6,因此在現(xiàn)實過渡過程中使用地址欺騙技術(shù)的NAPT-PT方案情況的可能性要遠遠大于前者。
參考文獻
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)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。