NAT-PT for IPv6機制詳解及實驗

源地址:http://blog.sina.com.cn/s/blog_5ec353710101e8mb.html

一、機制概述

RFC2766、RFC2765。
NAT-PT(網絡地址轉換-協議轉換)是一種地址轉換技術,它可以把IPv6地址轉換成IPv4地址,反之亦然。NAT-PT基於RFC2766中定義的無狀態IP/ICMP轉換器(SIIT)算法。SIIT算法互譯IPv4和IPv6數據包頭部,也包括ICMP頭部。
需要注意的是,在IPv6環境中,不建議像IPv4對待NAT的態度哪樣,去使用NAT。僅僅在V4單協議與V6單協議網絡需要互相通信的時候,才建議使用NAT-PT。
【IPv6】NAT-PT <wbr>for <wbr>IPv6機制詳解及實驗

我們看上面的例子,對於IPv6單協議網絡而言,首先它有訪問IPv6因特網的需求,因此默認的IPv6流量全部交給R1,另外,它可能還有訪問IPv4因特網的需求,這時候,就需要藉助R2這臺NAT-PT設備。
2001:2::/96,這個長度爲96位的前綴是我們爲了NAT-PT操作預定義的前綴,可以自定義,但是長度必須是96bits。
在IPv6單協議網絡中產生的、去往2001:2::/96這個目的地的流量被路由到R2也就是NAT-PT設備,然後數據包中的IPv6地址被轉換爲IPv4地址並傳送給IPv4因特網中的IPv4單協議節點。
二、NAT-PT配置及原理
2.1 靜態NAT-PT
1、靜態NAT-PT(單向)
【IPv6】NAT-PT <wbr>for <wbr>IPv6機制詳解及實驗

A和B的配置都極其簡單
A的配置:
interface FastEthernet0/0
ipv6 enable
ipv6 address 2001:1::1/64
ipv6 route ::/0 2001:1::FFFF
B的配置如下:
interface FastEthernet0/0
ip address 202.101.100.2 255.255.255.0
ip route 0.0.0.0 0.0.0.0 202.101.100.1
R2的配置如下:
ipv6 unicast-routing
!
interface FastEthernet0/0 !! 連接A的接口
ipv6 enable
ipv6 address 2001:1::FFFF/64
ipv6 nat
!
interface FastEthernet1/0
ip address 202.101.100.1 255.255.255.0
ipv6 nat
!
ipv6 nat prefix 2001:2::/96 !! 是一個爲NAT-PT預留的池
ipv6 nat v6v4 source 2001:1::1 202.101.100.100 !! 相當於將2001:1::1這個IPv6的節點,“告知”給IPv4單協議網絡中的用戶知道,可以以202.101.100.100的方式訪問。
在上述配置中,我們將A節點,也就是2001:1::1映射到了IPv4網絡,映射到202.101.100.100這個IPv4地址。這樣一來B可以主動去訪問A,例如B 去ping 202.101.100.100,能夠ping通,這個過程如下:
【IPv6】NAT-PT <wbr>for <wbr>IPv6機制詳解及實驗

1) 首先B去ping 202.101.100.100,數據包如圖所示。
2) 數據包到達R2後,R2本地是已經存在了一個映射:2001:1::1映射到202.101.100.100
由於存在這個映射,因此R2將B發過來的這個數據包的目的地址202.101.100.100替換成2001:1::1,同時B的源地址是個IPv4地址,咋辦呢?還記得我們配置了NAT-PT預留的前綴麼?也就是2001:2::/96這個玩意兒,R2將B的IPv4地址映射到這個前綴上,構成一個臨時的IPv6地址:2001:2:CA65:6402,同時在本地生成一條新的映射條目:2001:2::CA65:6402映射到202.101.100.1,如上圖所示。
3) R2將原始的IPv4數據包的包頭替換成IPv6的包頭,然後轉給A。
4) A回包,數據包送給R2,R2由於已經有了2001:2::CA65:6402到202.101.100.1的映射,因此R2將IPv6包頭替換成IPv4包頭,然後再轉發給B。
注意在此時,A是可以去主動訪問B的,也就是說A可以主動ping 2001:2::CA65:6402這個臨時的地址來達到訪問B的目的。但是如果我們在R2上去clear ipv6 nat translation * ,如此2001:2::CA65:6402到202.101.100.1的映射條目就被清空了,A就無法主動訪問B了,只能B先主動訪問A。
2、靜態NAT-PT(雙向)
【IPv6】NAT-PT <wbr>for <wbr>IPv6機制詳解及實驗

R2的配置如下:
ipv6 unicast-routing
!
interface FastEthernet0/0
ipv6 enable
ipv6 address 2001:1::FFFF/64
ipv6 nat
!
interface FastEthernet1/0
ip address 202.101.100.1 255.255.255.0
ipv6 nat
!
ipv6 nat prefix 2001:2::/96
ipv6 nat v4v6 source 202.101.100.2 2001:2::2
ipv6 nat v6v4 source 2001:1::1 202.101.100.100
如此一來,A主動發起訪問連接到B,或者B主動發起訪問到A都可以。
NAT-PT#show ipv nat translations
Prot IPv4 source IPv6 source
IPv4 destination IPv6 destination
--- --- ---
202.101.100.2 2001:2::2
--- 202.101.100.100 2001:1::1
202.101.100.2 2001:2::2
--- 202.101.100.100 2001:1::1
--- ---
2.2動態NAT-PT
1、V6可以主動訪問V4(使用V4地址池)
【IPv6】NAT-PT <wbr>for <wbr>IPv6機制詳解及實驗

R2的配置如下:
ipv6 unicast-routing
!
interface FastEthernet0/0
ipv6 enable
ipv6 address 2001:1::FFFF/64
ipv6 nat
!
interface FastEthernet1/0
ip address 202.101.100.1 255.255.255.0
ipv6 nat
!
Ipv6 access-list ipv6only-network permit 2001:1::/64 any
ipv6 nat prefix 2001:2::/96
ipv6 nat v6v4 pool v6v4-pool 202.101.100.10 202.101.100.20 prefix-length 24
ipv6 nat v6v4 source list ipv6only-network pool v6v4-pool
ipv6 nat v4v6 source 202.101.100.2 2001:2::2
來分解一下關鍵命令:
Ipv6 access-list ipv6only-network permit 2001:1::/64 any
上面的命令是定義允許被IPv6 nat的源地址,用一個IPv6 ACL進行匹配。
ipv6 nat v6v4 pool v6v4-pool 202.101.100.10 202.101.100.20 prefix-length 24
上面的命令是,創建一個供v6tov4使用的地址池,這個地址池當然是IPv4的地址池,當IPv6 only的用戶,如A要訪問IPv4 only網絡的時候,就從池中取一個空閒的IPv4地址。
ipv6 nat v6v4 source list ipv6only-network pool v6v4-pool
將ACL所允許的IPv6網絡與這個v6v4地址池進行關聯
ipv6 nat v4v6 source 202.101.100.2 2001:2::2
最後這條命令是將202.101.100.2這個IPv4網絡的主機“放進來”到IPv6網絡,使得IPv6 only的用戶有訪問目標,否則,你讓IPv6 only的用戶用什麼目標地址去訪問IPv4 only網絡?
完成上述配置後,A即可主動發起訪問到B了, 使用目標地址 2001:2::2即可訪問B
2、V4可以主動訪問V6(使用V6地址池)
【IPv6】NAT-PT <wbr>for <wbr>IPv6機制詳解及實驗
R2的配置如下:
ipv6 unicast-routing
!
interface FastEthernet0/0
ipv6 enable
ipv6 address 2001:1::FFFF/64
ipv6 nat
!
interface FastEthernet1/0
ip address 202.101.100.1 255.255.255.0
ipv6 nat
!
access-list 1 permit 202.101.100.0 0.0.0.255
ipv6 nat v4v6 pool v4v6-pool 2001:2:: 2001:2::FFFF:FFFF prefix-length 96
ipv6 nat v4v6 source list 1 pool v4v6-pool
ipv6 nat prefix 2001:2::/96
ipv6 nat v6v4 source 2001:1::1 202.101.100.111
思路和V6訪問V4是一樣的。
這裏我們用一個access-list 1 匹配202.101.100.0/24網絡,同時將其與v4v6-pool這個IPv6地址池做了捆綁。使得B訪問IPv6網絡的時候,可以從池中拿IPv6地址。另外,爲了讓V4網絡訪問V6網絡有目標,還做了一條靜態映射,將2001:1::1映射到202.101.100.111,這樣,B就能夠使用202.101.100.111這個IP來訪問IPv6主機A。
3、IPv4-Mapped NAT-PT
【IPv6】NAT-PT <wbr>for <wbr>IPv6機制詳解及實驗

回顧一下前面IPv6 only網絡訪問IPv4 only網絡使用V4地址池的情況。
V4地址池使得V6用戶在穿越NAT-PT設備之後,可以從池中拿一個地址當做源地址。但是,V6用戶如何訪問V4網絡呢? 總不能讓V6 only主機去ping 202.101.100.2吧?因此,不得不在配置上增加命令:
ipv6 nat v4v6 source 202.101.100.2 2001:2::2
這條命令,將202.101.100.2 這個V4主機映射到V6網絡,使得V6網絡用戶能夠使用地址2001:2::2去訪問這個V4主機。那麼如果我們這樣的V4主機有很多呢?難道需要手工去添加靜態映射麼?
當然不用,使用IPv4-mapped功能即可,機制非常簡單,我們在R2上修改配置,關鍵配置如下:
ipv6 access-list v4map permit 2001:1::/64 2001:2::/96
ipv6 nat prefix 2001:2::/96 v4-mapped v4map
首先用一條IPv6 ACL來匹配需要進行IPv4-mapped的流量,上面的ACL源是IPv6 only網絡,目的是保留給NAT-PT的IPv6前綴。然後使用ipv6 nat prefix 2001:2::/96 v4-mapped v4map命令關聯這條ACL。這樣一來當A訪問B時,可以直接使用2001:2::CA65:6402這個地址來訪問處於V4網絡的B,注意,這裏前綴2001:2::/96是保留給NAT-PT 的IPv6前綴,後面的CA65:6402將被翻譯成IPv4地址,也就是202.101.100.2。因此R2收到這個IPv6數據包的時候,發現數據包匹配上了v4map這個IPv6ACL,因此將目的IPv6地址的最後32bits翻譯成IPv4格式(這就是IPv4目的地址),然後從V4地址池中取出一個地址替換掉IPv6地址。完美。
R2的配置如下:
ipv6 unicast-routing
!
interface FastEthernet0/0
ipv6 enable
ipv6 address 2001:1::FFFF/64
ipv6 nat
!
interface FastEthernet1/0
ip address 202.101.100.1 255.255.255.0
ipv6 nat
!
Ipv6 access-list ipv6only-network permit 2001:1::/64 any
ipv6 nat v6v4 pool v6v4-pool 202.101.100.10 202.101.100.20 prefix-length 24
ipv6 nat v6v4 source list ipv6only-network pool v6v4-pool
ipv6 access-list v4map permit 2001:1::/64 2001:2::/96
ipv6 nat prefix 2001:2::/96 v4-mapped v4map
紅茶三杯
網絡工程 | 項目管理 | IT服務管理 | CCIE培訓
學習 沉澱 成長 分享


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章