广域网-DSVPN (IPSEC保护) 案例配置及原理分析

yangx5 发布于 2 天前 18 次阅读


一、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既可使用固定的公网地址,也可使用域名。
  • mGRE、mGRE隧道接口和mGRE隧道
    • mGRE是在GRE(Generic Routing Encapsulation)基础上发展而来的一种点到多点GRE技术。它将传统GRE隧道点到点(P2P)类型的Tunnel接口扩展成了点到多点(P2MP)类型的mGRE隧道接口。通过改变接口类型,Hub或Spoke上只需要配置一个Tunnel接口便可与多个对端建立隧道,从而减少了配置GRE隧道的工作量。
    • 隧道源地址:GRE封装后的报文源地址,即图1中隧道一端的公网地址。
      • 隧道目的地址:GRE封装后的报文目的地址,即图1中隧道另一端的公网地址。与GRE隧道接口手工指定目的地址不同,mGRE隧道目的地址来自于NHRP协议。
      • 隧道接口IP地址:隧道接口地址和其他物理接口上的IP地址一样,用于设备之间的通信(例如获取路由信息等),即图1中的Tunnel地址。
    • 采用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映射表。
  • IPSec保护:由于动态建立了分支间的IPSec隧道,分支Spoke间交互的IPSec数据不用通过总部Hub进行解密和加密操作,降低了数据传输时延。

二 、核心目的

  1. 节约成本:无需为各分支配置静态公网地址,减少公网地址资费及相关硬件投入,降低企业网络建设与长期运营成本。
  2. 提升传输效率:支持分支间直连隧道的动态构建,避免业务数据经总部中转,有效降低分支间数据传输时延,提升整体传输效率。
  3. 简化运维:精简网络配置逻辑,降低总部 Hub 与分支 Spoke 的配置复杂度;新增分支时无需修改既有节点配置,大幅减少后续运维工作量。
  4. 安全性: 集成 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