HW-GRE通过OSPF路由实现两个远程IPv4 子网互联实验

一、组网介绍

        如图所示,RouterA 和 RouterC是两分支机构的外网网关,PC1和PC2分别代表两分支机构私网。现需要通过在Internet上建立GRE隧道,采用OSPF动态路由方式实现这两个远程的私网互通,并且需要实现私网数据传输的可靠性。        

 二、配置思路

        从基本要求可以得知,此实验是通过GRE 在公网架设VPN隧道实现两个私网的连通性,同时需要保证私网数据传输的可靠性,并且要求使用动态路由协议OSPF实现互通,因此可采用以下思路进行配置:

        (1)公网配置OSPF路由协议实现公网间路由互通(OSPF进程为1,区别与私网OSPF进程)。

        (2)在 RouterA 和 RouterC上分别创建Tunnel 接口,配置IP地址和GRE封装协议,创建GRE隧道。并指定源地址和目的地址。

        (3)在 RouterA和 RouterC上分别采用动态OSPF路由配置方式配置经过 Tunnel 接口转发的路由。最终使PC1和 PC2所代表的子网之间的流量通过GRE隧道传输,实现两子网互通。

        需要注意:当私网、tunnel接口与公网都采用同一种动态路由协议时,为了确保安全性,不要采用相同的路由进程,因为私网数据报文是不能在公网上被转发的。故两个私网OSPF进程分别为2和3。

        (4)最后为了实现数据传输的可靠性,在GRE隧道两端的Tunnel接口上使能Keepalive功能,以便能及时检测隧道链路状态。

三、配置过程

        步骤一:配置IP地址、创建loop back0接口并为其配置IP地址

        IP地址配置如图所示:此处不再赘余。

        步骤二:公网配置OSPF实现公网互通。

        公网OSPF配置中OSPF进程为1,区域为0,OSPF路由器ID为各设备的loopback0接口IP地址。具体配置如下:

        #RouterA配置OSPF

[Router_A]ospf 1 router-id 1.1.1.1

[Router_A-ospf-1]area 0

[Router_A-ospf-1-area-0.0.0.0]net 1.1.1.1 0.0.0.0

[Router_A-ospf-1-area-0.0.0.0]net 20.1.1.0 0.0.0.255

[Router_A-ospf-1-area-0.0.0.0]

        #RouterB配置OSPF

[Router_B]ospf 1 ro 2.2.2.2

[Router_B-ospf-1]area 0

[Router_B-ospf-1-area-0.0.0.0]net 2.2.2.2 0.0.0.0

[Router_B-ospf-1-area-0.0.0.0]net 20.1.1.0 0.0.0.255

[Router_B-ospf-1-area-0.0.0.0]net 30.1.1.0 0.0.0.255

[Router_B-ospf-1-area-0.0.0.0]

        #RouterC配置OSPF

[Router_C]ospf 1 ro 3.3.3.3

[Router_C-ospf-1]area 0

[Router_C-ospf-1-area-0.0.0.0]net 3.3.3.3 0.0.0.0

[Router_C-ospf-1-area-0.0.0.0]net 30.1.1.0 0.0.0.255

[Router_C-ospf-1-area-0.0.0.0]

      #检查OSPF路由

        完成上述配置之后使用命令查看OSPF路由(以RouterA设备为例),可以看到此时RouterA设备的OSPF路由表中存在RouterC设备的loopback0接口IP地址,公网OSPF路由配置成功。

        接下来进一步验证公网联通性。在RouterA设备上使用ping命令测试与RouterC设备的loopback0接口连通性,可以看到此时可以互通,证明公网互通,OSPF路由部署成功。

步骤三:配置GRE VPN

1、在routerA和routerB设备分别创建GRE tunnel0/0/1隧道接口并配置tunnel接口IP地址

        配置GRE 的tunnel接口的IP地址时,因为Tunnel接口运行的链路层协议为PPP,而在串行链路中,两端的IP地址是可以在不同IP网段的,所以虚拟点对点连接的GRE隧道两端的Tunnel接口的IP地址可以不在同一IP网段,也可实现路由畅通的。但通常是把它们的IP地址配置在同一IP网段。此外,tunnel接口IP地址不能与同设备的其他接口的IP地址在同一个IP网段,通常用私网IP地址。

        为了方便,此处GRE tunnel两端的IP地址同处于10.2.1.0/24网段。具体配置如下:

        #RouterA设备配置

[Router_A]int Tunnel 0/0/1

[Router_A-Tunnel0/0/1]ip add 10.3.1.1 24

        #RouterC设备配置

[Router_C]int Tunnel 0/0/1

[Router_C-Tunnel0/0/1]ip add 10.3.1.2 24

2、配置GRE tunnel隧道的封装协议类型

        此处是使用GRE隧道进行公网传输,故此时封装协议类型为GRE。需要注意:只有指定tunnel接口的协议封装类型才能指定源地址或源接口,以及目的地址。在RouterA和RouterC设备配置GRE封装协议命令如下:

        #RouterA设备配置

[Router_A-Tunnel0/0/1]tunnel-protocol gre

        #RouterC设备配置

[Router_C-Tunnel0/0/1]tunnel-protocol gre

3、指定GRE tunnel接口的源地址和目的地址

        注意:此处除了指定GRE tunnel接口的源IP地址外,还可以通过Tunnel接口的源接口实现,但需要注意此时源接口不能指定为自身GRE隧道的Tunnel接口,但可以指定为其他隧道的Tunnel接口作为本GRE隧道的源接口。

        此外,在指定GRE tunnel隧道的源地址和目的地址时,必须先配置该隧道接口的封装协议类型。

        #RouterA设备配置

[Router_A-Tunnel0/0/1]source 20.1.1.1 //指定隧道源IP地址,为本地设备的GE0/0/0接口的IP地址,也是本端隧道发送报文中的源IP地址

[Router_A-Tunnel0/0/1]destination 30.1.1.2 //指定隧道目的IP地址,为 RouterC的GE0/0/1 接口的IP地址,也是本端隧道发送报文中的目的IP地址。

        #RouterB设备配置

        同理可配置:

[Router_C-Tunnel0/0/1]source 30.1.1.2

[Router_C-Tunnel0/0/1]destination 20.1.1.1

4、检查GRE tunnel接口配置

        完成上述配置之后,GREtunnel接口状态便会进入up状态,并且两端的tunnel接口可以连通,证明直连的GRE tunnel隧道建立成功。以routerC示例如下:

5、为了确保GRE隧道中数据传输的可靠性,在两端Tunnel接口上使能 keepalive 功能实现双向主动检测隧道通达性能力( keepalive 功能是单向性的)。

        需要注意,keep alive功能在隧道两端设备配置静态路由时,作用较大,而若是两端使用了动态路由协议,则作用较小。因为动态路由协议自身可以动态发现并适应网络的变化,Keepalive功能不再是必需的。

        为了观察keepalive功能效果,此处开启Keepalive检测功能。具体配置如下:

        #RouterA配置

[RouterA-Tunnel0/0/1]keepalive

        #RouterC配置

[Routerc-Tunnel0/0/1]keepalive

6、配置GRE Tunnel接口的路由

        在 Tunnel 接口上配置路由的目的其实就是为了定义需要由 Tunnel 接口转发的私同网数据流。可以采用静态或动态路由配置方式实现。

        在配置Tunnel接口通过动态路由实现时需要注意:

        当使用动态路由时,在Tunnel接口和与本端私网相连的入接口上都要使用相同动态路由协议(如:routerC的tunnel0/0/1接口要与私网的G0/0/0接口使用同一个路由协议)。

        另外,当私网、tunnel接口与公网都采用同一种动态路由协议时,为了确保安全性,不要采用相同的路由进程,因为私网数据报文是不能在公网上被转发的。故此实验两个私网OSPF进程分别为2和3。

        因此此处的配置为在RouterA和RouterC上分别创建OSPF进程为2和3,区域为0,而路由器ID不用配置(路由器ID在配置公网OSPF路由时已配置,共用一个即可),最后分别将RouterA和、RouterC的tunnel接口和连接私网的接口宣告进OSPF。具体配置如下:

        #RouterA配置

[RouterA]ospf 2

[RouterA-ospf-2]area 0

[RouterA-ospf-2-area-0.0.0.0]net 10.3.1.0 0.0.0.255

[RouterA-ospf-2-area-0.0.0.0]net 10.1.1.0 0.0.0.255

        #RouterC配置

[Routerc]ospf 3

[Routerc-ospf-3]area 0

[Routerc-ospf-3-area-0.0.0.0]net 10.3.1.0 0.0.0.255

[Routerc-ospf-3-area-0.0.0.0]net 10.2.1.0 0.0.0.255

步骤四:配置结果验证 

        1、GRE VPN隧道建立测试

        配置完成后,在 RouterA 和 RouterC上执行display ip routing-table命令查看OSPF路由表,以RouterA为例:

        可以看到去往对端用户侧网段的OSPF路由的出接口为Tunnel 接口,下一跳是对端Tunnel 接口IP地址,但去往Tunnel目的端物理地址(30.1.1.0/24)的路由下一跳不是对端Tunnel接口的IP地址,而是RouterB 连接RouterA的公网接口的IP地址。并且在RouterB设备的G0/0/0接口抓包,可以看到被GRE封装后的报文(如下图所示),由此证明公网和私网报文转发的路径是分开的,GRE VPN隧道配置成功。此时PC1和PC2可以相互 Ping通了。

2、keepalive功能检测

         由于GRE协议并不具备检测链路状态的功能,GRE也是一种无状态的隧道,即隧道的任何一端都不会维护它与对端的连接状态。默认情况下,系统根据隧道源物理接口状态设置Tunnel接口状态。此时如果远端端口不可达,隧道并不能及时关闭该Tunnel连接,这样会造成源端会不断的向对端转发数据,而对端却因Tunnel不通而丢弃所有报文,由此就会形成数据发送的空洞。

        GRE隧道源端使能Keepalive检测功能后,则会周期地发送Keepalive探测报文((一种类似于动态路由协议中很小的 hello 报文))给对端检测隧道的连通状态。在定时器失效前时间内,源端收到对端的回应,则证明对端可达,不进行任何操作;反之在计时器失效时收不到对端的回应报文,则证明不可达,此时,源端将关闭隧道连接,避免因对端不可达造成的数据丢失,保证数据传输的可靠性。

        检测过程如下:

        在PC1上使用ping命令ping PC2的地址,然后在RouterA对应Tunnel接口视图下执行display keepalive packets count命令查看keepalive 报文统计。输出如下(以RouterA为例)。

        然后手动关闭routerC设备的G0/0/1接口模拟网络故障,命令如下:

[Routerc]int g0/0/1

[Routerc-GigabitEthernet0/0/1]shutdown

        最后查看tunnel接口的状态,以RouterA为例,输出如下:

        可以看到此时RouterA的GRE tunnel0/0/1隧道处于关闭状态。

        紧接着开启routerC设备的G0/0/1接口恢复网络,命令如下:

[Routerc-GigabitEthernet0/0/1]un shutdown

        再次查看查看tunnel接口的状态,以RouterA为例,输出如下。可以看到此时RouterA的GRE tunnel0/0/1隧道状态已经恢复至up状态。并且此时PC1和PC2恢复通信。        

        自此keepalive功能演示完毕。

(本实验的原型来源于华为技术认证《华为VPN学习指南》一书。附:华为VPN学习指南_百度百科 (baidu.com)

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值