6to4隧道屬於tunnel隧道中的一種技術,但它能夠實現點到多點建立隧道。
6to4隧道特徵:
1、地址格式前綴爲/48的IPV6地址,由2002::/16和邊緣路由器的IPV4地址組合而成,2002::/16是一個專用於6to4隧道的地址範圍。
2、邊緣路由器自動使用嵌入在IPv6地址中的IPV4地址建立隧道。當目標地址直接是IPV6且內嵌IVP4的,就在此地址中提取出IPV4當成tunnel的destination,從而與該地址建立起6to4隧道;如果目標地址非內嵌IPV4的IPV6地址,則根據路由表中的目標地址的下一跳IPV6地址中的IPv4地址當作tunnel的destination建立起隧道。注意這裏的“目標地址下一跳IPV6地址”肯定是以2002開頭且內嵌有ipv4的地址。
6to4隧道缺點:
1、只能使用靜態路由或BGP。這是因爲其他路由協議使用鏈路本地地址來建立鄰居關係和交換更新,而鏈路本地地址不符合6to4隧道的要求(以2002打頭且內嵌了ipv4地址)。這個規定使得6to4模式不像tunnel隧道模式爲gre ip或gre ipv6可以兼容所有地址格式通過。
2、不能在隧道的IPV4路徑上使用NAT,同樣是由於6to4隧道對地址的要求。
實驗目錄:
1)6to4隧道基本配置
2)使隧道兩端接口建立成功
3)使目標數據流經過隧道傳輸
實驗拓撲:
實驗配置:
1)各接口配置哪上圖,在邊緣路由器R2、R3上配置6to4隧道。
R2#
interface Tunnel2
no ip address
no ip redirects
ipv6 address 2002:101:102::1/128
ipv6 rip ripng_1 enable
tunnel source 1.1.1.2
tunnel mode ipv6ip 6to4
R3#
interface Tunnel3
no ip address
no ip redirects
ipv6 address 2002:202:202::/128
ipv6 rip ripng_1 enable
tunnel source 2.2.2.2
tunnel mode ipv6ip 6to4
查看路由表
R2#sh ipv rou
IPv6 Routing Table - 4 entries
C 20::/64 [0/0]
via ::, Serial1/3
L 20::1/128 [0/0]
via ::, Serial1/3
R 50::/64 [120/2]
via FE80::CA07:21FF:FE8C:0, Serial1/3
L FF00::/8 [0/0]
via ::, Null0
R2#
在tunnel兩端配置ripng路由協議,但路由表中沒有看到對端目標地址的路由,這是由於鏈路本地地址格式符合6to4隧道的要求,從而不能建立鄰居。所以爲了使隧道兩端接口地址能夠通訊即建立起6to4隧道,必須使用靜態路由(注意了這裏的靜態路由必須以接口作爲下一跳,如果以IP地址作爲下一跳就沒用了,因爲對端IP地址Ping不能。這點在另一章中已經細講過)。
R2(config)#ipv route 2002::/16 tunnel 2
R3(config)#ipv route 2002::/16 tunnel 3
測試隧道連通性及路由表
R2(config-if)#do ping 2002:202:202::Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2002:202:202::, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/50/72 ms
R2(config-if)#
R2(config-if)#do sh ipv rou
IPv6 Routing Table - 6 entries
C 20::/64 [0/0]
via ::, Serial1/3
L 20::1/128 [0/0]
via ::, Serial1/3
R 50::/64 [120/2]
via FE80::CA07:21FF:FE8C:0, Serial1/3
S 2002::/16 [1/0]
via ::, Tunnel2 \\這條是目標路由進入6to4隧道的關鍵。
LC 2002:101:102::1/128 [0/0]
via ::, Tunnel2
L FF00::/8 [0/0]
via ::, Null0
R2(config-if)#
可以知道6to4隧道建立成功,那麼再測試隧道更遠的目標地址
R2(config-if)#do ping 30::1 re 1Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 30::1, timeout is 2 seconds:
*Mar 1 03:10:56.111: IPv6: SAS picked source 20::1 for 30::1 (Serial1/3)
*Mar 1 03:10:56.115: IPV6: source 20::1 (local)
*Mar 1 03:10:56.119: dest 30::1
*Mar 1 03:10:56.119: traffic class 0, flow 0x0, len 100+0, prot 58, hops 64, Route not found.
Success rate is 0 percent (0/1)
從傳輸過程可以知道,目標地址無法轉發,因爲路由表中不存在該路由。所以必須目標路由,R2、R3上配置對應路由
R2(config)#ipv route 30::/64 tunnel 2
R3(config)#ipv rou 20::1/64 tunnel 3
查看路由表及測試結果
R2(config)#do sh ipv rou sta
IPv6 Routing Table - 7 entries
S 30::/64 [1/0]
via ::, Tunnel2
S 2002::/16 [1/0]
via ::, Tunnel2
R2(config)#do ping 30::1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 30::1, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
R2(config)#
看上去路由表已經有了轉發的出口了,但爲什麼ping不通呢?根據6to4隧道的第2點的特徵知道,要麼目標地址是IPV6且內嵌IVP4,要麼路由表中目標地址的下一跳是IPV6且IPV4地址,但ping 30::1任何一點也沒有達到。所以無法觸發隧道的建立。在這裏只能修改目標路由的下一跳。
R2(config)#no ipv route 30::/64 tunnel 2
R2(config)#ipv route 30::/64 2002:202:202::
R3(config)#no ipv rou 20::1/64 tunnel 3
R3(config)#ipv rou 20::1/64 2002:101:102::1
這裏的目標路由只能一條一條的添加,除非只有這兩個點建立隧道,纔可以使用默認路由。
最後測試連接成功
R2(config)#do ping 30::1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 30::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/48/84 ms
R2(config)#