最初张贴在Lucian.Blog。在Twitter上关注卢西恩:@LucianFrango


2016年末,我有幸参加了微软在美国亚特兰大举办的“点燃微软”大会,这是我参加的第一次大型会议,有点了不起。在我参加的关于Azure网络的各种技术会议中,我得到的一个结论是,微软想要在很大程度上强调集线器和辐条网络拓扑的使用。我甚至博客上讲述它我还认为,考虑到Azure网络的新功能和服务,这是一个不错的选择。

从那时起,我对这种拓扑结构多家客户的合作。我已经看到了不同的要求和使用情况,以及不同的方法来路由和安全性。什么是一贯的,虽然,一直采用“共享服务”的方式在Azure的基础设施,以降低复杂性,减少重复资源,因此降低成本的想法。微软甚至建议,作为“最佳实践”的一部分1围绕枢纽和Azure的讲话。

现在的云计算并不便宜,我不认为我们的意图是让它便宜。有巨大的价值虽然,神奇的功能这个数字正以越来越快的速度增长。所以,在这一切变成昨天的新闻之前(尽管有点晚了),我想我终于可以把我在中心遇到的所有东西都提取出来,在这里讲述设计和实现的旅程,并将其输出到这篇博客文章中。

在我开始之前,这里就是微软的文档的快照2轮廓作为一个例子中心和分支网络在Azure中的拓扑结构可以是这样的:

Azure中的轮辐式网络拓扑结构,由微软提供

虽然这是一个合理的解决方案,但我确实有一些相反的想法;特别是围绕中心和降低复杂性的VNet。在很大程度上,我喜欢避免复杂性,因为复杂性是为了复杂性而存在的。一个伟大的设计也可以是一个简单的设计。Azure(或一般的云)中的网络虽然比传统的物理网络简单,但却非常简单。在实现中心辐射型解决方案时,需要考虑以下几个关键因素:

中心

一般来说,集线器是你将要部署的核心服务,并在那里你会Azure的网络扩展到外部网络;是本地通过ExpressRoute或某种类型的VPN,或更大的网络(使用Azure的互联网连接)。

——选项

我认为有两个思想流派当涉及到集线器。你要么集中一堆逻辑网段或区域的“降低复杂性和成本(入口和出口互联星空业务)”或者你保持集线器而瘦到一组选定的服务。

第一种方法是Microsoft最佳实践文档中推荐的方法3可以为大多数组织工作。回到减少复杂性的想法上,我发现这个解决方案可以与此相反。虽然在这个集线器VNet中创建一组子网似乎很容易,但是根据下游的设计决策,真实的世界可能会很困难。

的影响是增加在RouteTables或用户定义的路由(UDR)的复杂性和集中式安全内增加安全控制规则集/路由溶液;天青防火墙或网络虚拟设备(NVA)。因为默认的系统RouteTable规则,允许开箱内互联星空通信的多数民众赞成。这是当你需要重写与定制RouteTables /的UDR复杂的用武之地。

让我们用另一种方法。如果我们认为集线器VNet更像是一个“传递服务”,只有一组集中的核心功能。减少子网和部署服务的数量可以简化安全控制和静态路由。这甚至打开了在Azure中部署更多基础设施的可能性,因为我们将逻辑区域定义为与vnet更一致,而不是vnet中的子网(稍后将详细介绍逻辑区域)。

——交通枢纽

需要注意的是VNets是没有传递是很重要的。如果你有3个VNets(如下面的例子所述),你可以不通过互联星空2. Azure的路线从互联星空1至3互联星空只是不这样的。什么混乱虽然是你可以有一个过渡的枢纽(在某种程度上)4

如果我们在中心部署一个网关,从辐条到网关的流量可以通过集线器通过互联星空对等配置(“使用远程网关”和“允许网关中转”的设置)。这将有效地使中枢传递。现在,采访了辐条的网络连接然后可以,如果Azure的防火墙(或NVA)部署在中心启用。同样,那种使中心传递。乱吗?

——多中心

您也可以配置多个集线器无论是在相同的Azure区域还是在不同的区域。集线器也可以通过多种连接方法连接到其他集线器:

  • 互联星空对等:连接一对集线器的使用互联星空对等相同的区域内的
  • 互联星空全球对等:连接使用互联星空全球对等在不同的区域的一对轮毂的
  • ExpressRoute:与互联星空ExpressRoute网关对ExpressRoute和使用ER两个集线器连接到两个集线器之间路由
  • VPN:使用网络虚拟设备(NVA)连接两个VNets(可能是最有效的方式来实现连接)配置VPN

虚拟WAN

这个服务6(现在GA到2019年底)“提供优化和自动化的分支连接”到Azure。将许多服务组合在一起并将其扩展以获得更高的吞吐量和容量,虚拟WAN将WAN连接性和集线器和轮辐方式提升到了第n个级别。部署的集线器VNet是由Microsoft管理的,因此在可以供应什么方面存在限制。诸如地址空间、子网等的更改之类的小事都是相当锁定的。虽然它是一个不断发展的服务,但“锁定”的性质可能是好也可能是坏,这取决于需求。可以考虑简化任何中心和辐式部署。

逻辑区

如果你来自一个传统的网络背景,你会熟悉区域的概念和定义网段之间的边界。框架,如ISO 27001,NIST,COBIT等与组织建立信息安全控制的帮助。这些可以在网络通过定义逻辑区,标记它们,确定共同的工作负载和限定帧内和帧间的连接中使用。

一些常见的例子是不可信的,半可信或DMZ,可信或控制,限制并固定。无论你的框架对齐或在天青逻辑区的使用,有一些教训,从我的经验教训如下:

  • 逻辑区集装箱 - 在那里为任何给定区域的边界?我们谈论VNets,子网或一些更精细。
    • 我的选择是使用VNets为集装箱降低布线复杂性(RouteTables / UDR中)
    • 使用子网作为容器会导致许多路由被添加到路由表中
    • 这是建议由微软VS我认为最好的做法不同
    • 常见的问题是围绕集线器VNet,在集线器中托管多个区域,并使用子网作为容器
    • 当您引入一个安全控制(例如Azure防火墙或NVA)时,中心内部的复杂性可能会像雪球一样越滚越高,Ops团队可能会因为任何变化而陷入困境
    • 使用VNet作为容器会有一些回退—即VNet间的路由和数据输入以及出口费用,这些都需要与deisgns一起考虑
  • 定义和设计是非常重要的—您不能仅仅抛出几个vnet并给它们起不同的名字,然后期望它们遵守任何框架或标准
    • 在建立参考架构前面,更好的下游工作的更好的努力
  • 设置足够的区域vs创建太多的区域
    • 虽然对准框架是伟大的,因为很多的,虽然周围的定义和执行已经完成,有时框架都需要照顾到N级解决方案
    • 那个过于复杂的框架可能不适用于相关的环境,您最终将不得不设计一个解决方案

辐条

与集线器供应作为互联星空,自然辐条是经由任一互联星空对等或互联星空全球对等连接到轮毂其他VNets。集线器的主要优势和辐射型拓扑是借力互联星空对等。这样做时,你可以同行最多(在2020年3月)500个VNets到集线器互联星空7。因此,规模和增长可以很容易地适应一个中心和辐条解决方案。

辐条回落到执行的几种方法:

  • 每逻辑区:这是一个很好的大容器,vnet更少,vnet更大(按地址空间)
  • 每个业务部门或团队:稍微更精细和手段,以包含由业务单位或团队工作负载设计,建造和维护这些工作负载
  • 每工作负载:尽可能的细化。每个工作负载或应用程序都有自己的VNet,从规模上看,管理起来有点棘手。任何其他实现都只是上述选项的变体。

VNet凝视

互联星空的窥视是什么使一个中心和分支网络拓扑的工作核心(我想我之前在这篇博客中提到过)。它是将两个vnet连接在一起,将地址空间组合在一起,有效地组成一个网络段的一种方法。VNet对等连接跨同一区域的任何VNet,甚至跨订阅,如果在部署时资源限制是一个因素,那么如果我们想要分离工作负载,这是很方便的。

互联星空全球对等互联

进一步扩展VNet对等连接并跨越地理位置:VNet全局对等连接提供了与VNet对等连接相同的功能,但是,您猜对了,它跨越了Azure区域。你甚至可以从地球的一端看到另一端,这是非常惊人的。现在,延迟不会惊人,但流量将通过微软的主干,而不是公共互联网。

通过VNet全局对等连接枢纽VNet可以减少高速公路路由组件的约束。高速公路和集线器VNet ER网关在配置时必须设置为特定的速度SKU。这意味着那些SKU的极限性能。在集线器之间的VNet全局对等可以绕过性能限制,并利用Azure网络结构主干网,后者的标准速度是每秒几GB。

周围使用互联星空全球对等互联的三个重要因素是:

  1. 路由:互联星空全球对等的路由将优先ExpressRoute为两个相连的VNets成为一个地址空间,有效的一个网段。
  2. 交通费:直接连接到VNets ExpressRoute(如果正确的SKU)时,可以有无限的网络流量(入口和出口)。随着全球互联星空对等,入口和出口可能会产生费用。
  3. 使用网关连接vnet:一个给定的VNet只能使用一个网关。任何穿越相反区域网关的尝试都需要穿越Azure防火墙或等效的NVA。

内部互联星空路由

我从安全团队那里得到的普遍感觉是,他们更愿意对每个包进行严格的检查,以确保组织网络中没有发生任何邪恶的事情。恶心过度夸张和包含所有的安全人员,但它是一个重复出现的主题,我也一直是一个白人。

这是和意见分歧更精确地在不同的要求来的。通常一个集中的防火墙部署在集线器,方便逻辑区域之间的路由,还做粗粮安全控件或额外做细粒度的安全控制为好。我的选择是使用原生云tooling-即Azure的防火墙(也NSGs在一定程度上)。那里有优点和缺点是对定制的网络虚拟设备从已建立的安全厂商主机

因此,虽然我喜欢利用中心内的Azure防火墙,但检查每一个我认为是多余的包。再一次,这将会使一些羽毛沙沙作响。因此,VNet内路由通常是我乐意推荐给客户去做的事情。不同的逻辑区域(稍后会详细讨论)可能会规定这种情况不可能发生,但在大多数情况下,这可能是一个重要的考虑因素。

允许或拒绝该帧内互联星空流量,天青RouteTables /可以或可以不被要求的UDR。如果允许内互联星空路由任何子网结构和凝视VNets之间,有建于系统RouteTables,以方便这一点。只有当您可能希望通过集线器和集中的安全控制,这可以阻止操纵这和力量流量。这是通过简单的RouteTable / UDR进入一个给定的地址空间destination-流量发送到Azure的防火墙来完成。简单。好了,没有那么快。

让我们再回到我的身边点逻辑区和集线器内托管多个逻辑区,内互联星空路由可以得到相当复杂,而迅速。我想避免复杂,在可能的情况,所以这可以追溯到围绕在可能在互联星空水平保持逻辑区的建议。

国米互联星空路由

这是通过使用在轮毂内天青防火墙(或者NVA)的可实现的。这就是避免过于复杂的解决方案,最简单的方法。由是,我的意思是说话辐条直接路由也可以通过互联星空对等这两个辐条之间实现。我不喜欢用这个建议,除非是一个定制的场景。再次,它归结为过于复杂的布线和管理RouteTable当avoidable-避免!

大量的RouteTables !

RouteTables或用户定义的路由(UDR)要在中心辐射模型中使用了不少。默认情况下,当对等互联星空在两个VNets(集线器和任何给定的单辐条)这两个VNets之间的地址空间之间配置有一个单独的地址空间下接合。RouteTables需要手动(经由静态路由)直接流量天青防火墙或NVA,以允许/路由/拒绝/集线器之间的块流量辐条和辐条到集线器的网络连接。

此外,vnet是不可传递的,这意味着您不能通过中心本身与辐射C交谈交换流量。需要Azure防火墙或NVA来促进这一功能。

RouteTables和“禁止BGP路由的传播”

在RouteTables的使用进一步扩大;当涉及ExpressRoute或同等学历,RouteTables能够学到的路由传播,例如集线器(当然这里ExpressRoute将被提供)到辐条。如果你是想通过直接天青防火墙或NVA等同于集线器的所有流量这可能是有问题的。那是因为Azure的RouteTables工作由信息流发送到最具体的路线。8因此,启用了BGP传播后,辐条VNet(带有适当的附加对等连接配置)可以绕过Azure防火墙,直接通过集线器中的VNet ER网关路由到本地网络。

使用或注意使用远程网关

这是VNet对等连接中的一个可选配置项,取决于中心是否部署了Azure防火墙(或NVA),或者您只是配置了轮毂是传递。当使用天青防火墙(或者NVA),这是没有必要的,以允许“使用远程网关配置”作为天青防火墙会从轮辐到ExpressRoute或等效服务绑定到集线器互联星空网关代理所述流量。如果启用了使用远程网关功能,Azure的防火墙可以被绕过,交通直接到其可能会破坏可授权任何安全要求的网关。

此外,在一个辐条连接到多个集线器的场景中,您只能为辐条使用一个远程网关9。我敢说,第一个VNet对等网络配置将生效,所以任何额外的对等网络(次要集线器)的辐条只会导致什么都不会发生,默认为第一个对等网络配置。

Azure堡垒

如果你正在使用Azure的堡垒来管理虚拟机资源规划,这是一个有争议的话题,因为我前面说。就Hub和Spoke而言,请注意,目前(截至2020年3月)Azure Bastion只能部署在每个VNet的基础上,没有办法扩展容器之外的远程连接。为了与Hub和Spoke一起使用,您需要在Hub中部署Azure Bastion,并且每个Hub都与VM工作负载一起使用,以实现基于浏览器的安全访问。

NSGs助理秘书长和

我以前说过,我会说,它再次 - NSGs是相当简单的,但有效的和它们是什么,我认为他们是相当不错的。在中心和分支拓扑结构,使用应仅限于单一的方案:只在网络接口(NIC)细粒度的安全控制。在集线器,防火墙天青或等同NVA应当要么同时提供粗和细颗粒的控制,或简称为粗晶的控制。

因此,子网级NSGs真的是没有必要的。因此,唯一的使用情况下,如果对NIC基于分配。虽然警告的话。你已经部署了多个VM实例,更独特NSGs进行管理。然而,这就是能助理秘书长开始发挥作用,通过使用一个命名上下文,而不是NSG规则的IP地址范围内,以减少一些复杂性。它并不是完美的,并不会减少NIC NSGS的数量,但可以用行动帮助。

地址空间

如果您仅使用RFC1918私有保留范围(10.0.0.0 /8、172.16.0.0 /12和192.168.0.0 /16),则在部署网络时总共有17,891,328个可用的私有IP或组织。如果你把它分成/16个范围(65536个IP块),那就只有273 /16个可用的子网。在大型组织中,网络非常平坦,大多数情况下10.0.0.0 /8的范围被广泛使用,在云计算中获得一个大型的统一块(如a /16)可能是一个挑战。

我想说的关于地址空间的主要观点是保持使用的一致性来简化路由(通过RouteTables/ udr, Azure防火墙规则和NSG规则)。不错的一致范围分配到轮毂和辐条意味着你可以总结子网和制定更多粗粒规则。

-地址空间有问题

我曾与一些客户合作过,他们不想通过将更大的子网预先分配到vnet(辐条)来“浪费地址空间”。首选项是将较小的网络范围分配给vnet,并根据需要使用地址空间。我的偏好是不用担心地址空间,也不用微管理它。这在隔离的VNet场景或连接到VPN或ExpressRoute电路的VNet中工作。

在处理VNet对等或VNet全局对等时,VNet地址空间的增量添加变得非常困难。VNet对等网和VNet全局对等网(截至2020年3月)在扩展VNet地址空间后,不提供对窥视配置的动态更新。换句话说,如果您有两个正在窥视的VNet,而一个VNet需要扩展地址空间,则需要删除对等的地址空间,扩展地址空间,然后重新建立对等的地址空间。在集线器和辐条场景中,这可能会变得复杂,特别是在生产环境中。

SLA和可用性

- Azure防火墙vs NVAs

在Azure的每一个安全解决方案中,无论是部署了几个集群化的NVAs,还是Azure防火墙背后的架构,基本上都使用了一个“负载均衡器三明治”10。大多数不是真正的高可用性和是无状态的。Azure的防火墙(这是不被方式插头)的高可用性和状态。选择是更大概是多少可用性和SLA做你想要的。你可以用99.95%的标准去选择11使用单一的Azure可用性区域,或者利用两个或更多的可用性区域(最多三个),获得99.99%的SLA——哇哦!

这并不是说NVAs不够好,或者没有那么好的SLA。您可以获得99.95%的SLA,但是每个供应商的状态都不同,而且并不是所有的供应商都工作得很好。

- ExpressRoute领结

在设计解决方案时会考虑一个中心和分支拓扑结构也将考虑风险大多数企业是在设计决策的重要因素。降低风险可以通过Azure的资源,在多个地区部署来实现。在澳大利亚,我们的两个主要区域是澳洲东部(悉尼)和澳大利亚东南(墨尔本)。那么大多数企业将部署在这两个地区的工作负载(在中心和分支拓扑)。

当我们把ExpressRoute考虑在这两个区域设置之后,故障转移和冗余策略来再次降低风险。一个ExpressRoute“蝴蝶结”12设计可以用于路由区之间应在当地ExpressRoute电路下线。然后集线器互联星空连接到两个ExpressRoute电路和加权被用于强制本地ER电路用于在其伙伴的区域,除非本地处于脱机状态。这可以通过以下图来表示:

此外,还需要考虑的是,在某些情况下,高速公路的高级升级是为了方便“领结”设计,即连接一个VNet到另一个Azure区域的高速公路。虽然在澳大利亚,澳大利亚东部和东南部地区是在同一个“地缘政治”区域,这意味着ER溢价是不需要跨地区VNet到ER连接-哇哦!

- 集线器互联星空门户

被部署到互联星空每个虚拟网络网关包括了在主动/被动状态置备开箱两个实例13。有一个可用的选项,也它们配置为主动/主动为好。微软这样做是为了允许计划内和计划外服务中断。

与主动/被动式实施,计划内或计划外的任何变化都会导致停电这是需要注意的重要。这一时间段可以少为10秒(那一点?)进行计划停电或1-2min用于计划外的中断(Whaaaaatttt ?????)。

在另一方面,有主动/主动。根据客户端配置(是否有一个单一的设备或两个设备)你可以用一个“蝴蝶结”或全网状配置结束。这是最健壮和在连接到一个网关的故障的情况下,有一个自动过程来转移通信到替代装置。仍然有中断,但它非常小,在几毫秒内而不是秒范围(所以我一直在说)。

那么a真实世界中心辐射型设计是什么样子?

有了以上所有的考虑,我已经把下面的图作为一个整体的解决方案放在一起了。虽然它是相当高的水平,它是尽可能全面的掩盖了一堆关键因素,可以进入一个枢纽和辐条设计在一个单一的形象。

对于大多数的设计,一个中心和分支部署更好地利用连接到本地网络(ExpressRoute或VPN),并整合资源,避免重复。在这个例子中,ExpressRoute的中心舞台,以最大限度地连接到澳大利亚各地的东亚和东南亚地区的各种辐条VNets。互联星空全球的窥视是用于连接生产中心,绕过ExpressRoute澳大利亚东部和东南部地区被认为是在同一个地缘政治区域,这意味着没有高级版升级需要利用该功能。天青防火墙用作中央装置,以允许/拒绝网络段之间的流量,但升压用在深度的方式与加上应用安全组(ASG)网络安全组(NSG)安全防御施加到虚拟机实例网络接口(NIC)。一切是相当标准的东西。

点击放大!这是一个集线器和辐条网络拓扑结构的高级概览示例

此图的key:

摘要

As you can see, something as ‘simple’ as a Hub and Spoke network topology in the cloud, in this case Azure, has many considerations, dependencies and constraints that makes defining the core requirements really important as those can pivot the design in a number of different directions.

这是一个相当长的帖子和棘手的轮廓在一个从上到下的统一的方式。有太多重叠的细微差别,目标总是随着新服务和新功能的出现而移动,这使得大多数博客和文档在一年内或更早的时间内就被淘汰。我希望我已经做了足够的工作来概括任何设计的要点。享受吧!


最初张贴在Lucian.Blog。在Twitter上关注卢西恩:@LucianFrango

类别:
建筑Azure的基础设施
标签: