雏鹰部落

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 812|回复: 2

[学习/资料] 【思博技术干货】VPN隧道的解决方案全过程解析「带入实际案例」

[复制链接]
发表于 2021-6-29 23:44:19 | 显示全部楼层 |阅读模式
【思博技术干货】VPN隧道的解决方案全过程解析「带入实际案例」

动态智能VPN原理
动态智能VPN(Dynamic Smart Virtual Private Network),简称DSVPN,是一种在Hub-Spoke组网方式下为公网地址动态变化的分支之间建立VPN隧道的解决方案。
越来越多的企业希望建立Hub-Spoke方式的IPSec VPN网络将企业总部(Hub)与地理位置不同的多个分支(Spoke)相连,从而加强企业的通信安全、降低通信成本。当企业总部采用静态的公网地址接入Internet,分支机构采用动态的公网地址接入Internet时,使用传统的IPSec、GRE over IPSec等技术构建VPN网络将存在一个问题,即分支之间无法直接通信(源分支无法获取目的分支公网地址,也就无法在分支之间直接建立隧道),所有分支之间的通信数据只能由总部中转,如下图:
通过总部中转流量的办法来解决分支与分支间的通信会带来如下问题:
•总部在中转分支间的数据流时会消耗总部Hub的CPU及内存资源,造成资源紧张。
•总部要对分支间的数据流封装和解封装,会引入额外的网络延时。
另外,当IPSec网络规模不断扩展时,为减少路由配置和维护,需要部署动态路由协议。但IPSec和动态路由协议之间存在一个基础问题,动态路由协议依赖于组播报文或广播报文进行路由更新,而IPSec不支持广播报文和组播报文的传输。
在此背景下,华为提出了DSVPN解决方案,它通过将下一跳解析协议NHRP(Next Hop Resolution Protocol)和mGRE(multipoint Generic Routing Encapsulation)技术与IPSec相结合解决了上述问题:
•DSVPN通过NHRP协议动态收集、维护和发布各节点的公网地址等信息,解决了源分支无法获取目的分支公网地址的问题,从而可在分支与分支之间建立动态VPN隧道,实现分支与分支间的直接通信,进而减轻总部的负担、避免网络延时。
•DSVPN借助mGRE技术,使VPN隧道能够传输组播报文和广播报文,并且一个Tunnel接口可与多个对端建立VPN隧道,减少了配置VPN隧道的工作量;在新增分支或分支公网地址发生变化时,也能自动维护总部与分支之间的隧道关系,而不用调整总部的隧道配置,使得网络维护变得更智能化。
下图所示为一个采用DSVPN解决方案构建的VPN网络。
DSVPN基本概念
DSVPN典型网络架构如图所示,企业通过公共网络将总部(Hub)与地理位置不同的多个分支(Spoke)相连,Hub使用静态的公网地址,Spoke使用动态的公网地址。
该网络中,当源Spoke需要向目的Spoke发送数据报文时,源Spoke将通过与Hub之间的静态mGRE隧道交互NHRP协议获取目的Spoke的公网地址,并与目的Spoke建立动态mGRE隧道。隧道建立完成后,Spoke与Spoke之间的数据报文将通过该动态mGRE隧道直接发送给对方,不再经过总部Hub中转。
DSVPN节点
DSVPN节点为部署DSVPN的设备,包括Spoke和Hub两种形态。
•Spoke
Spoke通常是企业分支的网关设备。一般情况下,Spoke使用动态的公网地址。
•Hub
Hub通常是企业总部的网关设备,接收Spoke向其注册的信息。DSVPN网络中,Hub既可使用固定的公网地址,也可使用域名。
mGRE、mGRE隧道接口和mGRE隧道
mGRE是在GRE(Generic Routing Encapsulation)基础上发展而来的一种点到多点GRE技术。它将传统GRE隧道点到点(P2P)类型的Tunnel接口扩展成了点到多点(P2MP)类型的mGRE隧道接口。通过改变接口类型,Hub或Spoke上只需要配置一个Tunnel接口便可与多个对端建立隧道,从而减少了配置GRE隧道的工作量。
mGRE隧道接口包含以下元素:
•隧道源地址:GRE封装后的报文源地址,即上图中隧道一端的公网地址。
•隧道目的地址:GRE封装后的报文目的地址,即上图中隧道另一端的公网地址。与GRE隧道接口手工指定目的地址不同,mGRE隧道目的地址来自于NHRP协议。
•隧道接口IP地址:隧道接口地址和其他物理接口上的IP地址一样,用于设备之间的通信(例如获取路由信息等),即上图中的Tunnel地址。
采用mGRE隧道接口建立起来的GRE隧道称为mGRE隧道。mGRE隧道分为静态mGRE隧道和动态mGRE隧道两种:
•静态mGRE隧道建立于分支Spoke与总部Hub之间,静态mGRE隧道永久存在。
•动态mGRE隧道建立于各分支Spoke之间,动态mGRE隧道在一定周期内没有流量转发将自动拆除。
NHRP协议和NHRP映射表
NHRP(Next Hop Resolution Protocol)即下一跳地址解析协议。在DSVPN网络中,NHRP协议的作用是建立和解析Protocol地址(即上图中的Tunnel地址或子网地址)到NBMA(Non-Broadcast Multiple Access)地址(即上图中的公网地址)的映射关系。正是因为这种映射和解析,源Spoke才能够获取目的Spoke的动态公网地址。
Protocol地址和NBMA地址映射生成的表项称为NHRP映射表。按照生成方式的不同,NHRP映射表分为静态表项和动态表项两种:
•静态表项:由网络管理员手工配置。Spoke要与Hub建立静态mGRE隧道,管理员就需要在Spoke上手工配置Hub的Tunnel地址和公网地址。
•动态表项:它是由NHRP协议动态生成的表项。例如,Hub通过NHRP注册报文提取各Spoke的Tunnel地址和公网地址而生成的NHRP映射表;各Spoke通过NHRP解析报文提取对端Spoke的Tunnel地址/子网地址和公网地址而生成的NHRP映射表。
DSVPN基本原理
DSVPN实现分支之间直接通信的关键是在分支之间建立隧道。DSVPN利用mGRE结合NHRP来建立分支之间的隧道。与GRE不同,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映射。这一过程主要分为如下三个环节:
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间有流量通过时,隧道自动保活;当一定周期内没有流量经过时,隧道自动拆除。
Spoke与Spoke之间的mGRE隧道建成后,分支间的数据报文即可通过该隧道直接转发,不再经过Hub中转。
回帖查看以下全部干货!!!
游客,如果您要查看本帖隐藏内容请回复

  • 建立SpokeHub之间的mGRE隧道
  • 分支间路由学习
  • 建立SpokeSpoke之间的mGRE隧道
  • 建立Spoke与Spoke之间的mGRE隧道(shortcut方式)
  • DSVPN应用场景
  • 中小型网络部署DSVPN
  • 大型网络部署DSVPN
  • Hub级联网络部署DSVPN



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
发表于 2021-7-1 00:22:55 | 显示全部楼层
如果您要查看本帖隐藏内容请回复
发表于 2021-7-1 13:02:02 | 显示全部楼层

如果您要查看本帖隐藏内容请回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|熊猫同学技术论坛|小黑屋| 网络工程师论坛 ( 沪ICP备09076391 )

GMT+8, 2024-5-17 16:42 , Processed in 0.086518 second(s), 19 queries , Gzip On.

快速回复 返回顶部 返回列表