李戰國 楊雨



摘要:通過實驗分析NAT-PT技術的工作原理及工作過程,并對靜態NAT-PT技術從報文轉換角度論述了IP地址轉換過程,在動態NAT-PT技術上論述IPv6到IPv4地址的動態映射及訪問過程,在DNS-ALG上從應用角度論述了以域名方式從IPv4網絡訪問IPv6網絡的工作過程,具有良好的理論研究及應用價值。
關鍵詞:靜態網絡協議地址轉換;動態網絡協議地址轉換;域名應用層網關
中圖分類號:TP393.4? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2019)17-0039-04
開放科學(資源服務)標識碼(OSID):
Abstract: The experimental analysis NAT-PT technology working principle and working process,discusses static NAT-PT translation process from the message conversion, the dynamic NAT-PT technology discusses the dynamic mapping and access process of IPv6 address to IPv4 address, the ALG-NAT-PT technology from the working process discussed the IPv4 network access IPv6 network use the domain name. Has the best theoretical research and application value.
Key words: static NAT-PT; dynamic NAT-PT; DNS-ALG
1 引言
2017年11月26日,中共中央辦公廳國務院辦公廳印發了《推進互聯網協議第六版(IPv6)規模部署行動計劃》。計劃指出,到2018年末國內IPv6活躍用戶數要達到2億,2020年末達到5億,2025年末中國IPv6規模要達到世界第一[1],從這里可以看出下一代互聯網對整個網絡發展的重要性。在下一代互聯網的實現技術上,不同的實現方法及技術決定了下一代互聯網的發展與部署。NAT-PT(Network Address Translation-Protocol Translation,網絡-協議地址轉換)[2]技術是用于IPv6 和IPv4 網絡之間的網絡地址轉換協議,通過修改IPv4和IPv6協議報文頭來轉換IPv4和IPv6網絡地址及其他參數,實現IPv4和IPv6網絡之間互相通信[3]。本文以實驗的形式闡述其工作原理、配置過程及應用環境,進而加深對NAT-PT技術的理解與應用。
在NAT-PT技術研究上,主要是進行理論研究與應用研究。在理論上,文獻[3]對 NAT-PT技術進行了理論分析并編程實現了該協議的部分功能,文獻[4]對IPv4到IPv6三種過度技術進行了比較。在應用上,文獻[5-6]使用不同的技術實現了NAT-PT在集群服務中的應用,文獻[7-9]論述了NAT-PT技術在云計算環境下的移動IPv4/IPv6的虛擬機遷移問題。總的來說,目前在實驗研究方面很少出現對NAT-PT技術的理論論述及實驗驗證研究。本文采用實驗驗證的方式,首先對靜態NAT-PT技術從報文轉換角度進行論述其IP地址轉換,然后對動態NAT-PT技術轉換原理及IPv6到IPv4地址的動態轉換過程進行論述,最后在DNS-ALG技術上從應用角度以域名方式對IPv4及IPv6網絡互相訪問工作過程及應用特點進行論述。
2 NAT-PT實驗環境及基本配置
在實驗環境上,為了降低對實驗設備的要求,使用思科網絡模擬器GNS3實現虛擬化實驗環境。實驗網絡拓撲如圖1所示,圖中PC0,R0及R1的F0/0接口為IPv6區域,PC1,R2及R1的F0/1接口為IPv4區域,Server0為DNS服務器,網段及接口使用情況見拓撲圖。
為了實現整個網絡的通信功能,在各設備相應接口上配置相應的IP地址及靜態路由等基本網絡參數,以實現NAT-PT域內及與其他網絡的通信。為了實現NAT-PT的IPv4與IPv6地址的轉換,我們定義2001:3::/96網段為NAT-PT操作預定義前綴。這個網段可以是任意IPv6地址,但是其長度必須是96bits。其他IP地址見圖1所示。
在R0路由器上的IPv6單協議網絡中產生的、去往2001:3::/96這個目的地址的流量被路由到R1也就是NAT-PT網關,其他網段的流量使用默認路由方式發送到與其相連的IPv6路由器,如2001::1。
R0基本參數配置命令如下:
3 靜態NAT-PT報文轉換分析
3.1 靜態NAT-PT配置
靜態NAT-PT是由NAT-PT網關靜態地綁定IPv6和IPv4地址。當IPv4主機和IPv6主機之間進行互通時, 其報文在經過NAT-PT網關時, NAT-PT網關根據配置的綁定關系進行轉換[10]。
在NAT-PT網關R1上配置F0/0接口的IPv6地址為2001:2::2/64,F0/1接口的IPv4地址為2.2.2.1/24,F0/0/0接口的IPv4地址為1.1.1.1/24,配置IPv4及IPv6網段的默認路由,并配置靜態NAT-PT轉換,實現IPv4及IPv6域中的PC機的互相訪問。在圖1中的PC0的IPv6地址為2001:1::2/64,PC1的IPv4地址為3.3.3.2/24。為了實現它們之間的互相訪問,需要在R1上開啟NAT-PT轉換,并且配置它們的映射IP地址。PC0的IPv4映射地址為2.2.2.3,PC1的IPv6映射地址為預定義網段的IPv6地址2001:3::1。在NAT-PT轉換器R1的配置命令為:
3.2 靜態NAT-PT協議分析
為了驗證NAT-PT轉換技術,實現IPv4及IPv6網絡PC間的互相訪問,必須使用映射后的IP地址進行訪問,即PC0訪問PC1的IP地址為2003:3::1,PC1訪問PC0的IP地址為2.2.2.3。
首先PC1訪問PC0,即IPv4到IPv6的訪問,在PC1上訪問PC0的命令為PING 2.2.2.3,其結果可以通信,說明它們之間是能夠通信的。那么在NAT-PT網關R1上其數據包是如何轉換的呢?將模擬器工作模式切換為模擬方式,在R1上的抓包結果如圖2。
圖2結果可以看出,從F0/1接口來的入包(In Layers)的源IP地址為3.3.3.2,這是PC1的IPv4地址,目標IP地址是2.2.2.3,這是PC0的IPv6映射地址。但是,從F0/0接口的出包已經轉換為IPv6數據包了,其源IPv6地址是2001:3::1,這是PC1的映射IPv6地址。目的地址為2001:1::2,這是PC0的真實IPv6地址。從這里可以看到,NAT-PT轉換器確實進行了IPv4及IPv6地址的轉換。實現了不同類型IP地址的通信功能。
與上述類似,IPv6網絡也可以實現到IPv4網絡的訪問,即PC0到PC1的訪問,在PC0上訪問PC1命令為PING 2001:3::1,其結果同樣可以通信。在R1上的抓包結果如圖3。
從圖中結果可以看出,來自F0/0接口的是IPv6報文,其源地址為2001:1::2是PC0的IP地址,目標地址為2001:3::1是PC1的映射地址,而經過NAT-PT轉換后從出接口F0/1發出的IPv4地址的源IP地址是2.2.2.3是PC0的映射地址,目標地址是3.3.3.2是PC1的IP地址。
4 動態NAT-PT轉換過程分析
靜態NAT-PT雖然解決了IPv4及IPv6地址之間的映射,實現不同IP之間的互通,但是其映射關系都是手工配置的,需要大量的管理工作量,并且要消耗大量的IPv4地址。動態NAT-PT定義了IPv4 地址池,NAT-PT 網關從此地址池中取出一個地址來替換IPv6 報文的源地址,動態地給訪問IPv4 節點的IPv6 節點分配IPv4 地址而不需要手工配置,并且能夠復用IPv4地址,很好地解決了SIIT 技術中全局IPv4 地址池規模有限的問題[11]。
在實驗環境上,在GNS3模擬器下使用c3640-js-mz.124-12.image路由器IOS實現該功能。在R0使用Loopback0(IPv6地址2001:1::1/64)代替PC0,在R2使用Loopback0(IPv4地址3.3.3.1/24)代替PC1。其拓撲圖如圖4所示。
第一條定義IPv6 ACL “ipv6-net”,定義了允許訪問的源IPv6網絡;第二條定義IPv6 ACL “v4map”來匹配需要進行IPv4-mapped的源與目標流量;第三條定義IPv4地址池v6v4-pool;第四條定義了IPv6到IPv4的轉換關系,并且應用了前面定義的IPv6 ACL“ipv6-net”及IPv4地址池v6v4-pool;最后使用ipv6 nat prefix 2001:3::/96 v4-mapped v4map命令定義保留給NAT-PT的IPv6前綴并關聯v4map這條IPv6 ACL。
通過這樣配置就實現了IPv6網絡到IPv4網絡的自動匹配與訪問。下面以訪問R1的Loopback0口的IP地址3.3.3.1為例來說明其轉換及訪問過程。
當在R0上訪問R1的Loopback0口時要使用IPv6地址進行訪問。由于配置了IPv6保留給NAT-PT的IPv6前綴2001:3::/96,因此訪問R2的Loopback0口的IPv6地址就是2001:3::303:301。其中303:301是R2的Loopback0口的IPv4地址3.3.3.21的雙字節值,2001:3是保留給NAT-PT的IPv6前綴。在NAT-PT網關R1上開啟NAT-PT的調試功能
其中,第一行是R0發送給R1的信息,源IPv6地址2001:2::1被轉換為IPv4地址2.2.2.10,這個就是IPv4地址池的第一個IP地址;目標IPv6地址2001:3::303:301是R0發出命令時的目標R2的Loopback0口IPv6地址,但是從R1發送給R2時,從該IPv6地址的最低32位取得目標主機的IPv4地址3.3.3.1。這樣根據轉換后的IPv4地址就可以實現與R2通信了。第二行是R2發送給R1的信息,其原始信息是IPv4地址,到達R1后通過查NAT-PT表重新轉換為IPv6地址再發送給R0。具體轉換關系為源地址3.3.3.1轉換為2001:3:303:301,目標地址2.2.2.10轉換為2001:2::1。其他數據與此類似,不再贅述。
5 DNS-ALG應用分析
在動態NAT-PT中實現了IPv4與IPv6之間的動態映射,減少了靜態NAT-PT的配置工作量。但是,只能從IPv6網絡端對IPv4主機訪問,沒法從IPv4網絡端對IPv6主機訪問。采用DNS-ALG技術不僅實現了IPv4及IPv6間的雙向訪問,而且可以使用域名方式進行訪問,這樣大大方便了其訪問方式,具有很好的應用價值[12]。
在IPv4及IPv6的轉換應用中主要是不同IP平臺的客戶端對IPv4及IPv6應用服務器的訪問,這些服務器都配置固定的IP地址,如果需要IP地址轉換都在NAT-PT網關上使用靜態NAT-PT進行IPv4及IPv6映射。而且在DNS服務器上對相應的IP地址添加DNS的A記錄或AAAA記錄,這樣就實現了基于域名的訪問。
本實驗采用圖1的拓撲結構及靜態NAT-PT配置基礎。在Server0上配置DNS域名如圖5所示。
圖中pc0.ipv6.com域名對應于PC0的靜態映射后的IPv4地址2.2.2.3,它需要經NAT-PT網關轉換為其IPv6地址2001:1::2(見R1的NAT-PT配置IPv6到IPv4地址映射命令: ipv6 nat v6v4 source 2001:1::2 2.2.2.3)后才能進行訪問。另外配置了server0的域名server0.ipv4.com。這樣就可以使用域名方式對PC0及server0進行訪問了。由于Cisco Packet Tracer 6模擬器的DNS服務不支持AAAA記錄,因此沒有設置IPv6地址的域名。
在PC1上配置DNS的IP地址對應為server0的IP地址1.1.1.2,使用域名分別訪問PC0及server0結果如圖6所示。
從圖6可以看出,IPv4網絡中的服務器Server0經DNS解析后的IP地址為1.1.1.2,PC0經DNS解析后的IP地址為2.2.2.3,這個結果與DNS服務器的配置是相符的。PC0的IPv4地址經NAT-PT網關轉換為IPv6地址后發送給PC0,這樣就實現了IPv4網絡到IPv6網絡的通信。其轉換過程與靜態NAT-PT轉換相同,不再贅述。
6 結語
通過本文的討論,使我們從實驗的角度更加明白了NAT-PT的工作原理與工作過程,并且對NAT-PT在各種環境下的使用有了充分的認識,為合理使用NAT-PT技術進行了有益的探索。
參考文獻:
[1] 中共中央辦公廳國務院辦公廳.推進互聯網協議第六版(IPv6)規模部署行動計劃[OL] http://www.gov.cn/zhengce/ 2017-11/26/content_5242389.htm
[2] Tsirtsis G. Network Address Translation- Protocol Translation (NAT-PT) [S]. RFC 2766, 2000.
[3] Nordmark E. Stateless IP/ICMP Translation Algorithm (SIIT) [S].RFC 2765, 2000.
[4] 陳俊,傅光軒.NAT-PT過渡技術的分析和實現[J].貴州師范大學學報(自然科學版),2009,27(2):102-106.
[5] 王炅,林展鋒,郭海豐.IPv6過渡技術的研究與仿真[J]. 甘肅聯合大學學報(自然科學版),2013,27(4):61-64.
[6] 肖遼亮,趙凱輝,鄧木生. NAT-PT簇的負載均衡[J].計算機工程,2008,34(9):136-138.
[7] 陳俊, 陳孝威.基于移動IPv4/IPv6演進云計算框架設計[J].計算機應用研究,2011,28(6):2321-2323.
[8] 陳俊, 陳孝威.移動I Pv4 /I Pv6 的虛擬機遷移過渡框架[J].計算機應用,2011,31(5):1180-1183.
[9] 陳俊, 陳孝威.云計算IPv4/IPv6 虛擬機在線遷移系統設計[J].計算機工程與設計,2011,32(6):1880-1884.
[10] 劉昕.IPv4與IPv6動態NAT-PT技術的實現[J].微型電腦應用,2011,27(12):61-62+IV.
[11] 張平,孫少鵬,李春青. NAT-PT技術研究及實現[J].無線電工程, 2013,43(5):7-9+28.
[12] 王子龍,陳光武. 結合DNS-ALG的NAT-PT技術研究與實現[J].無線電工程, 2012,45(11):56-57+60.
【通聯編輯:代影】