DMVPN
DMVPN(Dynamic Multipoint VPN)是一种用于构建大规模VPN网络的技术,它允许多个分支点通过一个中心点动态建立到其他分支点的直接连接。这种技术结合了GRE隧道、NHRP(Next Hop Resolution Protocol)和mGRE(Multicast over GRE)等协议,以实现快速、灵活且成本效益高的远程访问和分支互联。DMVPN支持按需建立隧道,减少了中心点
目录
一、背景
企业要实现总部与处于异地的分部实现经公网完成私网间通信,可以通过使用VPN。对于传统VPN,特别是IPSec VPN都存在着一些不足。在IPSec VPN中对端的建立是点对点,端对端建立的,但当企业有多家处于异地的分部时,这些分部之间若使用固定IP地址要实现全站点直连,要建立多个IPSec VPN隧道不仅成本贵;若使用动态IP地址这些分部之间无法直接访问,分部站点之间的访问都需要经过总部站点进行转发,不但限制了网络的扩展性,同时占用总部带宽,引入额外的延迟。而DMVPN技术则可以提供高度可扩展和高效的虚拟专用网络技术的解决方案。
二、简介
2.1 厂商
DMVPN技术是思科私有的,但是其技术或原理是公有的对于不同厂商名称不同,该技术在华为称为DSVPN技术
2.2 优势
可以结合IPSec,使用IPSec加密数据;
在多分支下,使用动态IP地址分支间可以直接访问,无需通过总部中转;
可以结合隧道运行路由协议,分支间的隧道是动态建立的,有流量产生时会主动建立,没流量自动拆除。
2.3 场景
适用于企业具有广泛分部的架构,特别是后续需要进行扩展、需要构建星形拓扑结构的场景
三、组件
3.1 IPSec
提供安全服务,对数据进行加解密,提供数据安全性
3.2 路由协议
不同站点间起路由协议,能够学到站点私网内的路由
3.3 mGRE
3.3.1 传统GRE
需要明确指定源目IP地址(点对点),tunnel口才能正常建立
3.3.2 简介
①多点GRE:
不需要指定目的IP地址,tunnel口也可以正常建立,可以跟动态的对等体建立隧道
②作用:
可以在多分支下,建立连接不同站点的隧道;封装私网数据包
③问题:
不同分部间的物理公网IP地址不断变化,目的IP地址不能指定,在对私网数据包进行封装时,封装的报文头的目的IP地址要封装谁的呢? ————通过NHRP技术解决
3.4 NHRP
①简介:
下一跳解析协议,对隧道封装报文头时需要封装的目的IP地址进行解析
②作用:
解决了在使用动态公网IP地址的分支机构之间建立VPN隧道时的路由问题
③模式:
C/S(客户端与服务器)
Client多部署在分支站点,需要向服务器主动发送本地隧道IP与公网地址的绑定信息
Server多部署在总部或中心站点,收集并维护所有站点的隧道IP与公网地址的绑定信息同时向Client回应其他站点的隧道IP与公网地址的绑定信息
④工作原理:
注册-->地址解析请求-->地址解析回应-->隧道建立-->动态隧道维护
注册:本地的隧道IP地址可以自行设定与公网无关,是固定的;当Client要连接到VPN时,会携带着其私有地址和获取到的公网地址向Server发送,进行注册信息,Server对私有地址和公网地址进行绑定
地址解析请求:C1(代指Client 1)要与C2(代指其他Client)进行通信时,会先向Server发送请求,请求其物理公网IP地址(Server多部署在总部,总部的物理公网IP地址多为固定IP地址)
地址解析回应:Server收到C1发来的地址解析请求后,会查看存放这些Client发送来的私有地址和公网地址的映射表,找到请求的C2对于的公网地址后,会携带着这个信息对C1进行应答
隧道建立:C1收到Server发送来的信息后,使用这个公网地址建立起GRE隧道
动态隧道维护:公网IP地址变化时更新映射信息,隧道没流量时拆除。

四、配置
4.1 实验要求
企业有总部和两个分别处于不同地域的分部,分部采用动态地址接入公网。企业对网络要求启用OSPF路由协议且希望能够实现分部之间的VPN互联。
4.2 配置思路
1)由于多个站点且站点间要实现之间均能直接通信,通过建立mGER隧道建立连接不同站点的隧道。
2)由于分部采用动态地址接入公网的,分部之间互相不知道对方的公网地址,通过NHRP解决建立VPN隧道时的路由问题。
3)要求启用OSPF协议且处于多站点间启用,OSPF的网络类型修改为MA(以太网链路)或P2MP(点对多点)。
4)为确保数据间传输的安全性,使用IPSec对数据进行加解密。
4.3 思科

1)修改设备名称、配置接口IP地址,启用loopback模拟内网,配置静态路由实现公网可达
Router>ena
Router#conf tRouter(config)#ho R1 ---修改设备名称
R1(config)#int e0/0
R1(config-if)#ip add 1.1.1.10 255.255.255.0 ---配置接口IP地址
R1(config-if)#no shu
R1(config-if)#exit
R1(config)#int lo1
R1(config-if)#ip add 192.168.0.1 255.255.255.0 ---配置loopback接口
R1(config-if)#exit
R1(config)#ip route 0.0.0.0 0.0.0.0 1.1.1.1 ---配置静态路由,下一跳指向ISP
R2(config)#int e0/0
R2(config-if)#ip add 1.1.2.10 255.255.255.0
R2(config-if)#no shu
R2(config)#int lo1
R2(config-if)#ip add 192.168.1.1 255.255.255.0
R2(config-if)#exit
R2(config)#ip route 0.0.0.0 0.0.0.0 1.1.2.1
R3(config)#int e0/0
R3(config-if)#ip add 1.1.3.10 255.255.255.0
R3(config-if)#no shu
R3(config-if)#int lo1
R3(config-if)#ip add 192.168.2.1 255.255.255.0
R3(config-if)#exit
R3(config)#ip route 0.0.0.0 0.0.0.0 1.1.3.1
测试公网可达性
2)采用mGER建立隧道, 配置NHRP的客户端和服务端
R1(config)#int tunnel 1 ---配置虚拟隧道接口
R1(config-if)#ip add 172.16.1.1 255.255.255.0 ---配置隧道接口的本地端点地址,在GRE隧道网络中使用
R1(config-if)#ip nhrp network-id 123 ---配置NHRP工作组编号,将多个NHRP客户端分组到同一个NHRP组中,只有同编号的设备能够相互之间解析地址
R1(config-if)#tunnel source e0/0 ---指定了隧道数据包的源MAC地址(隧道封装时数据包的源)
R1(config-if)#tunnel mode gre multipoint ---将隧道模式设置为GRE多点(mGRE),允许一个隧道接口与多个远端隧道接口建立连接mGRE无需指定隧道数据包目的MAC地址,tunnel接口可以直接UP
R2(config)#int tunnel 1
R2(config-if)#ip add 172.16.1.2 255.255.255.0
R2(config-if)#ip nhrp map 172.16.1.1 1.1.1.10 ---设置一个NHRP静态映射(将总部的隧道地址和公网地址绑定),将远程隧道地址映射到下一个跳转地址
R2(config-if)#ip nhrp network-id 123
R2(config-if)#ip nhrp nhs 172.16.1.1 ---指定NHRP下一个跳转服务器的地址(总部的隧道地址)
R2(config-if)#tunnel source e0/0
R2(config-if)#tunnel mode gre multipointR2(config-if)#exit
R3(config)#int tunnel 1
R3(config-if)#ip add 172.16.1.3 255.255.255.0
R3(config-if)#ip nhrp map 172.16.1.1 1.1.1.10R3(config-if)#ip nhrp network-id 123
R3(config-if)#ip nhrp nhs 172.16.1.1
R3(config-if)#tunnel source e0/0
R3(config-if)#tunnel mode gre multipointR3(config-if)#exit
查看NHRP映射表
R2、R3之间还未进行通信,没有向服务器去请求对方地址解析
3)在各站点上启用OSPF路由协议
R1(config)#router ospf 1
R1(config-router)#router-id 1.1.1.1 ---修改RID
R1(config-router)#network 192.168.0.0 0.0.0.255 area 0
R1(config-router)#network 172.16.1.0 0.0.0.255 area 0
R1(config-router)#exit
R1(config)#int tunnel 1
R1(config-if)#ip ospf network broadcast ---修改网络类型为MA(以太网链路)R1(config-if)#exit
R2(config)#router ospf 1
R2(config-router)#router-id 2.2.2.2R2(config-router)#priority 0 ---修改优先级为0(默认为1),配置建议将DR设在NHRP的服务端上
R2(config-router)#network 192.168.1.0 0.0.0.255 area 0
R2(config-router)#network 172.16.1.0 0.0.0.255 area 0
R2(config-router)#exit
R2(config)#int tunnel 1
R2(config-if)#ip ospf network broadcast
R2(config-if)#exit
R3(config)#router ospf 1
R3(config-router)#router-id 3.3.3.3
R3(config-router)#priority 0
R3(config-router)#network 192.168.2.0 0.0.0.255 area 0
R3(config-router)#network 172.16.1.0 0.0.0.255 area 0
R3(config-router)#exit
R3(config)#int tunnel 1
R3(config-if)#ip ospf network broadcast
R3(config-if)#exit
查看R1(总部)上的OSPF邻居、路由
测试隧道通信情况,实现企业各站点间可以直接通信
R2内网去访问R3内网时,第一次会经过R1,后续直接指向R3
4)配置IPSec对数据进行加密
R1(config)#crypto isakmp policy 10
R1(config-isakmp)#authentication pre-share
R1(config-isakmp)#exit
R1(config)#crypto isakmp key 123 address 0.0.0.0
R1(config)#crypto ipsec transform-set ie esp-3des esp-sha-hmac
R1(cfg-crypto-trans)#mode transport
R1(cfg-crypto-trans)#exit
R1(config)#crypto ipsec profile ie
R1(ipsec-profile)#set transform-set ie
R1(ipsec-profile)#exit
R1(config)#int tunnel 1
R1(config-if)#tunnel protection ipsec profile ie
R1(config-if)#exit
R2(config)#crypto isakmp policy 10
R2(config-isakmp)# authentication pre-share
R2(config-isakmp)#crypto isakmp key 123 address 0.0.0.0
R2(config)#crypto ipsec transform-set ie esp-3des esp-sha-hmac
R2(cfg-crypto-trans)# mode transport
R2(cfg-crypto-trans)#crypto ipsec profile ie
R2(ipsec-profile)# set transform-set ie
R2(ipsec-profile)#exit
R2(config)#int tunnel 1
R2(config-if)#tunnel protection ipsec profile ie
R2(config-if)#exit
R3(config)#crypto isakmp policy 10
R3(config-isakmp)# authentication pre-share
R3(config-isakmp)#crypto isakmp key 123 address 0.0.0.0
R3(config)#crypto ipsec transform-set ie esp-3des esp-sha-hmac
R3(cfg-crypto-trans)# mode transport
R3(cfg-crypto-trans)#crypto ipsec profile ie
R3(ipsec-profile)# set transform-set ie
R3(ipsec-profile)#exit
R3(config)#int tunnel 1
R3(config-if)#tunnel protection ipsec profile ie
R3(config-if)#exi
对IPSec阶段一进行检测
阶段二检测命令
R2#show crypto ipsec sa
(由于阶段二信息较多可以自行检测查看)
4.4 华为
该技术在华为称为DSVPN,技术原理大同小异,实验配置以华为产品文档为例





相关检测命令
display nhrp peer all ---查看和验证NHRP映射表项
display ipsec sa ---查看IPSec安全联盟信息,确保IPSec保护正常工作
ping ---执行ping操作来测试不同分支节点间的连通性
五、总结
DMVPN(动态多点虚拟专用网)是一种思科私有技术,华为称之为DSVPN。该技术结合IPSec,能够加密数据,在多分支环境下实现分支之间的直接通信,无需经过总部中转。DMVPN的核心优势在于其动态隧道建立功能,当有流量时隧道自动建立,无流量时自动拆除,适用于分布广泛、易扩展的企业网络。其主要组件包括IPSec、路由协议、mGRE(多点GRE)以及NHRP(下一跳解析协议)。mGRE允许隧道在动态对等体之间建立,NHRP则通过解析动态公网IP地址来解决路由问题,从而确保在分支机构之间顺利建立VPN隧道。
DMVPN的工作原理包括注册、地址解析请求、地址解析回应、隧道建立和动态隧道维护等步骤。每当一个分支站点需要与另一个分支通信时,首先会通过NHRP向总部请求目标站点的公网IP地址,获取后建立GRE隧道并通过IPSec加密通信。当公网IP地址变化或隧道无流量时,隧道信息会自动更新或拆除。
更多推荐














所有评论(0)