如上图,如果一个公司又很多分支站点,采用GRE over IPSec的话会存在如下缺点:
动态智能VPN(Dynamic Smart Virtual Private Network),简称DSVPN,是一种在Hub-Spoke组网方式下为公网地址动态变化的分支之间建立VPN隧道的解决方案。
DSVPN是华为私有协议。
为什么需要DSVPN?
因为GRE OVER IPSEC缺点比较多
A. 流量都需要经过HUB
B. 增加分部都需要配置
C. 分部非固定IP地址
DSVPN解决方案,它通过将下一跳解析协议NHRP(Next Hop Resolution Protocol)和mGRE(multipoint Generic Routing Encapsulation)技术与IPSec相结合解决了GRE over IPSec的缺陷:
降低VPN网络构建成本
DSVPN可以实现分支和总部以及分支之间的动态全连接,分支不需要单独购买静态的公网地址,节省企业开支。
简化总部Hub和分支Spoke配置
总部Hub和分支Spoke上配置的Tunnel接口从多个点对点GRE隧道接口变更为一个mGRE隧道接口。当为DSVPN网络添加新的分支Spoke时,企业网络管理员不需要更改总部Hub或任何当前分支Spoke上的配置,只需在新的分支Spoke进行配置,之后新的分支Spoke自动向总部Hub进行动态注册。
降低分支间数据传输时延
由于分支间可以动态构建隧道,业务数据可以直接转发,不用再经过总部,减少了数据转发的延迟,提升了转发性能和效率。
DSVPN典型网络架构:
企业通过总部Hub端与多个分支Spoke相连,Hub端使用静态公网地址,Spoke可以使用动态的公网地址。在该网络中,当源Spoke需要向目的Spoke发送数据报文时,源Spoke将通过与Hub之间的静态mGRE隧道交换NHRP协议获取目的Spoke的公网地址,并与目的Spoke建立动态的mGRE隧道。隧道建立完成后,Spoke与Spoke之间的数据报文将通过该动态mGRE隧道直接发送给对方,不载经过总部Hub中转。
DSVPN节点为部署DSVPN的设备,包括Spoke和Hub两种形态。
Spoke
Spoke通常是企业分支的网关设备。一般情况下,Spoke使用动态的公网地址。
Hub
Hub通常是企业总部的网关设备,接收Spoke向其注册的信息。DSVPN网络中,Hub既可使用固定的公网地址,也可使用域名。
MGRE --------多点GRE
MGRE隧道分类:
静态隧道 ----- spoke—hub
动态隧道------ spoke —spoke
mGRE是在GRE(Generic Routing Encapsulation)基础上发展而来的一种点到多点GRE技术。它将传统GRE隧道点到点(P2P)类型的Tunnel接口扩展成了点到多点(P2MP)类型的mGRE隧道接口。通过改变接口类型,Hub或Spoke上只需要配置一个Tunnel接口便可与多个对端建立隧道,从而减少了配置GRE隧道的工作量。
mGRE隧道接口包含:
mGRE隧道接口不支持GRE隧道的Keepalive检测。
采用mGRE隧道接口建立起来的GRE隧道称为mGRE隧道。mGRE隧道分为静态mGRE隧道和动态mGRE隧道两种:
NHRP(Next Hop REsolution Protocol)即下一跳地址解析协议。
1.为什么需要NHRP?
NHRP解决非直连穿越互联网映射
解决非固定IP地址2.NHRP是什么?
NHRP映射 TUNNLE到公网IP地址
源Spoke(隧道发起方)以到目的Spoke(隧道响应方)路由的下一跳地址为索引,向目的Spoke发送NHRP地址解析请求,目的Spoke收到该地址请求后将向源Spoke返回其公网地址。源Spoke获取到目的Spoke的公网地址后,两者之间将建立动态的mGRE隧道。
NHRP映射方式:
静态映射
spoke----hub动态映射
hub-spoke
NHRP映射表是有关Tunnel地址和公网地址的映射关系表。
按照生成方式的不同,NHRP映射表分为静态表项和动态表项两种:
静态表项:由网络管理员手工配置。
例如:Spoke要与Hub建立静态mGRE隧道,管理员就需要在Spoke上手工配置Hub的Tunnel地址和公网地址。
动态表项:它是由NHRP协议动态生成的表项。
例如,Hub通过NHRP注册报文提取各Spoke的Tunnel地址和公网地址而生成的NHRP映射表;各Spoke通过NHRP解析报文提取对端Spoke的Tunnel地址/子网地址和公网地址而生成的NHRP映射表。
DSVPN实现分支之间直接通信的关键是在分支之间建立隧道。DSVPN利用mGRE结合NHRP来建立分支之间的隧道。
mGRE与NHRP结合建立隧道的基本原理是:当设备转发一个IP报文时,根据路由表将IP报文传给下一跳的出接口mGRE隧道接口,mGRE在NHRP映射表中查找获取下一跳地址映射的对端公网地址。然后mGRE封装IP报文,加上新IP头,目的地址就是对端的公网地址,这样IP报文就能发向隧道对端,隧道即可建立。
可见,NHRP映射表和路由表是mGRE与NHRP结合建立隧道的重要依据。如果一端分支有对端分支Tunnel地址/子网地址与公网地址的NHRP映射、有到对端分支的路由,那么分支间就可建立mGRE隧道。而DSVPN网络开始时,分支Spoke只有一个静态配置的NHRP映射表(Hub的Tunnel地址与公网地址的映射),也只有到总部Hub的路由。因此,分支间无法直接建立隧道,只能先借助Hub学习到彼此的路由、生成彼此Tunnel地址/子网地址与公网地址的NHRP映射。这一过程主要分为如下三个环节:
建立Spoke与Hub之间的mGRE隧道
这一环节的目的是打通分支到分支报文转发的通道,使得一端分支的报文可以借助Hub转发到另一端分支。
DSVPN在Spoke与Hub之间建立的mGRE隧道是一种静态隧道,无论Spoke与Hub间是否有流量经过,该隧道一直存在。
分支间路由学习
这一环节的目的是生成一端分支到另一端分支的路由。
建立Spoke与Spoke之间的mGRE隧道
这一环节的目的是建立用于分支间直接通信的通道。当一个分支向另一个分支转发数据报文时,如果源Spoke找不到目的Spoke的公网地址,则会触发DSVPN建立Spoke与Spoke之间的mGRE隧道。
Spoke与Spoke之间建立的mGRE隧道是一种动态隧道,当Spoke与Spoke间有流量通过时,隧道自动保活;当一定周期内没有流量经过时,隧道自动拆除。
Spoke与Spoke之间的mGRE隧道建成后,分支间的数据报文即可通过该隧道直接转发,不再经过Hub中转。
DSVPN网络开始时,总部Hub的NHRP映射表是空表,分支Spoke有一个静态配置的NHRP映射表(Hub的Tunnel地址与公网地址的映射),分支Spoke和总部Hub有到彼此的路由。要建立Spoke与Hub之间的mGRE隧道,总部要生成各分支Tunnel地址/子网地址与公网地址的NHRP映射表,这主要通过分支Spoke向总部Hub进行NHRP注册来实现,其过程如下图所示。
Spoke向Hub注册请求
管理员在Spoke上手工配置Hub的Tunnel地址和公网地址以后,Spoke将定时向Hub发送NHRP注册请求报文,该报文中包含Spoke的Tunnel地址和公网地址。
Hub向Spoke注册应答
Hub从NHRP注册请求报文中提取Spoke的Tunnel地址和公网地址,并生成NHRP映射表,进而建立两者之间的mGRE隧道。
Spoke定时向Hub发送注册消息,这样就使Hub的NHRP映射表在老化时间到来前重新计时,确保分支与总部一直能够维持隧道关系。
DSVPN支持两种分支间路由学习方式:
分支间相互学习路由(非shortcut方式,也叫Normal方式) 明细路由
采用这种方式时,源分支到目的分支子网的路由下一跳为目的分支的Tunnel地址,每个分支需要学习到所有对端的路由数据。这种情况下,Spoke会消耗大量的CPU和内存资源,对其路由表容量和性能有较高的要求。而实际应用中,Spoke的性能往往较低,能存放的路由数量有限。因此,这种路由学习方式只适用于网络节点较少、路由信息量小的中小型网络。
分支路由汇聚到总部(shortcut方式) 汇总路由
采用这种方式时,源分支到目的分支子网的路由下一跳为总部的Tunnel地址,Spoke只需存放到Hub的路由。由于Spoke减少了自身的路由数量,所以该路由学习方式适用于那些网络规模大、分支较多的大型网络。
经过上述两个环节后,各分支已经有到对端分支的路由,但还没有对端分支的Tunnel地址/子网地址与公网地址的NHRP映射表。要建立Spoke与Spoke之间的mGRE隧道,就要借助NHRP协议和学习到的路由来生成NHRP映射表。不同的路由学习方式,分支学习到的路由不同,NHRP映射表的生成过程也不同:
Spoke与Spoke之间的mGRE隧道建立过程(Normal方式\非shortcut方式):
当Spoke1下的用户首次访问Spoke2下的用户时,将触发Spoke1与Spoke2之间建立动态mGRE隧道,隧道建立过程如下:
当Spoke1再次收到其下用户发送给Spoke2的数据报文时,Spoke1根据报文目的地址(192.168.2.0)在路由表中找到下一跳10.1.1.2,再根据10.1.1.2在NHRP映射表中找到公网地址2.2.2.2,即可按照公网地址2.2.2.2将此报文进行mGRE封装后直接发送给Spoke2,不再经过总部Hub。
以上过程总结为三步:
- 路由(明细路由)
- Spoke主动发起
- NHRP解析地址为10.1.1.2(Tunnel)
建立Spoke与Spoke之间的mGRE隧道(shortcut方式):
当Spoke1下的用户首次访问Spoke2下的用户时,将触发Spoke1与Spoke2之间建立动态mGRE隧道,隧道建立过程如下:
当Spoke1再次收到其下用户发送给Spoke2的数据报文时,Spoke1根据报文目的地址(192.168.2.0)查找NHRP映射表,找到Spoke2的公网地址2.2.2.2,即可根据公网地址2.2.2.2将此报文进行mGRE封装后直接发送给Spoke2,不再经过总部Hub。
当企业需要对总部和分支机构及分支机构间传输的数据近吸顶灯加密保护的时候,可以在部署DSVPN的同事绑定IPSec安全框架,实现分支间同时动态建立mGRE隧道和IPSec隧道。
控制报文在DSVPN网络中经过IPSec加密的封装格式:
IP | IPSec | GRE | NHRP
数据报文在DSVPN网络中经过IPSec加密的封装格式(传输模式):
IP | IPSec | GRE | IP | Payload
Sopke与Spoke间建立mGRE隧道并启用IPSec后的报文封装格式:
相对于传统Hub-Spoke组网的IPSec技术,DSVPN与IPSec联合部署具有如下优势:
在Spoke端配置nhrp后,会主动向Hub端发送NHRP注册报文。报告自己的公网地址和隧道地址。Hub端收到后会给于回应。
站点之间的通信报文都是通过GRE隧道来封装的。
spoke端会向hub端发送注册报文,通告自己的公网地址和隧道地址。用来建立mGRE隧道。
在响应报文中的Responder中的Client Information entry中会携带Hub端的公网地址和隧道地址。
基本场景
适用于中小型企业网络,配置简单,易于挂尽力,但存在单点故障的隐患。
Hub主备备份场景
DSVPN支持部署多台Hub设备,用以提高总部的可靠性。
Hub负载分担场景
单台Hub设备受性能制约,其下所能连接的Spoke数量有限,当网络中Spoke节点较多时,总部需要部署多台Hub来提高总部的处理能力。
级联场景:
适用于Spoke节点较多且分布较分散的大型企业网络,Hub(总部)设备处理性能要求较高,但也存在一定的单点故障隐患。
FW1 为 Hub,AR1 为 Spoke1,FW2 为 Spoke2,配置 DSVPN,使用 normal 模式建立 mGRE。
第一步: 配置MGRE
HUB
interface Tunnel1
ip address 172.16.1.10 255.255.255.0
tunnel-protocol gre p2mp
source 202.100.1.10
Spoke
1:
interface Tunnel0/0/1
ip address 172.16.1.1 255.255.255.0
tunnel-protocol gre p2mp
source 202.100.1.1
2:
interface Tunnel1
ip address 172.16.1.2 255.255.255.0
tunnel-protocol gre p2mp
source 202.100.1.11
第二步:配置NHRP
HUB Spoke 统一network-id
interface Tunnel 1
nhrp network-id 123
配置映射关系
HUB
interface Tunnel 1
nhrp entry multicast dynamic
Spoke
interface Tunnel 1
nhrp entry multicast dynamic
nhrp entry 172.16.1.10 202.100.1.10 register
第三步:配置路由
动态路由 OSPF
ospf 1 router-id 10.10.10.10
area 0.0.0.0
network 172.16.1.0 0.0.0.255
network 10.1.3.0 0.0.0.255
注意点:
默认TUNNEL运行OSPF以后,默认网络类型为P2P,需要改变网络类型
interface Tunnel1
ospf network-type broadcast
同时调整OSPF的优先级,确保HUB就是DR
interface Tunnel1
ospf dr-priority 0
第五步:DMVPN完成,可以检查测试
第六步:配置IPSEC --------DSVPN OVER IPSEC
阶段一:
ike proposal 10
authentication-algorithm sha2-256
integrity-algorithm hmac-sha2-256
#
ike peer ds_peer v2
pre-shared-key simple Huawei@123
ike-proposal 10
#
阶段二:
ipsec proposal 10
esp authentication-algorithm sha2-256
#
ipsec profile ipsec_ds
ike-peer ds_peer
proposal 10
interface Tunnel1
ipsec profile ipsec_ds
如果是在防火墙配置,需要放行安全策略
security-policy rule name GRE source-zone local source-zone untrust destination-zone local destination-zone untrust service gre action permit rule name OSPF source-zone local source-zone destination-zone local destination-zone service OSPF action permit rule name VPN source-zone trust source-zone destination-zone trust destination-zone action permit
如果配置IPSec后,需要放行的策略:
安全策略 security-policy rule name GRE source-zone local source-zone untrust source-zone destination-zone local destination-zone untrust destination-zone service gre service ISAKMP service esp action permit
Hub端的完整配置示例:
[Hub]dis current-configuration
[V200R003C00]
#
sysname Hub
#
ipsec proposal 10
#
ike proposal 10
#
ike peer ds_peer v2
pre-shared-key simple Huawei@123
ike-proposal 10
#
ipsec profile ipsec_ds
ike-peer ds_peer
proposal 10
ipsec profile ipsec_q
#
interface GigabitEthernet0/0/0
ip address 202.100.1.10 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 10.1.3.10 255.255.255.0
#
interface Tunnel0/0/0
ip address 172.16.1.10 255.255.255.0
tunnel-protocol gre p2mp
source 202.100.1.10
ospf network-type broadcast
ipsec profile ipsec_ds
nhrp entry multicast dynamic
nhrp network-id 123
#
ospf 1 router-id 10.10.10.10
area 0.0.0.0
network 10.1.3.0 0.0.0.255
network 172.16.1.0 0.0.0.255
Hub端:
interface Tunnel0/0/0
ip address 172.16.1.10 255.255.255.0
tunnel-protocol gre p2mp
source 202.100.1.10
ospf network-type broadcast
nhrp redirect //开启Hub端重定向
nhrp entry multicast dynamic
nhrp network-id 123
Spoke端:
interface Tunnel0/0/0
ip address 172.16.1.2 255.255.255.0
tunnel-protocol gre p2mp
source GigabitEthernet0/0/0
ospf network-type broadcast
ospf dr-priority 0
nhrp shortcut //Spoke端配置为shortcut模式
nhrp entry multicast dynamic
nhrp network-id 123
nhrp entry 172.16.1.10 202.100.1.10 register
与非shortcut模式的主要配置区别是:
nhrp redirect //开启Hub端重定向
nhrp shortcut //Spoke端配置为shortcut模式
shortcut模式的路由表目的地址直接是私网地址。而非shortcut模式目的地址是Tunnel地址
normal
必须是明细路由
spoke可以主动发起
得到NHRP映射关系是 tunnle-公网地址shortcut
必须是汇总路由
spoke被动发起
得到NHRP映射关系是 私网地址----公网地址
参考文档:华为HedEx文档。