DSVNP原理以及相关配置

DSVPN(动态智能虚拟专用网络)是一种解决公网地址动态变化分支间建立安全隧道的技术。它通过mGRE结合NHRP,实现分支间无需总部中转的直接通信。DSVPN包括静态和动态mGRE隧道,支持NAT穿越和IPSec保护,适用于不同规模的网络部署,并可通过双Hub实现主备或负载分担。配置DSVPN涉及OSPF路由协议、NHRP注册、IPSec提议和安全框架等步骤。
摘要由CSDN通过智能技术生成

DSVPN简介

动态智能VPN(Dynamic Smart Virtual Private Network),是一种在HUB-SPOKE组网方式下为公网地址动态变化的分支之间建立VPN隧道的解决方案。

背景

越来越多的企业希望建立Hub-Spoke方式的IPSec VPN网络将企业总部(Hub)与地理位置不同的多个分支(Spoke)相连,从而加强企业的通信安全、降低通信成本。当企业总部采用静态的公网地址接入Internet,分支机构采用动态的公网地址接入Internet时,使用传统的IPSec、GRE over IPSec等技术构建VPN网络将存在一个问题,即分支之间无法直接通信(源分支无法获取目的分支公网地址,也就无法在分支之间直接建立隧道),所有分支之间的通信数据只能由总部中转。

在这里插入图片描述

缺点:

  • 总部在中转分支之间的数据流时会消耗总部HUB的CPU及内存资源,造成资源紧张。

  • 总部要对分支间的数据流封装和解封装,会引入额外的网络延时。

  • 当IPSec网络规模不断扩展时,为减少路由配置和维护,需要部署动态路由协议。但IPSec和动态路由协议之间存在一个基础问题,动态路由协议依赖于组播协议报文或广播协议报文进行路由更新,而IPSec不支持广播报文和组播报文的传输。

DSVPN基本概念

DSVPN典型网络架构
在这里插入图片描述

该网络中,当源Spoke需要向目的Spoke发送数据报文时,源Spoke将通过与Hub之间的静态mGRE隧道交互NHRP协议获取目的Spoke的公网地址,并与目的Spoke建立动态mGRE隧道。隧道建立完成后,Spoke与Spoke之间的数据报文将通过该动态mGRE隧道直接发送给对方,不再经过总部Hub中转。

mGRE隧道接口

mGRE隧道接口包含以下元素:

  • 隧道源地址:GRE封装后的报文源地址,图中隧道一端的公网地址。
  • 隧道目的地址:GRE封装后的报文目的地址,即图中隧道另一端的公网地址。与GRE隧道接口手工指定目的地址不同,mGRE隧道目的地址来自于NHRP协议。
  • 隧道接口IP地址:隧道接口地址和其他物理接口上的IP地址一样,用于设备之间的通信(例如获取路由信息等),即图中的Tunnel地址。

采用mGRE隧道接口建立起来的GRE隧道称为mGRE隧道。mGRE隧道分为静态mGRE隧道和动态mGRE隧道两种:

  • 静态mGRE隧道建立于分支Spoke与总部Hub之间,静态mGRE隧道永久存在。
  • 动态mGRE隧道建立于各分支Spoke之间,动态mGRE隧道在一定周期内没有流量转发将自动拆除。

DSVPN基本原理

DSVPN实现分支之间直接通信的关键是在分支之间建立隧道。DSVPN利用mGRE结合NHRP来建立分支之间的隧道。与GRE不同,mGRE建立隧道时不需要定义隧道目的地址,而是依赖NHRP告诉它,这就为在动态地址变化的分支间建立隧道创造了条件。

mGRE与NHRP结合建立隧道的基本原理是:当设备转发一个IP报文时,根据路由表将IP报文传给下一跳的出接口mGRE隧道接口,mGRE在NHRP映射表中查找获取下一跳地址映射的对端公网地址。然后mGRE封装IP报文,加上新IP头,目的地址就是对端的公网地址,这样IP报文就能发向隧道对端,隧道即可建立。

三个环节:

  1. 建立Spoke与Hub之间的mGRE隧道

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

    DSVPN在Spoke与Hub之间建立的mGRE隧道是一种静态隧道,无论Spoke与Hub间是否有流量经过,该隧道一直存在。

  2. 分支间路由学习

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

  3. 建立Spoke与Spoke之间的mGRE隧道

    这一环节的目的是建立用于分支间直接通信的通道。当一个分支向另一个分支转发数据报文时,如果源Spoke找不到目的Spoke的公网地址,则会触发DSVPN建立Spoke与Spoke之间的mGRE隧道。

    Spoke与Spoke之间建立的mGRE隧道是一种动态隧道,当Spoke与Spoke间有流量通过时,隧道自动保活;当一定周期内没有流量经过时,隧道自动拆除。

1.建立Spoke与Hub之间的mGRE隧道

在这里插入图片描述

DSVPN网络开始时,总部Hub的NHRP映射表是空表,分支Spoke有一个静态配置的NHRP映射表(Hub的Tunnel地址与公网地址的映射),分支Spoke和总部Hub有到彼此的路由。要建立Spoke与Hub之间的mGRE隧道,总部要生成各分支Tunnel地址/子网地址与公网地址的NHRP映射表,这主要通过分支Spoke向总部Hub进行NHRP注册来实现

  1. Spoke向Hub注册请求

    管理员在Spoke上手工配置Hub的Tunnel地址和公网地址以后,Spoke将定时向Hub发送NHRP注册请求报文,该报文中包含Spoke的Tunnel地址和公网地址。

  2. Hub向Spoke注册应答

    Hub从NHRP注册请求报文中提取Spoke的Tunnel地址和公网地址,并生成NHRP映射表,进而建立两者之间的mGRE隧道。

2.分支间路由学习

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

每个分支需要学习到所有对端的路由数据。这种情况下,Spoke会消耗大量的CPU和内存资源,对其路由表容量和性能有较高的要求。而实际应用中,Spoke的性能往往较低,能存放的路由数量有限。因此,这种路由学习方式只适用于网络节点较少、路由信息量小的中小型网络。

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

实现所有访问目的分支的流量全部指向总部Hub。分支间不需要相互学习路由,通过总部对分支路由汇聚后进行通告,该路由学习方式适用于那些网络规模大、分支较多的大型网络。

3.建立Spoke与Spoke之间的mGRE隧道

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

在这里插入图片描述

当Spoke1下的用户首次访问Spoke2下的用户时,将触发Spoke1与Spoke2之间建立动态mGRE隧道,隧道建立过程如下:

  1. Spoke1收到其下用户发往Spoke2的数据报文后:

    • 根据报文目的地址(192.168.2.0)在路由表中找到下一跳10.1.1.2(Spoke2的Tunnel地址),但在NHRP映射表中没有查找10.1.1.2对应的公网地址,就默认将该数据报文直接转发给Hub。
    • 构建并向Hub发送NHRP地址解析请求报文,请求10.1.1.2对应的公网地址。
  2. Hub收到Spoke1发送的数据报文和NHRP地址解析请求报文后,将报文通过Hub与Spoke2间的mGRE隧道转发给Spoke2。

  3. Spoke2收到NHRP地址解析请求报文后:

    • 从NHRP地址解析请求报文中提取Spoke1的Tunnel地址和公网地址,并将该信息更新到自己的NHRP映射表中(见图4-5中的红色字体)。
    • 构建并向Spoke1发送NHRP地址解析应答报文(携带Spoke2的Tunnel地址10.1.1.2和公网地址2.2.2.2)。
  4. Spoke1收到NHRP地址解析应答报文后,从应答报文中提取Spoke2的Tunnel地址和公网地址,更新到自己的NHRP映射表中(见图4-5中的红色字体),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。

shortcut方式

在这里插入图片描述

当Spoke1下的用户首次访问Spoke2下的用户时,将触发Spoke1与Spoke2之间建立动态mGRE隧道,隧道建立过程如下:

  1. Spoke1收到其下用户发往Spoke2下用户的数据报文后,根据报文目的地址(192.168.2.0)在路由表中找到下一跳10.1.1.3(Hub的Tunnel地址),并在NHRP映射表中找到10.1.1.3对应的公网地址3.3.3.3(Hub的公网地址),就将数据报文转发给Hub。

  2. Hub收到Spoke1转发的数据报文后:

    • 将此报文通过Hub与Spoke2间的mGRE隧道转发给Spoke2。
    • 检查发现接收和发送数据报文的Tunnel接口属于同一个NHRP域(见nhrp network-id),就构建并向Spoke1发送NHRP重定向报文(携带Hub的Tunnel地址和公网地址,以及需要解析的数据报文的目的地址192.168.2.0)。
  3. Spoke1收到NHRP重定向报文后,构建并向Hub发送NHRP地址解析请求报文(携带Spoke1的Tunnel地址10.1.1.1和公网地址1.1.1.1,以及需要解析的数据报文的目的地址192.168.2.0)。

  4. Hub收到NHRP地址解析请求报文后转发给Spoke2处理。

  5. Spoke2收到NHRP地址解析请求报文后:

    • 从NHRP地址解析请求中提取Spoke1的Tunnel地址和公网地址,并将该信息更新到自己的NHRP映射表中(见图4-6中的红色字体)。
    • 构建并向Spoke1发送NHRP地址解析应答报文(携带Spoke2的子网地址192.168.2.0、Spoke2的Tunnel地址10.1.1.2和公网地址2.2.2.2)。
  6. Spoke1收到NHRP地址解析应答报文后,从应答报文中提取Spoke2的子网地址和公网地址,更新到自己的NHRP映射表中(见图4-6中的红色字体),Spoke1与Spoke2之间的动态mGRE隧道随即建立。

    当Spoke1再次收到其下用户发送给Spoke2的数据报文时,Spoke1根据报文目的地址(192.168.2.0)查找NHRP映射表,找到Spoke2的公网地址2.2.2.2,即可根据公网地址2.2.2.2将此报文进行mGRE封装后直接发送给Spoke2,不再经过总部Hub。

DSVPN NAT穿越

在这里插入图片描述

DSVPN NAT穿越主要通过在NHRP注册应答报文、NHRP解析请求/应答报文中的NAT扩展字段中填充分支NAT前后的地址信息而实现,具体工作原理如下:

  1. 分支Spoke向总部Hub注册,NHRP注册请求报文中携带分支原始的公网或私网地址。
  2. 总部Hub的NHRP协议感知分支路径中有NAT设备存在,就在NHRP注册请求应答报文的NAT扩展字段中将分支NAT转换后的公网地址告知分支Spoke。
  3. 源Spoke向目的Spoke发起NHRP地址解析请求时,携带源分支NAT转换前的地址和NAT转换后的公网地址(通过NAT扩展字段)告知目的Spoke。
  4. 目的Spoke向源Spoke返回NHRP地址解析请求应答时,携带目的分支NAT转换前的地址和NAT转换后的公网地址(通过NAT扩展字段)告知源Spoke。
  5. 源分支和目的分支互相知道对端NAT转换前的地址和NAT转换后的公网地址后,根据NAT转换后的公网地址建立动态mGRE隧道,实现分支间穿越NAT直接通信
  • DSVPN不支持两个分支位于同一NAT设备之后且NAT转换后IP地址相同的NAT穿越。
  • DSVPN不支持两个分支位于不同NAT设备之后且启用PAT(Port Address Translation)功能的NAT穿越。
  • 分支间互访时,NAT设备必须配置为NAT Server或Static NAT,DSVPN不支持配置为NAT outbound的NAT穿越。
  • 在DSVPN中部署IPSec时,如果两个分支位于不同NAT设备之后或者总部位于NAT设备之后,则IPSec封装模式仅支持为传输模式。因为IPSec封装模式为隧道模式时,NHRP无法学习到NAT转换后的地址。

DSVPN IPSec保护

在这里插入图片描述

DSVPN网络中,通过在总部Hub和分支Spoke配置IPSec安全框架并绑定于mGRE隧道接口,mGRE隧道建立的同时会立即触发IPSec隧道建立,具体工作原理如下:

  1. 网络中的所有Spoke向总部Hub发起注册请求,同时将NHRP映射表信息告知IPSec,触发分支和总部的IKE模块进行IPSec隧道的协商。
  2. 总部Hub根据接收的注册请求报文,记录Spoke的Tunnel地址和公网地址的对应关系,生成分支的NHRP映射表,并向Spoke发送注册请求应答消息。
  3. 分支间根据流量触发建立动态mGRE隧道。
  4. 分支Spoke间动态mGRE隧道建立时,IPSec模块获取NHRP映射表信息,根据该信息添加或删除IPSec对等体节点,触发分支间动态建立IPSec隧道。
  5. 分支Spoke间IPSec隧道建立成功后,后续数据转发根据IP报文的目的地址查找路由。如果出接口类型是mGRE隧道接口,则根据路由下一跳找NHRP映射表,获取公网地址,根据公网地址,找IPSec SA,对报文进行IPSec加密发送。

相对于传统Hub-Spoke组网的IPSec技术,DSVPN与IPSec联合部署具有如下优势:

  • 传统IPSec技术使用ACL识别待加密的单播流量,需进行复杂的ACL定义,配置和维护困难。而DSVPN中只需将mGRE隧道接口与IPSec安全框架绑定,无需再定义复杂的ACL,网络部署更加简单。
  • 由于动态建立了分支间的IPSec隧道,分支Spoke间交互的IPSec数据不用通过总部Hub进行解密和加密操作,降低了数据传输时延。

在DSVPN中部署IPSec时,如果两个分支位于不同NAT设备之后或者总部位于NAT设备之后,则IPSec封装模式仅支持为传输模式。因为IPSec封装模式为隧道模式时,NHRP无法学习到NAT转换后的地址。

DSVPN可靠性

双HUB主备备份

在这里插入图片描述

DSVPN双Hub主备备份的工作机制如下:

  1. 所有分支Spoke同时向主用Hub1和备用Hub2注册,并分别与Hub1建立主用静态mGRE隧道、与Hub2建立备用静态mGRE隧道。
  2. 当分支间需要建立动态mGRE隧道时,源Spoke向Hub发送NHRP地址解析请求报文:
    • 在Hub1和Hub2都运行正常的情况下,根据路由策略,Spoke到Hub1的路由优先级较高,NHRP地址解析请求报文将沿主用静态mGRE隧道发送到Hub1,由Hub1将此解析报文转发至目的Spoke。
    • 当Hub1出现故障时,Spoke到Hub1的路由优先级降低,NHRP地址解析请求报文沿备用静态mGRE隧道发送到Hub2,由Hub2将此解析报文转发至目的Spoke。
    • 当Hub1故障恢复后,各分支Spok
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南岸青栀*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值