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


    实验拓扑

    • 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
    
    • 1
    • 2
    • 3
    • 4

    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
    
    • 1
    • 2
    • 3
    • 4
    #完成IPv6接口部分的配置:
    [R1] ipv6
    [R1] interface GigabitEthernet0/0/1
    [R1-GigabitEthernet0/0/1] ipv6 enable 
    [R1-GigabitEthernet0/0/1] ipv6 address 2001:1111::FFFF 64 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    #开始配置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:2222:: 64 tunnel 0/0/0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    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
    
    • 1
    • 2
    • 3
    • 4
    #完成IPv6接口部分的配置
    [R2] ipv6
    [R2] interface GigabitEthernet0/0/1
    [R2-GigabitEthernet0/0/1] ipv6 enable
    [R2-GigabitEthernet0/0/1] ipv6 address 2001:2222::FFFF 64
    
    • 1
    • 2
    • 3
    • 4
    • 5
    #开始配置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:1111:: 64 tunnel 0/0/0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    完成配置后,首先查看一下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:1::FFFF
    Tunnel0/0/0 up up
    [IPv6 Address] FE80::A01:101
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

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

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

    在R1、R2的GRE隧道建立好后,为了使PC1与PC2能够通信,我们在R1及R2上配置了IPv6静态路由,例如在R1上配置了静态路由“Ipv6 route-static 2001:2222:: 64 tunnel 0/0/0”,如此一来当R1收到去往2001:2222::/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
    
    • 1
    • 2
    • 3
    #在tunnel0/0/0口上激活OSPFv3,加入区域0:
    [R1] interface Tunnel 0/0/0
    [R1-Tunnel0/0/0] ospfv3 1 area 0
    
    • 1
    • 2
    • 3
    #在GE0/0/1口上激活OSPFv3,加入区域0:
    [R1] interface GigabitEthernet 0/0/1
    [R1-GigabitEthernet0/0/1] ospfv3 1 area 0
    
    • 1
    • 2
    • 3

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    完成上述配置后,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/- 00:00:40 Tun0/0/0 0
    
    • 1
    • 2
    • 3
    • 4
    • 5

    邻居的状态已经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:2222:: PrefixLength : 64
    NextHop : FE80::A02:202 Preference : 10
    Cost : 1563 Protocol : OSPFv3
    RelayNextHop : :: TunnelID : 0x0
    Interface : Tunnel0/0/0 Flags : D
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

  • 相关阅读:
    【Unity入门计划】Unity实例-C#如何通过封装实现对数据成员的保护
    第十四届蓝桥杯 三国游戏
    c++插入排序算法
    什么是IoT数字孪生?
    痞子衡嵌入式:i.MXRT中FlexSPI外设不常用的读选通采样时钟源 - loopbackFromSckPad
    GNN动手实践(二):复现图注意力网络GAT
    实战+代码!Selenium + Phantom JS爬取天天基金数据
    docker install private registry 【docker 安装 registry & 仅证书认证】
    第十二次CCF计算机软件能力认证
    java lambda表达式自定义排序
  • 原文地址:https://blog.csdn.net/weixin_43025343/article/details/128094675