zl程序教程

您现在的位置是:首页 >  工具

当前栏目

HCIE-Security Day22:DSPN+NHRP+Mgre:实验(一)配置非shortcut方式DSPN(静态路由)

配置静态路由 方式 实验 Security HCIE
2023-09-11 14:14:52 时间


目录

产生背景&需求驱动

存在的问题

概念

NHRP:下一跳解析协议

mgre:多点gre

具体实现方式

实验:配置非shortcut方式DSPN(静态路由)

需求和拓扑

操作步骤

1、配置接口地址划分安全区域

2、配置安全策略

3、配置公网动态路由确保公网路由可达

4、 配置私网静态路由

5、配置tunnel隧道

验证和分析

1、检查nhrp邻居情况

2、使用pc3pingpc2

 3、检查路由表

基本原理

1、spoke与hub之间建立mgre隧道

1 spoke向hub注册请求

 2 hub向spoke注册应答

2、分支间路由学习

3、spoke间建立mgre隧道

具体过程

非shortcut方式

受益


dspn 是动态智能pn,在hub-spoke组网下,为公网地址动态变化的分支之间建立pn隧道的解决方案。

产生背景&需求驱动

总部与分支之间采用hub-spoke架构,依托公网建立vpn隧道,在加强安全的情况下降低成本,传统的ipsec和gre over ipsec等技术无法实现分支之间直接建立隧道进行通信,只能通过总部进行中转。

存在的问题

总部压力大:分部之间流量比过总部设备,造成cpu及内存等资源紧张

分部体验差:流量路径次优且被不必要的处理(封装解封装),导致网络延时高。

路由更新难:IPSec不支持广播和组播报文传输,从而对动态路由更新产生影响。

根本:分支之间无法直接建立隧道。

此时,DSpn应运而生。

概念

DSPN就是结合了NHRP、mgre和ipsec三种技术来解决这些问题。

NHRP:下一跳解析协议

通过nhrp下一跳地址解析协议。作用是建立和解析隧道地址到公网地址的映射关系,实现动态收集、维护和发布分支节点的公网地址。解决了分支之间互不知道对方公网地址无法建立隧道的问题,实现分支与分支之间的直接通信,减轻总部压力,降低网络延时。

隧道地址和公网地址的映射关系通过nhrp映射表维护,按照生成方式的不同,分为静态表项和动态表项两种。

静态:在spoke上手工配置hub的tunnel地址和公网地址,实现spoke于hub建立静态mgre隧道的目的。

动态:nhrp动态生成。hub通过nhrp注册报文提取各spoke的tunnel地址和公网地址而生成的nhrp映射表,spoke通过nhrp解析报文提取对端spoke的tunnel地址/子网地址和公网地址生成的nhrp映射表。

mgre:多点gre

基于gre的点到多点gre技术,它将传统的gre隧道点到点类型的tunnel接口拓展成了点到多点类型的隧道,通过改变接口类型,hub或者spoke上只需要配置一个tunnel接口便可以与多个对端建立隧道,从而减少了配置gre隧道的工作量。与gre不同,mgre建立隧道时不需要定义隧道目的地址,而是依赖nhrp告诉它。这就是动态隧道。

使一个tunnel接口可以与多个对端建立隧道,实现一对多,减少隧道配置数量,自动维护总部与分支之间的隧道关系,不用调整总部的隧道配置,使得网络维护变得更加智能化。并且隧道可以传输组播和广播协议报文。

mgre隧道接口不支持gre隧道的keepalive检测。

mgre隧道分为动态mgre隧道和静态mgre隧道

静态建立于分支spoke与总部hub之间,静态mgre隧道永久存在

动态建立于各分支spoke之间,动态mgre隧道在一定周期内没有流量转发将自动拆除。

具体实现方式

总部采用静态的公网地址,分支采用isp动态分配的公网地址。分支之间需要通信时,源spoke将通过与hub之间的静态mgre隧道交互nhrp协议获取目的spoke的公网地址,并与目的spoke建立动态mgre隧道,索道建立完成后,spoke与spoke之间的数据报文将通过该动态mgre隧道直接发送给对方,不再经过总部hub中转。

实验:配置非shortcut方式DSPN(静态路由)

需求和拓扑

某中小企业有总部(Hub)和两个分支(Spoke1和Spoke2),分布在不同地域,总部和分支的子网环境较为稳定。分支采用动态地址接入公网。

现在用户希望能够实现分支之间的PN互联。

操作步骤

1、配置接口地址划分安全区域

2、配置安全策略

//f1f2f3
security-policy
 rule name 1
  source-zone dmz
  source-zone trust
  destination-zone dmz
  destination-zone trust
  action permit
 rule name 2
  source-zone local
  source-zone untrust
  destination-zone local
  destination-zone untrust
  service gre
  service ospf
  action permit

3、配置公网动态路由确保公网路由可达

//f1
ospf 1
 area 0.0.0.0
  network 1.1.1.10 0.0.0.0
//f2
ospf 1
 area 0.0.0.0
  network 1.1.2.10 0.0.0.0
//f3
ospf 1
 area 0.0.0.0
  network 1.1.3.10 0.0.0.0
//r
ospf 1 
 area 0.0.0.0 
  network 1.1.1.1 0.0.0.0 
  network 1.1.2.1 0.0.0.0 
  network 1.1.3.1 0.0.0.0 

r1上 检查ospf配置

<r>dis ospf peer bri

	 OSPF Process 1 with Router ID 1.1.1.1
		  Peer Statistic Information
 ----------------------------------------------------------------------------
 Area Id          Interface                        Neighbor id      State    
 0.0.0.0          GigabitEthernet0/0/0             172.16.1.1       Full        
 0.0.0.0          GigabitEthernet0/0/1             172.16.1.2       Full        
 0.0.0.0          GigabitEthernet0/0/2             172.16.1.3       Full        
 --------------------------------------------------------

4、 配置私网静态路由

//f1
ip route-static 192.168.1.0 255.255.255.0 172.16.1.2
ip route-static 192.168.2.0 255.255.255.0 172.16.1.3
//f2
ip route-static 192.168.0.0 255.255.255.0 172.16.1.1
ip route-static 192.168.2.0 255.255.255.0 172.16.1.3
//f3
ip route-static 192.168.0.0 255.255.255.0 172.16.1.1
ip route-static 192.168.1.0 255.255.255.0 172.16.1.2

5、配置tunnel隧道

//f1
interface Tunnel0
 ip address 172.16.1.1 255.255.255.0
 tunnel-protocol gre p2mp
 source GigabitEthernet1/0/1
//f2
interface Tunnel0
 ip address 172.16.1.2 255.255.255.0
 tunnel-protocol gre p2mp//配置mgre
 source GigabitEthernet1/0/1
 nhrp entry 172.16.1.1 1.1.1.10 register//手动触发nhrp注册
//f3
interface Tunnel0
 ip address 172.16.1.3 255.255.255.0
 tunnel-protocol gre p2mp
 source GigabitEthernet1/0/1
 nhrp entry 172.16.1.1 1.1.1.10 register

验证和分析

1、检查nhrp邻居情况

//f2(spoke)
<f3>dis nhrp peer all
2022-03-05 12:26:25.800 
--------------------------------------------------------------------------------
Protocol-addr   Mask  NBMA-addr       NextHop-addr    Type            Flag      
   
--------------------------------------------------------------------------------
172.16.1.1      32    1.1.1.10        172.16.1.1      hub             up        
   
--------------------------------------------------------------------------------
Tunnel interface: Tunnel0
Created time    : 07:10:59
Expire time     : --
HostName        : f1
HostEsn         : 730F0B21A2183F9092AAA453309408E6
--------------------------------------------------------------------------------

刚开始spoke都只有hub的nhrp映射关系,而hub的nhrp是空的,后来spoke发了注册信息后,hub立马有了spoke的nhrp信息。

<f1>dis nhrp peer all
2022-03-05 12:26:17.090 
--------------------------------------------------------------------------------
Protocol-addr   Mask  NBMA-addr       NextHop-addr    Type            Flag      
   
--------------------------------------------------------------------------------
172.16.1.2      32    1.1.2.10        172.16.1.2      registered      up|unique 
   
--------------------------------------------------------------------------------
Tunnel interface: Tunnel0
Created time    : 20:04:16
Expire time     : 01:40:49
HostName        : f2
HostEsn         : 8E6A2843C89D3FE8B5B36BAD5F63210D
-------------------------------------------------------------------------------- 
Protocol-addr   Mask  NBMA-addr       NextHop-addr    Type            Flag      
   
--------------------------------------------------------------------------------
172.16.1.3      32    1.1.3.10        172.16.1.3      registered      up|unique 
   
--------------------------------------------------------------------------------
Tunnel interface: Tunnel0
Created time    : 20:04:14
Expire time     : 01:50:17
HostName        : f3
HostEsn         : 6190E19D04A130F29104906D1F673D33

Number of nhrp peers: 2

但是此时spoke还没有其他spoke的nhrp信息,只有在spoke之间有数据流动后才会触发注册。

2、使用pc3pingpc2

再检查spoke的nhrp

Protocol-addr   Mask  NBMA-addr       NextHop-addr    Type            Flag      
   
--------------------------------------------------------------------------------
172.16.1.2      32    1.1.2.10        172.16.1.2      remote          up        
   
--------------------------------------------------------------------------------
Tunnel interface: Tunnel0
Created time    : 00:18:39
Expire time     : 01:41:21
HostName        : f2
HostEsn         : 8E6A2843C89D3FE8B5B36BAD5F63210D

多了一条对方的nhrp表项。

 3、检查路由表

<f3>dis ip routing-table protocol static 
2022-03-05 12:31:48.560 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : Static
         Destinations : 2        Routes : 2        Configured Routes : 2

Static routing table status : <Active>
         Destinations : 2        Routes : 2

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

    192.168.0.0/24  Static  60   0          RD   172.16.1.1      Tunnel0
    192.168.1.0/24  Static  60   0          RD   172.16.1.2      Tunnel0

Static routing table status : <Inactive>
         Destinations : 0        Routes : 0

以f3为例,这个静态的路由是我们此前手动配置的,下一跳指向的是对方隧道地址。

实验拓扑已打包,回复dspn1获取。

 

 

基本原理

当设备转发一个ip报文时,根据路由表将ip报文传给下一跳的出接口mgre隧道接口,mgre在nhrp映射表种查找获取下一跳地址映射的对端公网地址,然后mgre封装ip报文,加上新的ip头,目的地址就是对端的公网地址,这样ip报文就能发向隧道对端,隧道即可建立。

但是最开始的时候,分支的nhrp表中没有其他分支的隧道地址和公网地址的映射关系,只有一个静态配置的总部的隧道地址和公网地址的映射关系,这时候,分支之间还无法建立隧道,只能先借助总部学习到彼此的路由,生成彼此的nhrp映射关系。分为三个环节。

1、spoke与hub之间建立mgre隧道

一开始,总部hub的nhrp表是空的,分支spoke的nhrp中有手动配置的到hub的静态nhrp表项,这个表项表明了hub的tunnel地址和公网地址的映射关系,分支spoke和总部hub有到彼此的路由,要建立spoke和hub之间的mgre隧道,总部要生成各分支tunnel地址与公网地址的nhrp映射表。

主要通过分支spoke主动向hub进行nhrp注册实现。

目的是打通分支到分支报文转发的通道,使得一端分支的报文可以借助hub转发到另一端分支。

1 spoke向hub注册请求

在spoke上手工配置hub的隧道和公网地址的映射,spoke将周期向hub发送nhrp注册报文,包含spoke的隧道地址和公网地址。周期性的原因是hub的nhrp是动态的会老化,进行保活。

interface Tunnel0
 nhrp entry 172.16.1.1 1.1.1.10 register
<f3>dis nhrp peer all
2022-03-05 04:59:52.080 
--------------------------------------------------------------------------------
Protocol-addr   Mask  NBMA-addr       NextHop-addr    Type            Flag      
--------------------------------------------------------------------------------
172.16.1.1      32    1.1.1.10        172.16.1.1      hub             up        
--------------------------------------------------------------------------------
Tunnel interface: Tunnel0
Created time    : 12:38:53
Expire time     : --
HostName        : f1
HostEsn         : 730F0B21A2183F9092AAA453309408E6

 

 2 hub向spoke注册应答

hub从nhrp注册请求报文中提取spoke的tunnel地址和公网地址,并生成nhrp映射表,此时spoke与hub之间的mgre隧道建立成功。

<f1>dis nhrp peer all
2022-03-05 04:57:09.080 
--------------------------------------------------------------------------------
Protocol-addr   Mask  NBMA-addr       NextHop-addr    Type            Flag      
--------------------------------------------------------------------------------
172.16.1.3      32    1.1.3.10        172.16.1.3      registered      up|unique 
--------------------------------------------------------------------------------
Tunnel interface: Tunnel0
Created time    : 12:35:06
Expire time     : 01:54:54
HostName        : f3
HostEsn         : 6190E19D04A130F29104906D1F673D33

 

 

2、分支间路由学习

目的是生成一端分支到另一端分支的路由。

非shortcut方式:分支间相互学习路由

路由表中:源分支到目的分支子网的路由下一跳为目的分支的tunnel地址。

可以理解为:每个分支要学习到所有对端的路由数据,spoke会消耗大量cpu和内存资源。

适用于:spoke节点少,路由信息量小的中小型网络

使用静态路由配置

ip route-static 192.168.0.0 255.255.255.0 172.16.1.1
ip route-static 192.168.1.0 255.255.255.0 172.16.1.2

使用动态路由配置

shortcut方式:分支路由汇聚到总部

路由表中:源分支到目的分支子网的路由下一跳为hub的tunnel地址。

可以理解为:所有访问目的分支的流量全部指向总部hub,分支间不需要相互学习路由,通过总部对分支路由汇聚后进行通告。

适用于:spoke节点多,路由信息量大的大型网络

 

3、spoke间建立mgre隧道

经过上面两步,分支间已经有了到对端分支的路由,但是还没有对端分支的nhrp映射关系。

非shortcut方式

源spoke可以学习到目的spoke的tunnel地址,因此,源spoke可以直接根据目的spoke的tunnel地址来查找目的spoke的公网地址,生成目的spoke的tunnel地址与公网地址的nhrp表。

nhrp表中:目的spoke的tunnel地址和公网地址建立映射.

shortcut方式

所有Spoke的路由下一跳全部都是Hub的Tunnel地址,源Spoke无法学习到目的Spoke的Tunnel地址。因此,源Spoke只能根据报文的目的地址来查找目的Spoke的公网地址,生成目的Spoke的子网地址与公网地址的NHRP映射表。

nhrp表中:目的spoke的子网地址与公网地址建立映射

具体过程

非shortcut方式

当spoke2的用户首次访问spoke1下的用户,将触发spoke2与spoke1之间建立动态mgre隧道,隧道建立过程

1、spoke2收到其下用户发往spoke1的数据报文后,查路由表找下一跳,得隧道地址,查nhrp没有隧道地址的公网地址,就将数据先发给了hub。同时向hub发送nhrp地址解析请求报文。

2、hub收到数据和nhrp请求后通过mgre隧道将报文转发给spoke2.

3、spoke1收到nhrp请求后,提取spoke2的隧道地址和公网地址并更新到nhrp表,向spoke2发送nhrp响应报文,携带自己的隧道地址和公网地址

(可见nhrp请求源目地址都是隧道地址。 )

4、spoke2收到nhrp响应后提取隧道和公网地址更新nhrp,spoke2和spoke1之间mgre隧道建立。

5、之后自从spoke2向spoke1发送的私网数据直接经过spoke2和spoke1之间的mgre隧道发送。

受益

1、降低成本:分支不用购买静态公网地址

2、简化配置:多个点对点gre隧道的配置量缩减为一个mgre隧道的配置,后期维护也简单。新增分支时,只需在分支配置,分支自动向总部注册。

3、增加体验:分部之间通信时延降低,提升转发性能和效率。