IPv6进阶:IPv6过渡技术之GRE隧道

通信网络

634人已加入

描述

实验拓扑

IPv6

R1-R3-R2之间的网络为IPv4环境

PC1及PC2处于IPv6孤岛

实验需求

R1及R2为IPv6/IPv4双栈设备

在R1及R2上部署GRE隧道使得PC1及PC2能够互相访问(先采用IPv6静态路由实现互通)

R1及R2基于建立好的GRE隧道运行OSPFv3交互IPv6路由前缀

实验步骤及配置

R3的配置如下

 

[R3] interface GigabitEthernet0/0/0
[R3-GigabitEthernet0/0/0] ip address 10.1.1.2 24
[R3] interface GigabitEthernet0/0/1
[R3-GigabitEthernet0/0/1] ip address 10.2.2.1 24

 

R1的配置如下:

 

#完成IPv4接口部分的配置:
[R1] interface GigabitEthernet0/0/0
[R1-GigabitEthernet0/0/0] ip address 10.1.1.1 24
[R1] ip route-static 0.0.0.0 0 10.1.1.2
#完成IPv6接口部分的配置:
[R1] ipv6
[R1] interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1] ipv6 enable 
[R1-GigabitEthernet0/0/1] ipv6 address 2001:FFFF 64 
#开始配置GRE Tunnel:
[R1] Interface tunnel 0/0/0
[R1-Tunnel0/0/0] tunnel-protocol gre  #隧道类型为GRE
[R1-Tunnel0/0/0] ipv6 enable
[R1-Tunnel0/0/0] source 10.1.1.1
[R1-Tunnel0/0/0] destination 10.2.2.2
[R1-Tunnel0/0/0] ipv6 address auto link-local #注意如果不为tunnel口配置全局单播地址则必须为接口配置linklocal地址,否则接口的ipv6协议状态为down,如果配置了全局单播地址则系统将自动配置linklocal地址,因此无需再配置这条命令。
[R1] Ipv6 route-static 2001: 64 tunnel 0/0/0

 

R2的配置如下:

 

#完成IPv4接口部分的配置:
[R2] interface GigabitEthernet0/0/0
[R2-GigabitEthernet0/0/0] ip address 10.2.2.2 24
[R2] ip route-static 0.0.0.0 0 10.2.2.1
#完成IPv6接口部分的配置
[R2] ipv6
[R2] interface GigabitEthernet0/0/1
[R2-GigabitEthernet0/0/1] ipv6 enable
[R2-GigabitEthernet0/0/1] ipv6 address 2001:FFFF 64
#开始配置Tunnel:
[R2 Interface tunnel 0/0/0
[R2-Tunnel0/0/0] tunnel-protocol gre
[R2-Tunnel0/0/0] ipv6 enable
[R2-Tunnel0/0/0] source 10.2.2.2
[R2-Tunnel0/0/0] destination 10.1.1.1
[R2-Tunnel0/0/0] ipv6 address auto link-local
[R2] Ipv6 route-static 2001: 64 tunnel 0/0/0

 

完成配置后,首先查看一下R1的接口IPv6信息:

 

[R1] display ipv6 interface brief
*down: administratively down
(l): loopback
(s): spoofing
Interface Physical Protocol
GigabitEthernet0/0/1 up up
[IPv6 Address] 2001:FFFF
Tunnel0/0/0 up up
[IPv6 Address] FE80:101

 

从上面的输出可以看到,隧道接口的物理和协议都要是UP的。从报文的层面看,PC1发出的IPv6报文到达R1后,R1在原有报文的基础上先增加了一个GRE的头部,再增加一个IPv4的隧道头部,以便数据包能够穿越IPv4网络到达隧道对端。

报文的实际交互过程如下:

IPv6

在R1、R2的GRE隧道建立好后,为了使PC1与PC2能够通信,我们在R1及R2上配置了IPv6静态路由,例如在R1上配置了静态路由“Ipv6 route-static 2001: 64 tunnel 0/0/0”,如此一来当R1收到去往2001:/64网络的数据包时,就会将数据包送到隧道进行转发。

然而静态路由是需要手工配置的,而且可扩展性较差。采用动态路由协议可以解决这些问题,但是R1-R3并非直连路由器,如何能够运行IPv6动态路由协议?

得益于R1-R2之间已经建立起来的GRE隧道,R1、R2相当于打通了一条承载在IPv4网络上的IPv6点到点“直连链路”,虽然这条链路是虚拟的。基于这条直连链路,R1、R2即可运行IPv6动态路由协议从而动态的交互路由信息。

IPv6

现在,去掉R1、R2上配置的IPv6静态路由。然后在R1及R2上增补配置:

R1的增补的配置如下:

 

#创建OSPFv3进程,并分配OSPFv3 RouterID:
[R1] ospfv3 1
[R1-ospfv3-1] router-id 1.1.1.1
#在tunnel0/0/0口上激活OSPFv3,加入区域0:
[R1] interface Tunnel 0/0/0
[R1-Tunnel0/0/0] ospfv3 1 area 0
#在GE0/0/1口上激活OSPFv3,加入区域0:
[R1] interface GigabitEthernet 0/0/1
[R1-GigabitEthernet0/0/1] ospfv3 1 area 0

 

R2的增补的配置如下:

 

[R2] ospfv3 1
[R2-ospfv3-1] router-id 2.2.2.2
[R2] interface Tunnel 0/0/0
[R2-Tunnel0/0/0] ospfv3 1 area 0
[R2] interface GigabitEthernet 0/0/1
[R2-GigabitEthernet0/0/1] ospfv3 1 area 0

 

完成上述配置后,R1、R2即会通过GRE Tunnel发送OSPFv3 Hello试图发现邻居,随后建立OSPFv3邻居关系。

 

[R1] display ospfv3 peer
OSPFv3 Process (1)
OSPFv3 Area (0.0.0.0)
Neighbor ID Pri State Dead Time Interface Instance ID
2.2.2.2 1 Full/- 0040 Tun0/0/0 0

 

邻居的状态已经Full了。

 

[R1] display ipv6 routing-table protocol ospf
Public Routing Table : OSPFv3
Summary Count : 2
OSPFv3 Routing Table's Status : < Active >
Summary Count : 1
Destination : 2001: PrefixLength : 64
NextHop : FE80:202 Preference : 10
Cost : 1563 Protocol : OSPFv3
RelayNextHop : :: TunnelID : 0x0
Interface : Tunnel0/0/0 Flags : D

 

R1已经学习到2001:/64的路由,R2也学到了2001:/64的路由,因此PC1及PC2能够互相ping通,通过抓包可以观察到OSPFv3在GRE隧道上的工作过程。实际上我们并未给Tunnel接口配置全局单播IPv6地址,这里R1及R2使用的是Tunnel接口的链路本地地址建立OSPFv3邻居关系。

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分