实验拓扑
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网络到达隧道对端。
报文的实际交互过程如下:
在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动态路由协议从而动态的交互路由信息。
现在,去掉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邻居关系。
审核编辑:汤梓红
评论
查看更多