目录
一、背景
企业要实现总部与处于异地的分部实现经公网完成私网间通信,可以通过使用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地址变化或隧道无流量时,隧道信息会自动更新或拆除。