如果在你的企业网络架构中存在多个AWS VPC网络,企业物理数据中心以及多个分支站点,那么要将这些不同的节点有效地连接起来,在网络设计架构上不得不说是一个很大的挑战。在挨踢小茶之前的文章《亚马逊云AWS搭建多站点的VPN CloudHub架构》中介绍了如何利用AWS原生的VGW (Virtual Private Gateway)以及CloudHub特性来进行这方面的网络架构,但这种架构存在一定的局限性,作为补充,本文会介绍一下如何利用另一种技术:Cisco DMVPN来进行架构设计。
对于不熟悉DMVPN的朋友,挨踢小茶在这里先对这个技术简单介绍一下。DMVPN全称是Dynamic Multipoint Virtual Private Network,是一项思科私有的技术,它可以在不同的思科路由器之间建立动态多点的Site-to-Site VPN连接。每一个Spoke站点只需要与Hub站点发起VPN连接的请求并建立加密隧道,而不需要建立Full-Mesh的连接(即所有Spoke之间都建立两两的连接)。并且DMVPN的一个最大特点是,它利用了NHRP (Next Hop Resolution Protocol) 让Spoke与Spoke之间的信息交流可以不需要经过Hub站点,这种特性会极大地减少两个Spoke之间交流的网络延迟。
如下图所示,左边可以看到一个AWS区域,分别在其中不同的可用区(Availability Zone)创建了Cisco CSR的EC2实例。这两个Cisco CSR路由器充当了Hub的角色,一主一备,并且与每一个Spoke站点的路由器建立VPN的连接。具体的配置挨踢小茶就不在文章详细列举了,有兴趣的朋友可以查看官方的指引Deploying the Cisco Cloud Services Router 1000V Series in Amazon Web Services, Design and Implementation Guide或者这个文档。
下面来讲讲这个架构的一些特点:
- 支持远程站点(Spoke)的公网IP地址为动态的地址。事实上Hub端的配置并没有包含任何Spoke端的公网地址信息,VPN的连接请求是Spoke发起的,Hub只是负责接受请求和转发。
- 动态Spoke-to-Spoke的隧道,分支节点间可以直接通信,不需要经过Hub站点
- 你可以利用任何思科支持的路由协议来运行DMVPN,比如EIGRP, OSPF或BGP等(大部分企业会倾向于在DMVPN上使用EIGRP)
- 你需要考虑Cisco CSR的EC2实例运行时候产生的费用
- 你还需要考虑Cisco CSR本身的许可证的费用
- Hub站点可能会遇到网络瓶颈,网络的带宽取决于EC2实例的类型和配置(以及是否支持Enhanced Networking或Elastic Network Adaptor)
- 两个不同AZ内的Cisco CSR需要能通过BFD检测对方的是否处于健康状态(需要license支持)
- Hub站点的Cisco CSR热备切换的时候,要能自动重写VPC的路由,VPC才能访问健康的CSR路由器
- EC2实例需要做好AMI、启动脚本,以做到如果EC2出现故障可以在最短时间内替换上新的EC2
选择AWS VPN CloudHub还是Cisco DMVPN架构?
其实这个问题并没有一个简单的统一答案,一切要按照实际的网络现状来考虑。下面列了一些可以作为各位参考的因素:
- 你的远程站点是否都是固定的静态IP地址?Cisco DMVPN架构两者都支持,但AWS VPN CloudHub只能支持静态的IP地址。
- 你的所有设备是否都是思科的?Cisco DMVPN技术是思科私有技术,只有当你所有设备都是思科的情况下,才能使用这种架构。
- 你的数据传输是否对延迟很敏感,是否有VoIP或视频流量?CloudHub架构下所有流量要先经过Hub站点进行中转,而DMVPN架构不需要。
- CloudHub架构是AWS VPC原生支持的技术,因此与VPC的兼容性非常好,你不需要担心VGW的高可用和性能的问题;相对地Cisco DMVPN需要自己管理EC2实例,控制EC2的带宽阀值,高可用设计以及主备自动切换等等。
- 是否有使用AWS Direct Connect线路?VPN CloudHub架构原生就支持DX线路,但DMVPN并不支持,因此需要额外的进行架构设计。
总结
有的时候,在复杂网络环境下(想象一下你有20个分支结构,20个VPC)使用哪种网络架构并不是一道单选题,更多的时候是一道多选题。你很可能会需要结合使用VPN CloudHub以及DMVPN架构,还可能会需要使用VPC Peering和Transit VPC的设计,甚至会需要设计多个Transit VPC的设置等等……
文章评论
顶。。一定得顶。。。。
最近在AWS当中部署DMVPN,官方的视频和文档看起来都十分复杂,一开始感觉必须在CSR上创建多个VRF,其实不是。
有个小问题,从EIP到CSR private ip, 我理解是AWS做的NAT,这样的话从CSR侧就只能接受NHRP请求,而不能主动发起连接,当然如果CSR作为DMVPN Hub没有问题,但是如果作为spoke就有点麻烦了。(ipsec tunnel mode是transparent)
btw, 看了看楼上的回答,有买皮具的,炒黄金的,做电商培训的,都是人才,小茶你可以把“网址”这一栏开个广告位,每天赚个黄焖鸡的钱问题不大。
@Edward EIP到Priviate IP是做了NAT的,如果CSR作为spoke的话我没有测试过,但是我感觉也应该可以发起连接,因为地址是1:1的。
哈哈这个网站的读者来自四面八方呀~广告位以前弄过,连一个瓶装可乐都买不起 :sad:
@Edward 大佬,请问有关于基于AWS上配置SSLVPN有关的操作步骤或视频吗
@shine 你可以看看这个文章。
亚马逊的架构看到就晕
VyOS 也支援 NHRP !!
@lawrencepanwiscc 那也是一个很好的选择!
AWS确实不错!
@跨境电商培训 是呀,未来的IT大趋势~
这个用信用卡付款怕坑爹
@thornbird 其实这个不用太担心,因为我也被坑过几次。但是如果不是你真实意愿产生的费用,你可以去跟AWS申诉(开一个support case)。我曾经申诉要回了30多美金的费用,AWS基本没问什么信息就把钱打回给你,蛮良心的。
文章不错非常喜欢 :grin:
好文章,非常详细,博主辛苦了
@黑皇帝安全网 谢谢支持!