经常见到有读者问:×××客户端如果是动态WAN接入的,可以实现×××连接吗?还有如何配在×××中配置NAT穿越?前者的答案当然是肯定的,不仅×××客户端可以是动态接入的,而且在LAN到LAN的×××互联方案中,分支机构的×××接入路由器都可以采用动态WAN接入方案。那就是我们通常所说的动态VPAN解决方案。

虽然都是动态×××解决方案,但是Cisco和华为/H3C有着不同的具体实现方案,在Cisco中称之为DM×××(Dynamic Multipoint Virtual Private Network,动态多点×××),华为/H3C则称之为D×××(Dynamic Virtual Private Network,动态×××)。两个动态×××方案中都用到NAT穿越技术。本文就要先让大家初步了解这两种动态×××方案的基础知识,详细的工作原理和配置方法可以分别参见《路由器配置与管理完全手册——Cisco篇》《路由器配置与管理完全手册——H3C篇》图书。

一、Cisco DM×××基础

DM×××(Dynamic Multipoint ×××,动态多点×××)功能允许你通过组合GRE(Generic Routing Encapsulation,通用路由封装)隧道、IPSec加密和下一跳解析协议(Next Hop Resolution Protocol,NHRP)更好地灵活部署大型和小型IPSec ×××。理解DM×××的关键就是“动态”和“多点”这两个词上。动态是指它可以动态地识别隧道中spoke路由器的即时IP地 ,而“多点”是指各spoke路由器可以在一个mGRE(多点GRE)隧道中建立多条直接与其他spoke路由器之间的隧道,而无需要单独为各条隧道进行一一配置。DM×××特性建立在思科IPsec和专业路由技术的基础之上,允许动态地配置通用路由封装(GRE)通道、IPsec加密、下行解析协议(NHRP)、开放最短路径优先协议(OSPF)和增强内部网关路由协议(EIGRP)。

【说明】在Cisco DM×××中,涉及到了许多关键技术,如mGRE(多点GRE)、IPSec配置文件(IPsec Profiles)、NHRP(下一跳解析协议)、VRF与DM×××集成、NAT-T感知(NAT-Transparency Aware)、呼叫许可控制(Call Admission Control)等。

1. DM×××的主要优势

我们知道,×××的实现方案有许多种,它相对其他×××方案来说有哪些突出的优势呢?这是我们在使用DM×××前所必须了解的。 总体来说,部署DM×××可以得到以下几个方面的好处:

中心路由器配置减少

在DM×××中的Cisco hub(中心)路由器上会为每个spoke(分支)路由器都配备了一个独立的配置线路模块,用于定义加密映射特性、加密访问列表和GRE隧道接口。这种功能允许用户在中心路由器上配置单个mGRE(多点GRE)隧道接口、单个IPSec配置文件,无需加密访问列表来处理所有spoke路由器。这样,在中心路由器上的配置大小就可以保持稳定,即使有新的spoke路由器添加到网络中。

另外,在DM×××架构中可以组合许多spoke路由器连接到单个mGRE接口上,免除了在本地IPsec安装中为每个spoke路由器配备特定的物理或者逻辑接口的需求。

自动IPSec加密启动

GRE有配置或者通过NHRP协议解析的peer源和目的地址。这一功能允许IPSec为点对点GRE隧道,或者当GRE隧道Peer地址通过mGRE隧道中的NHRP协议得到解析时,立即启动加密。

支持动态地址spoke路由器

当使用点对点GRE和IPSec hub-and-spoke(星形)结构×××网络时,在配置hub路由器时,spoke路由器的物理接口IP地址必须知道,因为spkoe路由器的这个IP地址必须配置作为GRE隧道目的地址。而在DM×××中,hub路由器就可以就可以动态识别spoke路由器的这个IP地址。这就允许spoke路由器可以有动态物理接口IP地址(如通过虚拟的DSL或者Cable宽带连接),而其他×××,则路由器接口IP地址必须是静态的。当spoke路由器在线后,它将发送注册包到hub路由器,在这个注册包内包含的就是这个spoke路由器当前的物理接口IP地址。这就有点像DDNS(动态DNS)服务一样,能够动态识别出路由器接口当前IP地址,解决了许多中小型企业用户的实际困难,因为在这类企业用户中,许多仍是采用动态宽带接入的,只有动态分配的公网IP地址。

分支到分支(Spoke-to-Spoke)隧道的动态建立

这一功能就免除了为直接隧道(也就是隧道两端直接连接两个路由器,无需经过中间路由器)而做的spoke-to-spoke配置需求。当一个spoke路由器想要传输一个包到另一个spoke路由器,它可以使用NHRP协议动态确定到达目标spoke路由器所需的目的地址(此时hub路由器是作为NHRP服务器的,处理源spoke路由器的请求)。这两个spoke路由器就会在它们之间动态建立一个IPSec隧道,这样就可以直接传输数据了。

与VRF集成的DM×××

DM×××可以被用于扩展由服务提供商部署的MPLS(Multiprotocol Label Switching,多协议标签交换)网络,以利用hub和spoke路由器简易配置的优势,提供动态地址客户前端设备(Customer Pemises Euipment,CPE),可以在零准备的情况下加入新的分支路由器到DM×××中。

 2. DM×××功能设计

DM×××结合GRE隧道、IPSec加密和NHRP路由,为用户提供一个通过加密配置文件的简易配置,免除了定义静态加密映射和隧道端点动态发现的需求。DM×××的以上功能依赖于以下两个Cisco增强标准技术:

NHRP——是一个客户端和服务器协议,hub(中心)是服务器,spoke(分支)是客户端。Hub维护一个每个spoke公共接口地址的NHRP数据库,每个spoke在启动和在NHRP数据库中查询目的spoke的真实地址,以建立直接隧道时,注册它自己真实的地址。

mGRE隧道接口——允许一个GRE接口支持多个IPSec隧道,以简化配置的复杂性和减小配置文件的大小。

图1中显示的是一个简单的mGRE和IPSec集成拓扑结构。在这个拓扑结构中,每个spoke有一个到达hub的永久IPSec隧道,但与网络中其他spoke之间没有永久IPSec隧道。每个spoke注册作为NHRP服务器的客户端。

当一个spoke需要发送一个包到其他spkoe所连私有子网时,它查询NHRP服务器以得到目标spoke当时外部的实际公网IP地址(可以是静态的,也可以是动态的)。 在发起查询的spoke学习到了目标spoke外部当时实际的公网IP地址时,它可以初始化一条到达目标spoke的动态IPSec隧道。spoke-to-spoke IPSec隧道是通过多点GRE接口建立的。在两个spoke之间有通信需求时,就会建立spoke-to-spoke链路。随后,数据包就可以绕过hub和直接使用这条spoke-to-spoke隧道进行spoke之间的数据传输了。

【注意】当路由器的非活动spoke-to-spoke达到一定数量后,路由器将拆下这些隧道,以节省资源。

图1 一个简单的mGRE和IPSec集成拓扑示例

二、H3C D×××基础

现在越来越多的企业希望利用公共网络组建×××(Virtual Private Network,虚拟私有网络),连接地理位置不同的多个分支机构。然而,企业分支机构通常采用动态地址接入方式(如PPPoE ADSL)接入公共网络,通信一方无法事先知道对端的公网地址,这就为组建×××提出了一个难题。 在现有的×××组网方案中,一般采用GRE隧道、L2TP、IPSec以及MPLS等方式。除了MPLS主要应用在主干转发层之外,其他三种方式在普遍应用于网络的接入层。但是目前的这些方案都存在一个弊端,就是必须是按照事先的配置信息(如公网IP地址)进行组网,并且在进行一个全互联网络的×××配置时,结构和配置就变得复杂。由于要建立一对一的连接,所以当有 N 个网络设备进行互联时,网络的就必须建立N×(N-1) / 2个连接,这样不仅造成了组网和配置的复杂,而且配置时必须知道对端设备的基本信息,这给维护造成了很大的成本。另外GRE无法穿透NAT网关;GRE无法适用于动态IP设备建立×××;L2tp和GRE没有提供对传输的数据的加密保护;IPSec在动态路由的支持存在一定的问题等等。

H3C的D×××(Dynamic Virtual Private Network,动态虚拟私有网络)是一种动态虚拟专用网技术,可通过动态获取对端的信息建立×××连接。它是通过VAM(××× Address Management,×××地址管理)协议收集、维护和分发动态变化的公网地址等信息,解决了无法事先获得通信对端公网地址的问题。D×××可以在企业网各分支机构使用动态地址接入公网的情况下,在各分支机构间建立×××。这也就是我们在《路由器配置与管理完全手册——Cisco篇》中所介绍的Cisco DM×××(动态多点×××),但两者的实现方式不一样。在Cisco DM×××中,是依靠多点GRE(mGRE)和下一跳解析协议(NHRP)与IPSec相结合实现的,而H3C的D×××则主要依靠VAM协议来实现的。

1.  D×××的基本概念

D×××提供了一种灵活的建立×××的方式。它能够在动态获得IP地址的设备之间自动创建、维护隧道,能够实现接入到×××域的所有接入设备能够互相访问。同时D×××提供了身份认证、控制报文加密保护、数据报文的IPSec保护,从而实现×××内部的数据能够安全地在公网上传输。 D×××把连接到公网上的各节点组成的网络看作×××网络,公网作为×××网络的链路层,D×××隧道作为企业内部子网之间的虚拟通道,相当于网络层。企业各分支设备动态接入到公网中,其公网地址对于通信的另一端来说是未知的,而对于建立端到端的安全隧道,公网地址是必须的条件之一,在D×××中可通过VAM获取通信对端的公网地址。

VAM协议是D×××方案的主要协议,负责收集、维护、分发公网地址等信息,帮助用户快捷、方便的建立起内部的安全隧道。企业内部子网之间转发的数据报文通过路由协议得到其私网下一跳,通过VAM协议查询到私网下一跳对应的公网地址,并利用该公网地址做为隧道的目的地址进行封装,最后交给已建立起的安全隧道发送到目的端用户。

D×××方案中有几个关键的角色:

D×××节点

D×××节点为动态×××隧道两端的设备,可以是网络设备或主机。D×××节点参与隧道的建立,需要实现VAM的客户端功能。

 VAM服务器

VAM服务器是D×××节点的一种,是D×××服务器。它接受D×××节点向其注册信息的服务器,负责管理、维护各D×××节点的信息。目前VAM服务器一般运行在较高性能的路由器设备上。

VAM客户端

VAM客户端也是D×××节点的一种,是D×××客户端。它向VAM服务器注册自己的私网地址、公网地址、VAM标识等信息,向VAM服务器查询其它VAM客户端的信息。本章涉及到VAM客户端的地方,如果不是特别说明,是指对Hub和Spoke的统称。

Hub

Hub是一种VAM客户端,是一个×××网络的中心设备,是路由信息交换的中心。在Hub-Spoke结构(也有称星形结构)网络中,也是数据转发的中心。

Spoke

Spoke也是一种VAM客户端,通常是企业分支机构的网关设备,该节点不会转发收到的其它D×××节点的数据。

AAA服务器

AAA(Authentication, Authorization and Accounting,认证、授权和计费)服务器,用于对用户进行认证和计费管理。

 2.  D×××的基本网络结构

D×××通过动态获取对端的信息建立×××连接。它提出了NBMA类型的隧道机制,使用Tunnel逻辑接口作为D×××隧道的端点,完成D×××报文的封装和发送;同时通过Tunnel接口完成私网路由的动态学习。D×××采用了Client和Server的方式解决了传统×××的缺陷,Client通过在Server注册,将Client自己的信息在Sever上进行保存,这样Client可以通过Server的重定向功能得到其它Client的信息,从而可以在Client之间建立独立的Session。多个D×××接入设备通过向共同的Server进行注册,构建一个D×××域,就实现了各个D×××接入设备后面的网络的×××互联。

D×××具有两种典型的组网结构:

Full-Mesh(全互联)网络

Full-Mesh是一种网络拓扑,其中每个节点到其他网络节点有物理的或虚拟的电路链接。这种结构的D×××网络, Spoke之间可以建立隧道直接通信;Hub主要作为路由信息交换的中心。如图2所示,作为Spoke的VAM客户端节点在向VAM服务器注册后获得该×××域中Hub的信息,并与Hub建立永久的隧道连接;任意的两个Spoke之间也可以直接建立隧道,但该隧道是动态的,当在一段规定时间(Spoke-Spoke隧道空闲超时时间)内没有数据报文交互时,则删除该隧道。

图2  Full-Mesh结构网络示例

Hub-Spoke网络

Hub-Spoke是一种类似星形结构的网络拓扑结构,只有上级与下级之的链接,同级节点间没有直接或者虚拟的电路链接。在这种结构网络中,Spoke之间不能建立隧道直接通信,只能通过Hub转发数据;Hub即作为路由信息交换的中心,又作为数据转发的中心。如图3所示,Spoke与Hub建立永久的隧道连接,Spoke之间的数据通过Hub转发。

图3   Hub-Spoke结构网络示例

3. D×××的主要特性

D×××不但结合了传统×××的优点,而且解决了传统×××的缺陷。配置简单、网络规划简单、功能强大,比传统的×××更加符合目前以及未来的网络应用。其特点如下:

配置简单

一个D×××接入设备可以通过一个Tunnel逻辑接口和多个D×××接入设备建立会话通道,而不用为每一个通道配置一个逻辑的接口作为隧道的端点,大大的简化了配置的复杂度,提高了网络的可维护性和易扩充性。

自由穿越NAT网关技术

D×××是采用UDP方式的 D×××。由于使用了UDP报文进行封装,可以自由穿越NAT网关。解决内网D×××接入设备和公网D×××接入设备之间的×××连接,使NAT网关内部的私有网络和NAT网关外部的私有网络共同构建一个虚拟私有网络。

支持依赖动态IP地址构建×××

当在一个D×××域内部构建隧道时,只需要指定相应的Server的IP地址,并不关心自己当前使用的IP地址是多少,更加适应如普通拨号、xDSL拨号等使用动态IP地址的组网应用。

支持自动建立隧道

D×××中的Server维护着一个D×××域中所有接入设备的信息,D×××域中的Client可以通过Server的重定向功能自动获得需要进行通信的其它Client的信息,并最终在两个Client之间自动建立会话隧道(Session)。作为Client的D×××接入设备只需配置自己的相关信息和Server的信息,不需要知道其他Client的信息,极大地减少了网络的维护管理工作。

注册过程加密

在Client向Server进行注册的过程中,需要先完成算法套件以及各种密钥钥地协商。使用协商出来的算法对注册过程中的关键信息(例如用户名、密码等)进行加密保护,还可以对注册的报文进行合法性检测,保证关键注册信息的安全性。

支持身份认证

在Client向Server进行注册的过程中,Client可以根据配置需要对Server的身份使用pre-shared-key(预共享密钥)进行验证,保证Client接入一个合法的Server;同时Server可以根据需要使用AAA对需要接入到D×××域的Client进行身份验证,保证只有通过身份验证的Client才可以接入到D×××域。

策略统一管理

在D××× Client在Server端注册成功后,Server会将D×××域中的策略发布给该Client。策略主要包括会话协商使用的算法套件、会话的保活时间、会话的空闲超时时间、IPSec使用的加密验证算法、IPSec sa的重协商时间等。在整个D×××域中,所有的Session会使用相同的策略。

支持会话协商过程的加密

在Session协商过程中,所有的会话的控制报文都会使用Server发布的算法套件进行IPSec加密保护。即在建立Session的会话协商过程中,根据Server发布数据的加密验证算法,为Session的数据通信协商IPSec SA。协商过程使用DH(Diffie-Hellman)进行SA的密钥协商。对于需要通过该Session进行转发的数据,如果需要加密处理,则通过IPSec使用Session协商出来的IPSec SA对报文进行加密处理后,通过D×××进行转发,实现了转发数据报文的安全性。Session的IPSec SA支持重协商功能,可以根据需要指定进行IPSec SA重协商的时间,进一步保证数据的安全性。

支持多个×××域

D×××允许用户在一台D×××设备上支持多个×××域。即一台路由器不仅可以属于××× A,也可以属于××× B;同一设备可以在××× A中作为Client设备,同时还在××× B中作为Server设备使用。在同一台D×××设备上最多可以支持200个D×××域,可以同时作为200个D×××域的Server设备。大大提高了组网的灵活性,也可以更加充分的使用网络设备资源,减少了用户的投资。在实际的组网中为了保证各个D×××域之间的隔离,如果在同一台D×××设备上支持多个D×××域,需要通过私网路由来实现不同D×××域的隔离。

支持动态路由

D×××可以对需要通过Tunnel接口发送的路由报文,通过所有的Session会话进行广播,从而实现整个D×××域内的路由自动学习。实际应用中,D×××配合动态路由协议,可以简化对需要接入到D×××域的各个私有网络的规划,简化整个网络的配置,提高网络的维护性和自动化。

转载于:https://blog.51cto.com/winda/655174

Cisco和H3C的两种不同动态×××解决方案相关推荐

  1. Cisco和H3C的两种不同动态***解决方案

    经常见到有读者问:***客户端如果是动态WAN接入的,可以实现***连接吗?还有如何配在***中配置NAT穿越?前者的答案当然是肯定的,不仅***客户端可以是动态接入的,而且在LAN到LAN的***互 ...

  2. android asynctask源码分析,Android通过Handler与AsyncTask两种方式动态更新ListView(附源码)...

    本文实例讲述了Android通过Handler与AsyncTask两种方式动态更新ListView的方法.分享给大家供大家参考,具体如下: 有时候我们需要修改已经生成的列表,添加或者修改数据,noti ...

  3. 移动Web开发图片自适应两种常见情况解决方案

    本文主要说的是Web中图片根据手机屏幕大小自适应居中显示,图片自适应两种常见情况解决方案.开始吧 在做配合手机客户端的Web wap页面时,发现文章对图片显示的需求有两种特别重要的情况,一是对于图集, ...

  4. async-validator 表单验证两种数据的解决方案

    上问题: 下面选项中后台给的value 有 number和 string 两种导致无法验证 解决方案 rules: [,{type: "string",required: true ...

  5. 两种方法动态加载外部原生JS文件

    //方法1----------------------------------------document.write("<script src='js/external.js'> ...

  6. 两种方法动态获得ABAP类的class attribute的值

    DATA: lo_node TYPE REF TO object." 方法1 cl_crm_order_timer=>start( ). DO 1000 TIMES.CREATE OB ...

  7. java求二阶微积分方程特解_Scipy:实现微分方程的两种方法:两种不同的解决方案:回答...

    我试图解决我的化学论文的微分方程,在那里我偶然发现了一个关于scipy的微分方程求解器"odeint"的问题 . 首先,我根据scipy网站上的示例,通过功能CIDNP_1实现差异 ...

  8. 微信小程序官方调整头像昵称获取问题;微信扫码链接wifi,wifi地推,两种可行的解决方案

    微信小程序官方调整头像昵称获取问题:微信扫码链接wifi,wifi地推 更新时间:2022年11月9日 由于 PC/macOS 平台「头像昵称填写能力」存在兼容性问题,对于来自低于2.27.1版本的访 ...

  9. 两种高性能I/O设计模式(Reactor/Proactor)的比较

    综述 这篇文章探讨并比较两种用于TCP服务器的高性能设计模式. 除了介绍现有的解决方案,还提出了一种更具伸缩性,只需要维护一份代码并且跨平台的解决方案(含代码示例),以及其在不同平台上的微调. 此文还 ...

最新文章

  1. iOS中得block代码块的定义及使用
  2. asp.net MVC 过滤器使用案例:统一处理异常顺道精简代码
  3. 朗讯项目的一个概括总结.
  4. redis stream持久化_Beetlex.Redis之Stream功能详解
  5. 快速排序的实现--代码
  6. 《揭秘 CSS》开源啦
  7. javascript简单拖拽效果
  8. 漫威蜘蛛侠Mac动态壁纸
  9. C# CRC16 modbus
  10. JavaWeb——JavaScript精讲之DOM、BOM对象与案例实战(动态添加删除表格)
  11. 4~20mA电流检测模块
  12. 微信小程序- MQTT模拟器
  13. 对PNG图像进行编码 Encoding the PNG image
  14. Android后台执行限制
  15. gitee代码管理仓库管理代码,更简单地查看各阶段的代码变动
  16. Linux 命令(179)—— nice 命令
  17. python complex 如何取出实数部分_python中怎么表示实数
  18. 28岁程序员的逃跑计划,从送外卖开始
  19. 为什么好多公司的开发语言从C#变成了Java?
  20. Spyder crashed during last session 及其后诸多问题

热门文章

  1. 百度定位安卓6.0权限问题
  2. VB 二进制数据读写实例
  3. 两个股市真理之间的矛盾
  4. GitHub发布年度机器学习榜:TensorFlow最火,PyTorch失踪,Julia第四
  5. 吴恩达发布了大型X光数据集,斯坦福AI诊断部分超越人类 | AAAI 2019
  6. 爆料:学术生涯遭重创,才是压垮张首晟教授的最后一根稻草
  7. AI已火,宗教当生,硅谷出了个“洪秀全”
  8. Zoox又融5亿美元!这家腾讯投资的无人车公司现在估值32亿美元
  9. FIFO、UART、ALE解释
  10. MaxCompute Studio使用心得系列3——可视化分析作业运行