一、DSVPN定义
动态智能VPN(Dynamic Smart Virtual Private Network,简称DSVPN),是基于Hub-Spoke组网架构,专为公网地址动态变化的分支节点间构建VPN隧道的专属解决方案,可实现分支与总部、分支与分支的灵活互联。
部署shortcut方式DSVPN后,所有分支Spoke只能学习到总部的路由,路由下一跳全部是Hub的Tunnel地址。各分支Spoke只能以目的Spoke的私网地址查找其公网地址,动态建立mGRE隧道。动态mGRE隧道建立后,分支间即可直接进行通信,所有流量不再通过总部Hub。
- DSVPN节点
- DSVPN节点为部署DSVPN的设备,包括Spoke和Hub两种形态。
- Spoke
Spoke通常是企业分支的网关设备。一般情况下,Spoke使用动态的公网地址。 - Hub
Hub通常是企业总部的网关设备,接收Spoke向其注册的信息。DSVPN网络中,Hub既可使用固定的公网地址,也可使用域名。
- Spoke
- DSVPN节点为部署DSVPN的设备,包括Spoke和Hub两种形态。
- mGRE、mGRE隧道接口和mGRE隧道
- mGRE是在GRE(Generic Routing Encapsulation)基础上发展而来的一种点到多点GRE技术。它将传统GRE隧道点到点(P2P)类型的Tunnel接口扩展成了点到多点(P2MP)类型的mGRE隧道接口。通过改变接口类型,Hub或Spoke上只需要配置一个Tunnel接口便可与多个对端建立隧道,从而减少了配置GRE隧道的工作量。
- 隧道源地址:GRE封装后的报文源地址,即图1中隧道一端的公网地址。
- 采用mGRE隧道接口建立起来的GRE隧道称为mGRE隧道。mGRE隧道分为静态mGRE隧道和动态mGRE隧道两种:
- 静态mGRE隧道建立于分支Spoke与总部Hub之间,静态mGRE隧道永久存在。
- 动态mGRE隧道建立于各分支Spoke之间,动态mGRE隧道在一定周期内没有流量转发将自动拆除。
- NHRP协议和NHRP映射表
- NHRP(Next Hop Resolution Protocol)即下一跳地址解析协议。在DSVPN网络中,NHRP协议的作用是建立和解析Protocol地址(即图1中的Tunnel地址或子网地址)到NBMA(Non-Broadcast Multiple Access)地址(即图1中的公网地址)的映射关系。正是因为这种映射和解析,源Spoke才能够获取目的Spoke的动态公网地址。 Protocol地址和NBMA地址映射生成的表项称为NHRP映射表。按照生成方式的不同,NHRP映射表分为静态表项和动态表项两种:
- 静态表项:由网络管理员手工配置。Spoke要与Hub建立静态mGRE隧道,管理员就需要在Spoke上手工配置Hub的Tunnel地址和公网地址。
- 动态表项:它是由NHRP协议动态生成的表项。例如,Hub通过NHRP注册报文提取各Spoke的Tunnel地址和公网地址而生成的NHRP映射表;各Spoke通过NHRP解析报文提取对端Spoke的Tunnel地址/子网地址和公网地址而生成的NHRP映射表。
- NHRP(Next Hop Resolution Protocol)即下一跳地址解析协议。在DSVPN网络中,NHRP协议的作用是建立和解析Protocol地址(即图1中的Tunnel地址或子网地址)到NBMA(Non-Broadcast Multiple Access)地址(即图1中的公网地址)的映射关系。正是因为这种映射和解析,源Spoke才能够获取目的Spoke的动态公网地址。 Protocol地址和NBMA地址映射生成的表项称为NHRP映射表。按照生成方式的不同,NHRP映射表分为静态表项和动态表项两种:
- IPSec保护:由于动态建立了分支间的IPSec隧道,分支Spoke间交互的IPSec数据不用通过总部Hub进行解密和加密操作,降低了数据传输时延。
二 、核心目的
- 节约成本:无需为各分支配置静态公网地址,减少公网地址资费及相关硬件投入,降低企业网络建设与长期运营成本。
- 提升传输效率:支持分支间直连隧道的动态构建,避免业务数据经总部中转,有效降低分支间数据传输时延,提升整体传输效率。
- 简化运维:精简网络配置逻辑,降低总部 Hub 与分支 Spoke 的配置复杂度;新增分支时无需修改既有节点配置,大幅减少后续运维工作量。
- 安全性: 集成 IPSec 协议对跨地域传输的数据进行加密、认证与完整性校验,有效保障分支与总部、分支与分支间的数据传输安全。
三、网络规划核心架构
某中小企业有总部(Hub)和两个分支(Spoke1和Spoke2),分布在不同地域并所属不同AS域,总部和分支的子网环境会经常出现变动。分支采用动态地址接入公网。企业现网网络规划AS域内部使用OSPF路由协议,AS域间使用EBGP路由协议。并且实现分支之间的VPN互联。
四、 操作步骤
4.1 配置接口IP地址
4.1.1 在Hub上配置接口IP地址
[USG6000V2]sysname Hub # 更改设备名称
###配置出网口IP地址与图1对应
[Hub]interface GigabitEthernet 1/0/0 # 此接口用于公网连接出口
[Hub-GigabitEthernet1/0/0]ip address 1.1.1.10 255.255.255.0
[Hub-GigabitEthernet1/0/0]quit
###配置Tunnel隧道接口IP地址
[Hub]interface tunnel 0 # 此接口用于建立mGRE隧道
[Hub-Tunnel0] ip address 172.16.1.1 255.255.255.0
[Hub-Tunnel0] quit
#配置Loopback虚拟接口IP地址
[Hub]interface LoopBack 0 # 此接口用于模拟内部子网用户
[Hub-LoopBack0]ip address 192.168.0.1 255.255.255.0
[Hub-LoopBack0]quit
4.1.2 在Spoke1 上配置接口IP地址
[USG6000V2]sysname Spoke1 # 更改设备名称
###配置出网口IP地址与图1对应
[Spoke1]interface GigabitEthernet 1/0/0 # 此接口用于公网连接出口
[Spoke1-GigabitEthernet1/0/0]ip address 1.1.2.10 255.255.255.0
[Spoke1-GigabitEthernet1/0/0]quit
###配置Tunnel隧道接口IP地址
[Spoke1]interface tunnel 0 # 此接口用于建立mGRE隧道
[Spoke1-Tunnel0] ip address 172.16.1.2 255.255.255.0
[Spoke1-Tunnel0] quit
#配置Loopback虚拟接口IP地址
[Spoke1]interface LoopBack 0 # 此接口用于模拟内部子网用户
[Spoke1-LoopBack0]ip address 192.168.1.1 255.255.255.0
[Spoke1-LoopBack0]quit
4.1.3 在Spoke1 上配置接口IP地址
[USG6000V2]sysname Spoke2 # 更改设备名称
###配置出网口IP地址与图1对应
[Spoke2]interface GigabitEthernet 1/0/0 # 此接口用于公网连接出口
[Spoke2-GigabitEthernet1/0/0]ip address 1.1.3.10 255.255.255.0
[Spoke2-GigabitEthernet1/0/0]quit
###配置Tunnel隧道接口IP地址
[Spoke2]interface tunnel 0 # 此接口用于建立mGRE隧道
[Spoke2-Tunnel0] ip address 172.16.1.3 255.255.255.0
[Spoke2-Tunnel0] quit
#配置Loopback虚拟接口IP地址
[Spoke2]interface LoopBack 0 # 此接口用于模拟内部子网用户
[Spoke2-LoopBack0]ip address 192.168.2.1 255.255.255.0
[Spoke2-LoopBack0]quit
4.2 配置安全区域和安全策略
#在各设备上配置安全区域,命令相同,以Hub为例。
[Hub] firewall zone untrust
[Hub-zone-untrust] add interface GigabitEthernet 1/0/0 # 公网连接接口
[Hub-zone-untrust] add interface tunnel 0 # 此接口承载的是公网传输的加密隧道流量,其底层封装的是公网 IP 报文(总部 / 分支的公网地址),本质上属于 “公网侧流量”。
[Hub-zone-untrust] quit
#在各设备上配置安全策略,命令相同,以Hub为例。
本例中以Loopback接口(隶属于Local区域)模拟企业内部子网用户,因此要放开区域之间的域间策略。
[Hub]security-policy # 进入安全策略配置视图
[Hub-policy-security]rule name anyconnect # 创建名为anyconnect的安全策略规则
[Hub-policy-security-rule-anyconnect]source-zone any # 配置规则的源安全区域为任意区域(所有区域流量均匹配)
[Hub-policy-security-rule-anyconnect]destination-zone any # 配置规则的目的安全区域为任意区域(所有区域均为目标)
[Hub-policy-security-rule-anyconnect]action permit # 配置规则动作:允许匹配的流量通过
[Hub-policy-security-rule-anyconnect]quit
4.3 配置各FW之间公网路由可达(由于本例为测试环境,真实环境可跳过此步)
在各FW上配置OSPF路由协议,实现公网路由可达。
4.3.1 在Hub上配置OSPF
[Hub] ospf 2 router-id 1.1.1.10
[Hub-ospf-2] area 0.0.0.1
[Hub-ospf-2-area-0.0.0.1] network 1.1.1.0 0.0.0.255
[Hub-ospf-2-area-0.0.0.1] quit
[Hub-ospf-2] quit
4.3.2 在Spoke1上配置OSPF
[Spoke1] ospf 2 router-id 1.1.2.10
[Spoke1-ospf-2] area 0.0.0.1
[Spoke1-ospf-2-area-0.0.0.1] network 1.1.2.0 0.0.0.255
[Spoke1-ospf-2-area-0.0.0.1] quit
[Spoke1-ospf-2] quit
4.3.3 在Spoke2上配置OSPF
[Spoke2] ospf 2 router-id 1.1.3.10
[Spoke2-ospf-2] area 0.0.0.1
[Spoke2-ospf-2-area-0.0.0.1] network 1.1.3.0 0.0.0.255
[Spoke2-ospf-2-area-0.0.0.1] quit
[Spoke2-ospf-2] quit
4.4.4 在Internet交换机上配置OSPF
[~Internet] vlan batch 10 20 30
[~Internet]interface GE1/0/0
[~Internet-GE1/0/0]port default vlan 10
#
[~Internet]interface GE1/0/1
[~Internet-GE1/0/0] port default vlan 30
#
[~Internet]interface GE1/0/2
[~Internet-GE1/0/0] port default vlan 20
#
[~Internet]ospf 2 router-id 2.2.2.2
[*Internet-ospf-2]area 0.0.0.1
[*Internet-ospf-2-area-0.0.0.1]network 1.1.1.0 0.0.0.255 # 将HUB接口加入ospf
[*Internet-ospf-2-area-0.0.0.1]network 1.1.2.0 0.0.0.255 # 将Spoke1接口加入ospf
[*Internet-ospf-2-area-0.0.0.1]network 1.1.3.0 0.0.0.255 # 将Spoke2接口加入ospf
4.4.5 查看公网路由是否可达
[~Internet-ospf-2]display ospf peer brief
OSPF Process 2 with Router ID 2.2.2.2
Peer Statistic Information
Total number of peer(s): 3
Peer(s) in full state: 3
-----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.1 Vlanif10 1.1.1.10 Full
0.0.0.1 Vlanif20 1.1.2.10 Full
0.0.0.1 Vlanif30 1.1.3.10 Full
-----------------------------------------------------------------------------
#
[~Internet]display ospf routing
OSPF Process 2 with Router ID 2.2.2.2
Routing for Network
------------------------------------------------------------------------------
Destination Cost Type Next-Hop AdvRouter Area
1.1.1.0/24 1 Direct 1.1.1.1 2.2.2.2 0.0.0.1
1.1.2.0/24 1 Direct 1.1.2.1 2.2.2.2 0.0.0.1
1.1.3.0/24 1 Direct 1.1.3.1 2.2.2.2 0.0.0.1
2.2.2.2/32 0 Direct 2.2.2.2 2.2.2.2 0.0.0.1
4.4 配置AS自治域内路由可达
在不同AS自治域的分支Spoke和总部Hub上配置OSPF路由协议,实现AS内路由可达。
4.4.1 配置Hub。
[Hub] ospf 1 router-id 172.16.1.1
[Hub-ospf-1] area 0.0.0.0
[Hub-ospf-1-area-0.0.0.0] network 192.168.0.0 0.0.0.255
[Hub-ospf-1-area-0.0.0.0] quit
[Hub-ospf-1] quit
4.4.2 配置Spoke1。
[Spoke1] ospf 1 router-id 172.16.1.2
[Spoke1-ospf-1] area 0.0.0.0
[Spoke1-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[Spoke1-ospf-1-area-0.0.0.0] quit
[Spoke1-ospf-1] quit
4.4.3 配置Spoke2。
[Spoke2] ospf 1 router-id 172.16.1.3
[Spoke2-ospf-1] area 0.0.0.0
[Spoke2-ospf-1-area-0.0.0.0] network 192.168.2.0 0.0.0.255
[Spoke2-ospf-1-area-0.0.0.0] quit
[Spoke2-ospf-1] quit
4.5 配置EBGP基本功能
4.5.1 配置Hub。
[Hub] bgp 100
[Hub-bgp] router-id 172.16.1.1 # Router-id为本部Tunnel接口IP
[Hub-bgp] peer 172.16.1.2 as-number 200 # Hub端peer为对应Spoke分支IP
[Hub-bgp] peer 172.16.1.3 as-number 300 # Hub端peer为对应Spoke分支IP
[Hub-bgp]ipv4-family unicast
[Hub-bgp-af-ipv4]network 192.168.0.0 255.255.255.0 # 发布本地路由汇总,要求本地汇总网段,原则上只能发布一个连续网段
[Spoke1-bgp] quit
4.5.2 配置Spoke1。
[Spoke1] bgp 200
[Spoke1-bgp] router-id 172.16.1.2 # Router-id为本部Tunnel接口IP
[Spoke1-bgp] peer 172.16.1.1 as-number 100 # Spoke端peer为对应HUB总部IP
[Hub-bgp]ipv4-family unicast
[Hub-bgp-af-ipv4]network 192.168.1.0 255.255.255.0 # 发布本地路由汇总,要求本地汇总网段,原则上只能发布一个连续网段
[Spoke1-bgp] quit
4.5.3 配置Spoke2。
[Spoke2] bgp 300
[Spoke2-bgp] router-id 172.16.1.3 # Router-id为本部Tunnel接口IP
[Spoke2-bgp] peer 172.16.1.1 as-number 100 # Spoke端peer为对应HUB总部IP
[Hub-bgp]ipv4-family unicast
[Hub-bgp-af-ipv4]network 192.168.2.0 255.255.255.0 # 发布本地路由汇总,要求本地汇总网段,原则上只能发布一个连续网段
[Spoke1-bgp] quit
4.6 配置IPSec框架加密
4.6.1 配置IKE提议
#在Hub和Spoke上配置IKE提议,命令相同,以Hub为例。
[Hub] ike proposal 1 # 创建编号为1的IKE提议(IKE提议用于IPsec密钥协商的参数约定)
[Hub-ike-proposal-1] dh group5 # 指定IKE协商中DH密钥交换算法为group5(对应1536位Diffie-Hellman算法,用于生成共享密钥材料)
[Hub-ike-proposal-1] authentication-algorithm sha2-256 # 设置IKE报文的认证算法为SHA2-256(用于验证协商报文的完整性与真实性,防止篡改)
[Hub-ike-proposal-1] prf aes-xcbc-128 # 指定伪随机函数(PRF)为AES-XCBC-128(IKEv2中用于密钥派生和消息验证)
[Hub-ike-proposal-1] quit
4.6.2 配置IKE peer
#在Hub和Spoke上配置进行IKE协商时需要的IKE peer,命令相同,以Hub为例。
[Hub] ike peer hub # 创建并进入 IKE 对等体 hub 的配置视图
[Hub-ike-peer-hub]exchange-mode auto # 配置 IKE 交换模式为自动模式,设备会自动适配 IKEv1 主模式/野蛮模式,或 IKEv2 交换流程,提升与不同对端的兼容性
[Hub-ike-peer-hub]pre-shared-key huawei123 # 配置预共享密钥(PSK),用于 IKE 协商时的身份认证
[Hub-ike-peer-hub]ike-proposal 1 # 表示该对等体将使用提议 1 中定义的 DH 组、认证算法、PRF 等参数进行 IKE 协商
4.6.3 创建IPSec安全提议
#在Hub和Spoke上配置安全提议,命令相同,以Hub为例。
#IPsec提议用于定义IPsec数据传输阶段的封装、加密、认证等核心参数
[Hub] ipsec proposal pro1 # 创建名为pro1的IPsec提议并进入配置视图
[Hub-ipsec-proposal-pro1]encapsulation-mode auto # 配置IPsec封装模式为自动适配模式
[Hub-ipsec-proposal-pro1]esp authentication-algorithm sha2-256 # 配置ESP协议的认证算法为SHA2-256
[Hub-ipsec-proposal-pro1]esp encryption-algorithm aes-256 # 配置ESP协议的加密算法为AES-256
[Hub-ipsec-proposal-pro1]quit
4.6.4 配置IPSec安全框架
#在Hub和Spoke上配置安全框架,命令相同,以Hub为例。
#IPsec策略模板是IPsec配置的核心载体,用于整合IKE对等体、IPsec提议等参数
[Hub]ipsec profile profile_1 # 创建名为profile_1的IPsec策略模板并进入配置视图
[Hub-ipsec-profile-profile_1]ike-peer hub # 将名为hub的IKE对等体关联到当前IPsec策略模板
[Hub-ipsec-profile-profile_1]proposal pro1 # 将名为pro1的IPsec提议关联到当前IPsec策略模板
4.7配置Tunnel隧道接口
4.7.1在Hub上配置Tunnel接口,应用安全框架。
[Hub] interface tunnel 0 # 进入 Tunnel0 逻辑隧道接口视图
[Hub-Tunnel0] tunnel-protocol gre p2mp # 配置隧道协议为 GRE 点对多点p2mp模式,该模式是 DSVPN 组网的核心,支持 Hub 与多台 Spoke 设备建立星型连接,同时支持 Spoke 间动态建立直连隧道
[Hub-Tunnel0] source GigabitEthernet 1/0/0 # 该接口通常为 Hub 设备的公网出口,用于接收和发送 Spoke 侧的 GRE 封装报文
[Hub-Tunnel0] nhrp authentication hash sha2-256 huawei123 #配置NHRP密钥为huawei123
[Hub-Tunnel0] nhrp entry multicast dynamic # 配置 NHRP 动态多播条目功能,支持 Hub 向 Spoke 设备转发组播流量,适用于需要组播通信的 DSVPN 场景(如视频会议、组播路由同步)
[Hub-Tunnel0] nhrp redirect # 开启 NHRP 重定向功能,当 Spoke 之间有数据交互时,Hub 会主动下发重定向报文,触发 Spoke 之间建立直连 GRE 隧道(Shortcut 隧道)避免 Spoke 间流量全部绕行 Hub,提升传输效率
[Hub-Tunnel0] ipsec profile profile1 #将 IPsec 策略模板 profile1 绑定到该隧道接口
[Hub-Tunnel0] quit
Comments NOTHING